#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.
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.
salut,
xdg-open /tmp/man.pdf 2>/dev/null || quelquechose /tmp/man.pdf
où "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.
En 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..!?
«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.
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