at[h]ome

nous sommes tous différents, c'est notre point commun...

mise à jour et lf (list file) file manager

mise à jour et lf (list file) file manager

salutations :)
la sortie de nakeDeb-1.5.6 est prévue pour le dernier week-end de juin avec pas mal de mises à jour au programme. si vous faites vos updates de façon régulière, vous devriez déjà être sur nakedeb-1.5.6 ;)
cette grosse mise à jour s’accompagne du changement de gestionnaire de fichiers en console par défaut, passant de ranger à lf. à cette occasion, je vous propose un petit tutoriel à propos de lf et sa configuration.

sur nakeDeb, la configuration par défaut de lf est située dans /etc/skel/.config/lf. pour profiter de la configuration nakeDeb, lancez la mise à jour puis copiez les fichiers et scripts dédiés dans votre dossier personnel :

mkdir -p ~/.config/lf && cp /etc/skel/.config/lf/* ~/.config/lf/

prise en main

lf est un navigateur en console, il se lance donc depuis un terminal. son interface est similaire à celle de ranger, avec une vue en panneaux et une prévisualisation des fichiers. il est hautement configurable via son fichier de configuration et/ou l’appel à des scripts externes.

lf cli file manager

lors du lancement, lf se place dans le dossier courant (généralement le $HOME) et liste les dossiers et fichiers présents. le panneau de droite affiche l’arborescence du dossier visé ou un aperçu du fichier sélectionné.
lf ne gère pas les onglets comme ranger mais il fonctionne sur le mode client/serveur, ce qui vous permet de copier un fichier sur une instance et de le coller dans une autre. la gestion des onglets est laissée aux gestionnaires de fenêtres.
rappel : sur fluxbox, les onglets sont activés avec un Ctrl+clic-gauche sur la barre de titre. sur i3 ou sway, les onglets sont activés par défaut ou grâce au raccourci Alt+t.

raccourcis et commandes lf sur nakeDeb

tous les raccourcis et commandes peuvent être modifiés depuis le fichier de configuration ~/.config/lf/lfrc (section suivante).
notez que lf utilise l’auto-completion : lorsque vous pressez une touche pouvant former un raccourci ou lorsque vous commencez une commande, les possibilités s’affichent directement dans la fenêtre lf (avec Tab pour une commande), vous permettant de compléter votre commande ou d’abandonner avec Esc.
voici les principales commandes et les raccourcis courants pour profiter pleinement de votre gestionnaire de fichiers en console.

les différents modes de lf

lf, comme ranger ou vim, accepte différents modes ($f désigne un fichier, $fx désigne la sélection) :

configuration

pour lancer lf “à vide” sans prendre en compte votre configuration, lancez lf avec l’option de configuration vide ainsi : lf -config ""

le fichier lfrc permet de définir les options par défaut de lf(avec set), les raccourcis clavier (avec map) et les commandes disponibles (avec cmd). ce fichier est entièrement commenté sur nakeDeb mais voici quelques exemples :

définition des options :

# définir le shell par défaut
set shell sh
# affiche la taille des fichiers et le nombre d'éléments par dossier
set info size
set dircounts
# active l'aperçu des fichiers
set preview

définition des raccourcis :

# activer ou désaciver les aperçus
map zv set preview!
# afficher/masquer les fichiers et dossiers cachés
map <backspace> set hidden!
# éditer le fichier sélectionné avec l'éditeur par défaut
map e $$EDITOR $f

définition de commandes :

# extraire une archive selon son extension dans le dossier courant
cmd extract ${{
    set -f
    case $f in
        *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
        *.tar.gz|*.tgz) tar xzvf $f;;
        *.tar.xz|*.txz) tar xJvf $f;;
        *.zip) unzip $f;;
        *.rar) unrar x $f;;
        *.7z) 7z x $f;;
        *) dtrx $f;;
    esac
}}
# afficher toutes les images du dossier courant avec nsxiv-rifle
cmd view-all-pics &~/.config/lf/nsxiv-rifle $PWD
# assigner le raccourci "V" à la commande "view-all-pics"
map V view-all-pics

comme vous le constatez, la dernière commande view-all-pics fait appel à un script externe, ici nsxiv-rifle (intégré par défaut sur nakeDeb). plus de détails dans la section suivante.

cas particulier : la commande :open
lf peut ouvrir vos fichiers avec l’application par défaut du système grâce à xdg-open avec la touche o mais vous pouvez définir un autre comportement dans le lfrc. sur nakeDeb, voici les applications dédiées pour ouvrir vos fichiers avec la commande :open, la lettre l ou la flèche de droite. $OPENER désigne le lanceur par défaut du système (xdg-open sur nakeDeb) :

# define a custom 'open' command - filter by mimetype
cmd open &{{
    case $(file --mime-type -Lb $f) in
        text/*) lf -remote "send $id \$$EDITOR \$fx";;
        image/x-xcf) lf -remote "send $id \$gimp \$fx &";;
        image/*) lf -remote "send $id \$nsxiv -p \$fx &";;
        audio/*|video/*) lf -remote "send $id \$mpv --no-terminal \$fx &";;
        *) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;;
    esac
}}

les couleurs dans lf

les couleurs des dossiers et fichiers peuvent être modifiés depuis le fichier ~./config/lf/colors. ce fichier est du type dircolors et vous permettra de définir la couleur d’affichage des dossiers ou fichiers selon leur extension ou leur nom. les couleurs peuvent être au format classique 01;34 (blue gras) ou 256-colors 38;5;136;1 (orange gras).
pour revenir aux couleurs par défaut, renommez ou supprimez le fichier colors. plus d’infos à propos des escape codes sur wikipédia ou sur stackoverflow.

vous pouvez configurer finement vos couleurs par nom sous la forme <adresse du dossier/fichier> <séquence couleur>. ainsi, pour afficher votre dossier “Documents” en rouge et votre dossier “Images” en jaune gras:

~/Documents    00;31
~/Images       01;33

les icônes dans lf

lf peut afficher des icônes sous forme de glyphes grâce à une police appropriée. la documentation officielle préconise “NerdFont” mais toute autre police munie de glyphes peut convenir, il suffit de la déclarer. sur nakeDeb, les polices “InconsolataNerdFontMono-Regular/Bold” (pour rxvt-unicode) et “forkawesome” sont intégrées par défaut.
notez que les résultats sont différents selon le support du terminal. ainsi, rxvt-unicode déclare sa police dans le ~/.Xresources pour afficher les glyphes :

URxvt.font: xft:Hack:regular:pixelsize=11,xft:InconsolataNerdFontMono-Regular:pixelsize=11
URxvt.boldfont: xft:Hack:bold:pixelsize=11,xft:InconsolataNerdFontMono-Bold:pixelsize=11

foot sur la session sway déclare la police forkawesome dans ~/.config/foot/foot.ini sous la forme :

font=Hack:size=7,forkawesome:size=7

la configuration des icônes pour lf passe par l’édition du fichier ~/.config/lf/icons et permet ce genre de rendu (ici, lf dans foot sur sway) :

afficher des icônes dans lf

comme pour les couleurs, vous pouvez configurer finement les icônes par nom sous la forme <adresse du dossier/fichier> <glyphe>

appels à des scripts externes

comme vous l’avez vu dans la configuration, lf utilise des scripts pour ouvrir ou visualiser les fichiers. sur nakeDeb, 3 scripts sont utilisés : nsxiv-riffle, pv.sh et scope.sh.
nsxiv-riffle permet de sélectionner toutes les images du dossier courant selon leur extension et les envoie vers nsxiv.
pv.sh et scope.sh sont les deux scripts disponibles pour les aperçus. le premier est un script sh qui définit l’aperçu selon l’extension tandis que le second, hérité de ranger, propose un filtrage plus complet selon l’extension ou le type mime.
vous pouvez configurer le type d’aperçu désiré dans la section “preview” du lfrc:

# preview #####################################################################
# active les aperçus
set preview
# désactive les aperçus
#set preview!
# définir un "previewer" vide pour n'afficher que les fichiers texte
#set previewer
# utiliser le "previewer" sh classique
set previewer ~/.config/lf/pv.sh
# utiliser le "previewer" complet hérité de ranger
#set previewer ~/.config/lf/scope.sh
# active/désactive les aperçus
map zv set preview!
# utiliser le "previewer" pour afficher les fichiers
map i $~/.config/lf/pv.sh $f | less -R

pour accélérer encore lf, vous pouvez désactiver les aperçus par défaut et les activer au besoin avec le raccourcis zv.
vous pouvez utiliser d’autres scripts dans d’autres langages afin de compléter les fonctions de lf.

retour perso…

j’ai découvert lf grâce aux commentaires de zbig qui trouvait (à raison) ranger trop lent sur les petites configurations. après à peine une semaine de tests, je l’ai adopté au quotidien et intégré à nakeDeb. ce gestionnaire est encore en développement actif mais il est largement utilisable et réellement plus rapide et moins gourmand que ranger.
la seule chose qui me manque est la prise en compte des dépôts git même si un script existe pour afficher quelques infos, elles ne sont pas aussi détaillées que sur ranger.

je reste néanmoins persuadé que vous l’adopterez sans soucis en quelques heures :)

ressources & liens (en anglais)

++

arp

commenter