Table des matières
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 rajouterleave_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).