❌

Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Cliamp - Votre musique + 58 000 radios dans le terminal

cliamp est un lecteur de musique qui va plaire aux plus barbus d'entre vous puisqu'il tourne dans votre terminal, avec le visualiseur de spectre et l'égaliseur qui vont bien. On est un peu dans le même esprit roots que Winamp sauf que lui, c'est d'aller chercher vos morceaux de musique à peu près partout où ils sont rangés.

Et quand je dis partout, c'est vraiment partout. Les fichiers qui traînent sur votre disque, les flux, les podcasts, YouTube, YouTube Music, SoundCloud, et vos propres serveurs si vous en avez montés à la maison : Navidrome , Lyrion, Plex, Jellyfin, Audiobookshelf. Vous tapez cliamp setup et un assistant vous guidera fournisseur par fournisseur.

Mais le truc que j'ai trouvé le plus sympa, c'est la partie radio. Vous appuyez sur R dans le lecteur, et vous tombez sur l'annuaire Radio Browser , qui contient environ 58 000 stations réparties sur 241 pays. Vous filtrez par pays, par genre, par tag, vous épinglez vos favorites, et un pays entier se charge comme une playlist.

L'annuaire Radio Browser vu depuis cliamp, avec le débit et le pays de chaque station

Chez moi, je lui ai balancé le flux de FIP en ligne de commande, et hop, les barres du spectre se sont mises à danser affichant le titre en cours,, le débit réseau, la playlist à gauche, et les réglages à droite. Égaliseur paramétrique, shuffle, repeat, vitesse de lecture... Il y a tout ce qu'il faut. Le raccourci Ctrl+K vous affichera même tous les raccourcis d'un coup.

Le flux de FIP en lecture, avec le spectre à gauche, la playlist et les réglages d'égaliseur

Pour les podcasts, pas de compte ni de clé API à sortir (ça nous change). Vous faites cliamp --provider podcast et hop, ça ouvre le top 100 d'Apple et ses 19 catégories. Ensuite, vous faites vos recherches avec la touche "/" et vous vous abonnez avec "f".

Sur Mac, l'installation se fait en une commande (Linux et Windows ont leurs binaires tout prêts dans les Releases) :

brew install bjarneo/cliamp/cliamp

Là où ça coince, par contre, c'est Spotify car si vous voulez le brancher, il vous faudra un compte premium. Donc si vous espériez recycler votre compte gratuit dans un joli terminal, c'est mort...

Mais pour le reste, c'est totalement gratuit et sous licence MIT. Breeeef, c'est trop cool ! Mais si l'idée d'un lecteur multi-sources vous plaît mais que le terminal vous sort par les yeux, il y a toujours Nuclear, dont je vous ai déjà parlé qui est très sympa également !

Source : cliamp sur GitHub

Fuse-archive - Vos ZIP montés en dossiers ordinaires

Pour votre système d'exploitation, une archive c'est juste un fichier. Un seul gros fichier bien opaque qu'il faut ouvrir avec un outil dédié, ou décompresser quelque part avant de pouvoir travailler dedans.

C'est pour cela que je vous présente aujourd'hui l'outil fuse-archive qui prend le problème à l'envers en présentant ce fichier comme un dossier ordinaire, en lecture seule, que vous pouvez parcourir avec ls, cat, grep, votre éditeur ou votre visionneuse d'images.

En gros, vous lui donnez l'archive, un nom de dossier, et c'est tout. Ensuite, il le monte comme une partition normale :

fuse-archive foobar.tar.gz mnt
tree mnt
umount mnt

La liste des formats supportés, c'est celle de libarchive, donc elle est assez longue : ZIP, 7z, RAR, TAR compressés de toutes les façons, ISO, paquets DEB et RPM, archives WARC du web.

Vos DOCX, vos EPUB et vos APK étant des ZIP sous un autre nom, ils se monteront pareil, et quand l'extension ne sera pas reconnue, l'outil ira lire les premiers octets pour trancher tout seul.

Et puis vous n'êtes pas obligé de vous arrêter à une archive. Si vous lui en passez trois d'un coup, il les fusionne en une seule arborescence sous le même point de montage, comme si leur contenu avait toujours été rassemblé. Avec le paramètre -o nomerge, il donnera aussi à chaque archive son propre sous-dossier, et quand deux fichiers portent le même nom, il numérote le second en file (1).txt.

