Bash-screensavers - Des économiseurs d'écran pour votre terminal
Un économiseur d’écran, je pense que tout le monde voit ce que c’est.
Bon c’était très utile à l’époque des vieux écrans CRT pour éviter qu’ils ne gardent une trace fantôme à cause d’une image statique, mais aujourd’hui sur nos écrans modernes c’est devenu complétement inutile. Toutefois on continue à les utiliser parce que c’est joli et sympa.
Et bien bash-screensavers c’est pareil. Ce projet transforme non pas votre écran, mais juste votre terminal en feu d’artifice ASCII, en matrice, ou en simulation de vie cellulaire. C’est tout aussi joli et sympa même si bien sûr faire tourner ces screensavers comme ça consomme probablement plus d’énergie CPU que de laisser votre terminal en pause avec du texte statique.
Bash-screensavers propose donc
11 thèmes différents
… Il y a l’alpha qui affiche des pixels colorés aléatoires, le bouncing avec son “O” qui rebondit façon Pong, le classique matrix qui simule la pluie de code vert des films Wachowski, pipes qui génère un labyrinthe de tuyaux infini, fireworks qui lance des feux d’artifice ASCII, life qui implémente le jeu de la vie de Conway, rain pour une pluie apaisante, speaky qui parle de façon dramatique, stars qui affiche un champ d’étoiles scintillantes, tunnel qui vous fait voler dans un tunnel digital, et vibe pour tout ce qui est simulation de vibe coding.
L’installation est également hyper simple :
git clone https://github.com/attogram/bash-screensavers.git
cd bash-screensavers
./screensaver.sh
Vous arrivez alors sur un menu interactif qui vous propose de choisir parmi les 11 screensavers. Ou vous pouvez lancer directement un screensaver spécifique avec ./screensaver.sh matrix, ou un random avec ./screensaver.sh -r. Ctrl+C pour sortir.
Chaque screensaver est en réalité un script bash autonome placé dans le dossier gallery/. Par exemple, gallery/matrix/matrix.sh contient tout le code pour recréer l’effet Matrix et quand vous regardez le code, vous réalisez que c’est de l’interprété ligne par ligne un peu nul, pas super optimisé, avec des boucles while true, des sleep 0.05 pour ralentir l’animation, et des appels à tput cup pour positionner le curseur à chaque frame.
Tenez, prenons bouncing. Le script doit calculer la position du “O”, détecter les collisions avec les bords du terminal, inverser la vélocité, effacer l’ancienne position, afficher la nouvelle, attendre un peu, et recommencer. Ça consomme du CPU pour un effet visuel qu’on pourrait obtenir en CSS avec 5 lignes de code et zero conso de CPU dès le premier rendu. Mais bon, c’est du script bash alors c’est trop cooool !
Quoiqu’il en soit, mon préféré c’est life. C’est le
Jeu de la Vie de Conway
où vous avez une grille de cellules, et chaque cellule peut être vivante ou morte. ET à chaque génération, vous appliquez ces règles : une cellule vivante avec 2 ou 3 voisins vivants survit, sinon elle meurt. Et une cellule morte avec exactement 3 voisins vivants redevient vivante. Implémenter ça en bash, ça veut donc dire parcourir une matrice 2D, compter les voisins pour chaque cellule, stocker l’état suivant, et redessiner le tout.
Le vrai but de bash-screensavers, vous l’aurez compris, ce n’est donc pas de protéger votre écran. Ça on s’en fout. Non, le vrai but, c’est de signaler à vos collègues les boulzors que : “Je travaille, ne touchez pas à mon terminal”. Hé oui, la nature humaine est mal faites car si quelqu’un voit un terminal avec du texte statique, il peut penser que la session est abandonnée alors que s’il voit un terminal avec des pipes ASCII qui poussent en temps réel, il sait que quelqu’un a lancé ça volontairement.
Le projet inclut même une section Not Ready For Primetime avec des screensavers expérimentaux qui ne sont pas encore assez bien pour figurer dans la galerie principale. Et tout le monde peut apporter sa petite contribution.
Merci à Lorenper pour l’info.

