[Outils] Broot, vos fichiers vont revivre dans votre terminal

Tags: Services Open Source


Bonjour à tous,

Aujourd’hui, nous allons parler d’un outil encore activement en développement. Il s’agit de broot, un “nouveau moyen de voir et d’explorer vos dossiers” comme il est décrit sous Github.

Présentation

Broot est un outil open source écrit en Rust. C’est un outil simple en apparence mais déjà très riche en fonctionnalités et beaucoup d’autres sont encore en chemin comme le témoigne ces deux très récentes issues #140 et #156. Je ne vais pas m’étendre vraiment sur le sujet, le README du projet le fait très bien. Pour finir, son code source est disponible ici (miroir ici).

Installation et mises à jour

Installation classique

Je ne vais pas refaire la documentation que je trouve efficace. Je vous renvoie donc ici pour installer le logiciel.

La première fois que vous lancerez la commande broot, il vous configurera un fichier ~/.config/broot/launcher/bash qu’il sourcera dans votre .bashrc. Les fois d’après, vous pourrez le lancer avec la commande br et il vous créera un fichier de configuration:

$ br
New Configuration file written in "/home/pofilo/.config/broot/conf.toml".
You should have a look at it.

Installation personnalisée

Une personne a demandé dimanche dernier comment installer broot sur un Raspberry Pi (target ARM donc). Le binaire est déjà (et en moins de 2 jours) disponible dans la documentation, alors qu’il était tout à fait possible de l’installer en le recompilant.

J’avais également besoin d’un binaire 32 bits pour une machine au travail (CentOS 6 32 bits, ça fait mal), voici la procédure que j’ai suivie (sur une machine plus récente évidemment):

# install rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# clone broot
git clone https://github.com/Canop/broot
cd broot/
# checkout on last tag
git checkout v0.11.8
# init target for i686
rustup target add  i686-unknown-linux-musl
# create target
cargo build --target i686-unknown-linux-musl
# and the binary is under target/i686-unknown-linux-musl/debug/

Au niveau compatibilité, je ne connais pas vraiment le Rust mais ça a l’air vraiment simple. Les binaires ne sont pas difficiles à générer avec Cargo et ça fonctionne directement.

Mises à jour

Le développement du projet étant relativement actif, les nouvelles versions sortent rapidement les unes après les autres. J’ai choisi parti pris de la simplicité (tout est relatif vous allez voir). Je fais donc confiance au binaire généré et disponible dans les releases sous Github et je mets à jour mon binaire via ce script (upgradeBroot.sh):

#!/bin/bash
# TODO: check returns codes

if [ -z "$1" ]; then
    echo "Usage: $0 <version>"
    echo "ex: $0 0.11.9"
    exit 1
fi

VERSION=$1
WORKING_DIR="/usr/local/bin"
LINK="https://github.com/Canop/broot/releases/download/v${VERSION}/release.zip"

actualDir=$(pwd)

echo "--> Entering ${WORKING_PATH}"
pushd ${WORKING_DIR}
echo "--> Removing broot symbolic link"
rm -fr broot
echo "--> Downloading ${LINK}"
wget ${LINK}
unzip release.zip -d /tmp
chmod +x broot
echo "--> Renaming broot to broot.${VERSION}"
mv /tmp/build/x86_64-linux/broot broot.${VERSION}
echo "--> Linking go version"
ln -s broot.${VERSION} broot
rm release.zip
rm -fr /tmp/build
echo "--> The new broot version is: "
broot -V
popd

C’est du bash, c’est moche (un joli pléonasme au passage), mais ça marche à l’heure actuelle. Je vous laisse l’adapter selon vos besoins. Pour l’appeler, vous lancez simplement le script en donnant le numéro de version en paramètre.

Pour être au courant des dernières releases, je suis abonné au flux RSS. Je pourrai le mettre à jour automatiquement, mais je préfère voir les releases passer avec leurs lots de nouvelles fonctionnalités et bugfixs.

Petis tips

Voici une liste de petits tips, mais rien ne vaut de se pencher sérieusement sur la documentation officielle.

  • Si votre terminal le permet, vous pouvez utiliser la souris.
  • Vous pouvez le lancer avec br, mais vous pouvez aussi donner en paramètre le dossier dans lequel vous voulez le lancer: br ~/folder.
  • Pour utiliser broot pour vous rendre dans un dossier voulu, trouvez-le depuis l’interface de broot puis utilisez Alt-Entrée, ou alors, utilisez la fonction dcd() décrite ici.
  • Si vous tapez quelques caractères, vous allez filtrer les dossiers et fichiers sur ces caractères (touche esc pour nettoyer la recherche).
  • Configuration de l’éditeur dans votre fichier .bashrc (je sais, j’ai un petit bug visuel quand j’affiche du code au milieu de puces ;)):
export EDITOR=vim
export VISUAL=vim
export PAGER=less
  • Si vous voulez binder la touche Entrée avec vim, dans le fichier ~/.config/broot/conf.toml:
[[verbs]]
invocation = "edit"
key = "enter"
execution = "$EDITOR {file}"
  • Les verbes :toggle_sizes (:s), :toggle_hidden (:h) et :toggle_dates (:d) sont très pratiques pour afficher les tailles, les fichiers cachés ainsi que les dates.

  • Une fonction non présente par défaut (et très pratique avec vim), est open_stay quand on utilise la touche Entrée pour éditer un fichier, pour y pallier, il faut rajouter leave_broot = false dans le verbe en question dans le fichier de configuration (le défaut est que la souris est toujours préemptée par broot qui continue à tourner derrière lorsque vous utilisez vim par exemple …).

  • Je vous laisse ici une copie de ma configuration, c’est très sommaire mais bien sympathique :)

Conclusion

Bref, un bel outil, pas encore parfait (notamment vim pas vraiment compatible à l’heure actuelle par exemple), mais encore en développement et tout le monde peut y participer :)

Je vous laisse enfin naviguer dans la documentation officielle (via l’onglet Documentation dans la barre de titres).

Commentaires




Ailleurs sur le Web


How to write the output into the file in Linux - nixCraft

Les redirections de fichiers. Un bon tableau dans l'article, voici un petit résumé des 2 plus utiles (déclinés en nouveau fichier / append) à mes yeux. command > output.txt 2>&1: {POSIX} Puts both standard error and output to file named output…

via Shaarli le 01 septembre 2020

Duplicates

Excellent :) via sebsauvage.net

via Shaarli le 05 août 2020

J’ai testé pour vous : se faire usurper son identité - LinuxFr.org

Témoignage très intéressant, merci pour le partage.

via Shaarli le 28 juillet 2020

Généré avec openring


Recettes de gourmands


Pizza poulet curry

Une pizza plus estivale, mais qui sait rester gourmande !

via cooking.pofilo.fr le 31 mai 2020

Fajitas

A manger avec les mains, évidemment !

via cooking.pofilo.fr le 24 mai 2020

Pad Thai

Une recette longue mais qui reste relativement simple qui devrait ravir tous les gourmands !

via cooking.pofilo.fr le 17 mai 2020

Généré avec openring