Là où je trouve ça trop cool, c'est sur les archives chiffrées. En effet, un ZIP protégé par mot de passe se montera sans souci, AES-256 compris. L'outil vous demandera simplement son mot de passe. Ça permet donc de consulter un document confidentiel sans en laisser de copie déchiffrée derrière vous.

Deux limites quand même sur le chiffrement... Le format chiffré des 7z et des RAR n'est pas géré, et un fichier à double couche comme un tar.gz.gpg réclamera le paramètre -o maxfilters=2, puisque l'outil n'en traite qu'une seule par défaut.

Maintenant, cette lecture sans copie en clair nécessite que fuse-archive décompresse l'archive entière dans un fichier temporaire anonyme, posé dans votre TMPDIR ou, à défaut, dans votre /tmp. Ça peut donc prendre beaucoup de place sur le disque, et votre document confidentiel s'y retrouvera en clair jusqu'au démontage, où le fichier sera supprimé. Toutefois, avec le paramètre -o lazycache, il ne décompressera que ce que vous ouvrez vraiment, et le temporaire grossira alors au fil de vos lectures de fichiers au lieu de tout remplir d'avance. Et avec le paramètre -o nocache, il ne gardera rien sur le disque (au prix de relectures plus lentes).

Notez que ce mode lazycache ne vous fera gagner du temps et de l'espace disque que sur les formats à accès direct, du genre ZIP, 7z ou RAR. Un tar.gz, comme une archive chiffrée, sera parcouru en entier de toute façon, rien que pour lister ses fichiers.

Maintenant pour du vrai accès direct sur ces formats, je vous invite plutôt à jeter un oeil à ratarmount qui relève la position de tous les fichiers du TAR pour sauter droit à celui que vous demandez (et lui s'installe d'un simple pip install).

Ah et j'ai failli oublier, le dépôt s'appelle mount-archive, mais la commande, elle, s'appelle toujours fuse-archive.

Wayland-Wheeltani - L'autoscroll qui survit au débranchement

Lucas, lecteur de Korben.info, m'a écrit pour me montrer Wayland-Wheeltani , son outil qui ramène l'autoscroll au clic molette sous Wayland, et qu'il met à jour depuis ce printemps. C'est un peu dans l'air du temps de ce genre d'outils puisque fin juillet, je vous parlais déjà de midscroll , qui règle le même manque sous Linux. Wayland-Wheeltani vise le même geste, mais avec une idée nouvelle que l'autre n'a pas.

Le geste, donc... Vous le connaissez, on maintient le bouton du milieu, on éloigne la souris du point d'appui, et la page défile dans cette direction. Plus on s'éloigne, plus ça accélère et si on relâche, ça s'arrête net. Et si on repasse de l'autre côté du point de départ, hé bien le défilement s'inverse sur cet axe.

Toutefois, un mouvement minuscule ne déclenche rien, ce qui fait que sous le seuil, le clic molette reste un clic molette, collage de la sélection compris. Et comme le programme déchiffre les mouvements de la souris au niveau du noyau pour réémettre un genre de molette virtuelle, les applications au-dessus n'en savent rien. Pour elles, c'est juste une molette de souris ordinaire.

L'écart sur la méthode de fonctionnement avec Midscroll, c'est que Wayland-Wheeltani ne se lie pas à votre souris par son fichier dans /dev/input, dont le numéro bouge à chaque branchement, mais bien par son identifiant USB constructeur et produit. Le réglage survit ainsi aux redémarrages et aux changements de port, et le service la retrouve seul quand vous la rebranchez. C'est super si par exemple vous utilisez à certains moments un dock externe.

Le filtre par application, lui, existe des deux côtés, mais ne fonctionne pas dans le même sens. Midscroll démarre avec FreeCAD, OrcaSlicer et Minecraft déjà blacklistés alors qu'avec Wayland-Wheeltani, rien n'est filtré au départ, et vous pouvez exclure des applications ou n'en autoriser que quelques-unes grâce à une commande donnant l'identifiant précis de la fenêtre active. Hyprland, Sway et i3 sont ainsi supportés en direct, GNOME avec une extension fournie, KDE avec kdotool. Et l'autoscroll, lui, marche sur toute session Wayland.

Pour le reste, il faut une session Wayland, systemd en mode utilisateur et l'accès à /dev/uinput. L'installation dépose une règle udev visant votre souris, ce qui évite de faire tourner le service en root au quotidien.

Après la limite, vous la connaissez puisqu'elle est dans le nom : Wayland-Wheeltani ne couvre que Wayland, là où midscroll gère aussi X11. Donc si votre session est encore en X11, vous n'aurez pas le choix. Par contre, si elle est en Wayland et que vous passez votre temps à débrancher / rebrancher votre souris et qu'elle change de port sans cesse, c'est celui-ci qu'il vous faut.

Déjà - Il devine ce que vous allez taper dans le terminal

L'humain est paresseux par nature, mais alors je ne vous raconte pas quand il s'agit de taper des lignes de commande... Mais bon, l'IA est arrivée dans nos vies et maintenant nous ne sommes plus que des gros sacs de viande et de graisse dont le cerveau se ramollit jour après jour. Donc, foutu pour foutu, autant y aller à fond et c'est pour cela qu'aujourd'hui, je vais vous parler de l'application Deja.

Deja est un outil de remplacement intelligent pour un autre outil dont je vous ai déjà parlé qui s'appelle ZSH Auto Suggestions qui va carrément deviner votre prochaine commande ZSH. C'est un truc qui fait donc de la prédiction de commande. Pour l'installer, vous pouvez passer par homebrew ou curl et hop, comme par magie, ce sera intégré directement à votre fichier .zshrc. Ensuite, vous rechargez votre terminal et c'est parti.

Deja remplace zsh-autosuggestions, le plugin de complétion dont dépend aussi zsh-copilot , donc il ne faut surtout pas garder les deux dans votre plugins=(). En effet, les deux réécrivent les mêmes widgets ZLE, et heureusement, quand deja détecte que l'autre est chargé, il affiche une ligne d'avertissement et se met en retrait plutôt que de coincer votre éditeur de ligne. Si vous gérez votre zsh avec Oh My Zsh ou zinit, il existe aussi une intégration dédiée pour chacun, et dans ce cas il faut enlever la ligne eval que l'installeur a ajoutée au .zshrc, sinon l'intégration est chargée deux fois.

Autre chose à savoir tout de suite, sinon vous allez chercher un moment : la suggestion s'accepte avec la flèche droite, pas avec Entrée (ça c'est pour envoyer la commande). Ensuite, Ctrl et flèche droite n'acceptent que le mot suivant, Tab ouvre la liste des alternatives classées sans quitter la ligne, et Ctrl+X coupe les suggestions pour toute la session.

Ça se base sur tout un tas de paramètres que je ne vais pas tous vous lister, mais en gros Deja est au courant du répertoire où vous êtes. Ensuite, si vous tapez des commandes mal fichues, il sera capable de vous en suggérer qui devraient correspondre à votre besoin. Et puis après, il y a l'historique et un score de fréquence ce qui fait que l'outil est vraiment hyper prédictif. Il n'y a pas d'IA derrière, c'est vraiment de l'algorithmie pure, mais ça rend bien des services. Surtout si vous tapez à peu près tout le temps les mêmes commandes au même moment, aux mêmes endroits.

Par exemple, l'outil retient que vous lancez make test après make build, et pondère la suggestion en conséquence. Les quatre signaux, correspondance floue, fréquence combinée à la récence avec une demi-vie d'une semaine, affinité avec le répertoire courant et probabilité d'enchaînement, sont fondus dans un score unique.

Le "flou", lui, se règle en trois crans selon l'écart toléré entre les lettres que vous tapez. Tight n'en laisse passer qu'un seul, smart jusqu'à quatre (c'est le réglage par défaut), et loose jusqu'à huit. En smart, taper par exemple gco proposera git checkout main ; alors qu'en loose, ça partira chercher beaucoup plus loin. Et Shift + flèche droite permet de passer au cran de "flou" suivant sans quitter la ligne.

Bref, je pense que ça va vous faire gagner un max de temps.

deja est publié sous licence MIT, se pose sur macOS et Linux, et ne connaît que zsh. Et si l'essai ne vous convainc pas, la désinstallation se fait en 4 étapes : enlever la ligne eval du .zshrc, tuer le démon avec pkill -f 'deja daemon', supprimer ~/.local/share/deja/, puis retirer le binaire avec brew uninstall deja ou, si vous êtes passé par le script curl, en supprimant le fichier posé dans ~/.local/bin/.

❌