Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/12/2018, à 20:03

lynn

[RÉSOLU] Définir une fonction suivant l'environnement utilisé.

Bonjour,

J'ai trouvé ici quelques petits trucs sympas pour pouvoir visualiser une page de man dans un fichier pdf.

Ça fonctionne très bien avec cette fonction que j'ai intégré dans mon fichier ~/.bash_functions.

bash_functions a écrit :

man () {
    zcat $(env man -w $1) | \
    groff -man -t -e -k -D utf8 -T pdf > /tmp/man.pdf && \
    xdg-open /tmp/man.pdf 2>/dev/null;
}

L'inconvénient est que ça ne fonctionne plus qu'on passe dans un tty...

Y a-t-il un moyen de définir dans cette fonction le type d'affichage à privilégier suivant le type de session utilisée ?

Merci.

Dernière modification par lynn (Le 26/12/2018, à 15:37)


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#2 Le 25/12/2018, à 21:17

Nuliel

Re : [RÉSOLU] Définir une fonction suivant l'environnement utilisé.

Il me semble que le fichier .profile sert à paramétrer les tty (l'équivalent du bashrc pour les consoles graphiques). Il faudrait peut être voir de ce côté

Hors ligne

#3 Le 25/12/2018, à 21:42

Watael

Re : [RÉSOLU] Définir une fonction suivant l'environnement utilisé.

EDIT:
ATTENTION, si vous n'êtes pas sur un environnement que gère correctement xdg-open, cette fonction tente d'ouvrir en boucle une page web. sad

salut,

xdg-open /tmp/man.pdf 2>/dev/null || quelquechose /tmp/man.pdf

"quelquechose" est le programme que tu utilises sur TTY pour visualiser les pdf : ghostscript, pdftotext, fbi...

ou tout simplement utiliser man (note que nommer une fonction, ou un programme, du même nom qu'un autre programme est une mauvaise pratique) :

man () {
    if [[ $(tty) =~ ^/dev/pts/[0-9]+$ ]]
    then
        zcat "$(man -w "$1")" \
            | groff -man -t -e -k -D utf8 -T pdf > "/tmp/$1.pdf" \
                && xdg-open "/tmp/$1.pdf"
    else
        command man "$1"
    fi
}

Dernière modification par Watael (Le 25/12/2018, à 22:17)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 26/12/2018, à 07:36

lynn

Re : [RÉSOLU] Définir une fonction suivant l'environnement utilisé.

Merci Watael.

Effectivement, la commande ouvre des instances de evince en boucle et ce même en mettant evince à la place de xdg-open..!? sad


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#5 Le 26/12/2018, à 15:36

lynn

Re : [RÉSOLU] Définir une fonction suivant l'environnement utilisé.

En rajoutant & à la fin de

xdg-open "/tmp/$1.pdf"&

ça fonctionne.

A cette même ligne, j'ai ajouté 2>/dev/null car le lecteur pdf me renvoie une erreur qui remonte dans le terminal.

Ce qui fonctionne chez moi:

man () {
    if [[ $(tty) =~ ^/dev/pts/[0-9]+$ ]]
    then
        zcat "$(env man -w "$1")" | groff -man -t -e -k -D utf8 -T pdf > "/tmp/$1.pdf" \
                && xdg-open 2>/dev/null "/tmp/$1.pdf"&
    else
        command man "$1"
    fi
}

Merci encore Watael.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#6 Le 26/12/2018, à 15:56

lynn

Re : [RÉSOLU] Définir une fonction suivant l'environnement utilisé.

J'ajoute une modification pour avoir de la couleur dans les pages de man quand on est dans un tty. smile

man () {
    if [[ $(tty) =~ ^/dev/pts/[0-9]+$ ]]
    then
        zcat "$(env man -w "$1")" | groff -man -t -e -k -D utf8 -T pdf > "/tmp/$1.pdf" \
                && xdg-open 2>/dev/null "/tmp/$1.pdf"&
    else
	env					  \
  	LESS_TERMCAP_mb=$(printf "\e[1;31m")      \
  	LESS_TERMCAP_md=$(printf "\e[1;38;5;74m") \
  	LESS_TERMCAP_me=$(printf "\e[0m")         \
  	LESS_TERMCAP_se=$(printf "\e[0m")         \
  	LESS_TERMCAP_so=$(printf "\e[1;44;33m")   \
  	LESS_TERMCAP_ue=$(printf "\e[0m")         \
  	LESS_TERMCAP_us=$(printf "\e[1;32m")      \
  	/usr/bin/man "$1"
    fi
}

«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne