﻿﻿{"id":1553,"date":"2025-11-10T10:00:00","date_gmt":"2025-11-10T09:00:00","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/bash-screensavers-des-economiseurs-decran-pour-votre-terminal\/"},"modified":"2025-11-10T10:00:00","modified_gmt":"2025-11-10T09:00:00","slug":"bash-screensavers-des-economiseurs-decran-pour-votre-terminal","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/bash-screensavers-des-economiseurs-decran-pour-votre-terminal\/","title":{"rendered":"Bash-screensavers &#8211; Des \u00e9conomiseurs d&#8217;\u00e9cran pour votre terminal"},"content":{"rendered":"<p>Un \u00e9conomiseur d\u2019\u00e9cran, je pense que tout le monde voit ce que c\u2019est.<\/p>\n<p>Bon c\u2019\u00e9tait tr\u00e8s utile \u00e0 l\u2019\u00e9poque des vieux \u00e9crans CRT pour \u00e9viter qu\u2019ils ne gardent une trace fant\u00f4me \u00e0 cause d\u2019une image statique, mais aujourd\u2019hui sur nos \u00e9crans modernes c\u2019est devenu compl\u00e9tement inutile. Toutefois on continue \u00e0 les utiliser parce que c\u2019est joli et sympa.<\/p>\n<p>Et bien<br \/>\n<a href=\"https:\/\/github.com\/attogram\/bash-screensavers\">bash-screensavers<\/a><br \/>\nc\u2019est pareil. Ce projet transforme non pas votre \u00e9cran, mais juste votre terminal en feu d\u2019artifice ASCII, en matrice, ou en simulation de vie cellulaire. C\u2019est tout aussi joli et sympa m\u00eame si bien s\u00fbr faire tourner ces screensavers comme \u00e7a consomme probablement plus d\u2019\u00e9nergie CPU que de laisser votre terminal en pause avec du texte statique.<\/p>\n<p>Bash-screensavers propose donc<br \/>\n<a href=\"https:\/\/github.com\/attogram\/bash-screensavers\/blob\/main\/gallery\/README.md\">11 th\u00e8mes diff\u00e9rents<\/a><br \/>\n\u2026 Il y a l\u2019<code>alpha<\/code> qui affiche des pixels color\u00e9s al\u00e9atoires, le <code>bouncing<\/code> avec son \u201cO\u201d qui rebondit fa\u00e7on Pong, le classique <code>matrix<\/code> qui simule la pluie de code vert des films Wachowski, <code>pipes<\/code> qui g\u00e9n\u00e8re un labyrinthe de tuyaux infini, <code>fireworks<\/code> qui lance des feux d\u2019artifice ASCII, <code>life<\/code> qui impl\u00e9mente le jeu de la vie de Conway, <code>rain<\/code> pour une pluie apaisante, <code>speaky<\/code> qui parle de fa\u00e7on dramatique, <code>stars<\/code> qui affiche un champ d\u2019\u00e9toiles scintillantes, <code>tunnel<\/code> qui vous fait voler dans un tunnel digital, et <code>vibe<\/code> pour tout ce qui est simulation de vibe coding.<\/p>\n<p>L\u2019installation est \u00e9galement hyper simple :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">git clone https:\/\/github.com\/attogram\/bash-screensavers.git\n<\/span><\/span><span class=\"line\"><span class=\"cl\">cd bash-screensavers\n<\/span><\/span><span class=\"line\"><span class=\"cl\">.\/screensaver.sh\n<\/span><\/span><\/code><\/pre>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/bash-screensavers-absurdite-productive-terminal\/bash-screensavers-absurdite-productive-terminal-2.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Vous arrivez alors sur un menu interactif qui vous propose de choisir parmi les 11 screensavers. Ou vous pouvez lancer directement un screensaver sp\u00e9cifique avec <code>.\/screensaver.sh matrix<\/code>, ou un random avec <code>.\/screensaver.sh -r<\/code>. Ctrl+C pour sortir.<\/p>\n<p>Chaque screensaver est en r\u00e9alit\u00e9 un script bash autonome plac\u00e9 dans le dossier <code>gallery\/<\/code>. Par exemple, <code>gallery\/matrix\/matrix.sh<\/code> contient tout le code pour recr\u00e9er l\u2019effet Matrix et quand vous regardez le code, vous r\u00e9alisez que c\u2019est de l\u2019interpr\u00e9t\u00e9 ligne par ligne un peu nul, pas super optimis\u00e9, avec des boucles <code>while true<\/code>, des <code>sleep 0.05<\/code> pour ralentir l\u2019animation, et des appels \u00e0 <code>tput cup<\/code> pour positionner le curseur \u00e0 chaque frame.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/bash-screensavers-absurdite-productive-terminal\/bash-screensavers-absurdite-productive-terminal-3.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Tenez, prenons <code>bouncing<\/code>. Le script doit calculer la position du \u201cO\u201d, d\u00e9tecter les collisions avec les bords du terminal, inverser la v\u00e9locit\u00e9, effacer l\u2019ancienne position, afficher la nouvelle, attendre un peu, et recommencer. \u00c7a consomme du CPU pour un effet visuel qu\u2019on pourrait obtenir en CSS avec 5 lignes de code et zero conso de CPU d\u00e8s le premier rendu. Mais bon, c\u2019est du script bash alors c\u2019est trop cooool !<\/p>\n<p>Quoiqu\u2019il en soit, mon pr\u00e9f\u00e9r\u00e9 c\u2019est <code>life<\/code>. C\u2019est le<br \/>\n<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Jeu_de_la_vie\">Jeu de la Vie de Conway<\/a><br \/>\no\u00f9 vous avez une grille de cellules, et chaque cellule peut \u00eatre vivante ou morte. ET \u00e0 chaque g\u00e9n\u00e9ration, vous appliquez ces r\u00e8gles : 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\u00e9menter \u00e7a en bash, \u00e7a veut donc dire parcourir une matrice 2D, compter les voisins pour chaque cellule, stocker l\u2019\u00e9tat suivant, et redessiner le tout.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/bash-screensavers-absurdite-productive-terminal\/bash-screensavers-absurdite-productive-terminal-4.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Le vrai but de bash-screensavers, vous l\u2019aurez compris, ce n\u2019est donc pas de prot\u00e9ger votre \u00e9cran. \u00c7a on s\u2019en fout. Non, le vrai but, c\u2019est de signaler \u00e0 vos coll\u00e8gues les boulzors que : \u201c<em>Je travaille, ne touchez pas \u00e0 mon terminal<\/em>\u201d. H\u00e9 oui, la nature humaine est mal faites car si quelqu\u2019un voit un terminal avec du texte statique, il peut penser que la session est abandonn\u00e9e alors que s\u2019il voit un terminal avec des pipes ASCII qui poussent en temps r\u00e9el, il sait que quelqu\u2019un a lanc\u00e9 \u00e7a volontairement.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/bash-screensavers-absurdite-productive-terminal\/bash-screensavers-absurdite-productive-terminal-5.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Le projet inclut m\u00eame une section<br \/>\n<a href=\"https:\/\/github.com\/attogram\/bash-screensavers\/tree\/main\/not-ready-for-primetime\">Not Ready For Primetime<\/a><br \/>\navec des screensavers exp\u00e9rimentaux qui ne sont pas encore assez bien pour figurer dans la galerie principale. Et tout le monde peut apporter sa petite contribution.<\/p>\n<p>Merci \u00e0 Lorenper pour l\u2019info.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Un \u00e9conomiseur d\u2019\u00e9cran, je pense que tout le monde voit ce que c\u2019est. Bon c\u2019\u00e9tait tr\u00e8s utile \u00e0 l\u2019\u00e9poque des vieux \u00e9crans CRT pour \u00e9viter qu\u2019ils ne gardent une trace fant\u00f4me \u00e0 cause d\u2019une image statique, mais aujourd\u2019hui sur nos \u00e9crans modernes c\u2019est devenu compl\u00e9tement inutile. Toutefois on continue \u00e0 les utiliser parce que c\u2019est joli et sympa. Et bien bash-screensavers c\u2019est pareil. Ce projet transforme non pas votre \u00e9cran, mais juste votre terminal en feu d\u2019artifice ASCII, en matrice, ou en simulation de vie cellulaire. C\u2019est tout aussi joli et sympa m\u00eame si bien s\u00fbr faire tourner ces screensavers comme \u00e7a consomme probablement plus d\u2019\u00e9nergie CPU que de laisser votre terminal en pause avec du texte statique. Bash-screensavers propose donc 11 th\u00e8mes diff\u00e9rents \u2026 Il y a l\u2019alpha qui affiche des pixels color\u00e9s al\u00e9atoires, le bouncing avec son \u201cO\u201d qui rebondit fa\u00e7on Pong, le classique matrix qui simule la pluie de code vert des films Wachowski, pipes qui g\u00e9n\u00e8re un labyrinthe de tuyaux infini, fireworks qui lance des feux d\u2019artifice ASCII, life qui impl\u00e9mente le jeu de la vie de Conway, rain pour une pluie apaisante, speaky qui parle de fa\u00e7on dramatique, stars qui affiche un champ d\u2019\u00e9toiles scintillantes, tunnel qui vous fait voler dans un tunnel digital, et vibe pour tout ce qui est simulation de vibe coding. L\u2019installation est \u00e9galement 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\u00e9cifique avec .\/screensaver.sh matrix, ou un random avec .\/screensaver.sh -r. Ctrl+C pour sortir. Chaque screensaver est en r\u00e9alit\u00e9 un script bash autonome plac\u00e9 dans le dossier gallery\/. Par exemple, gallery\/matrix\/matrix.sh contient tout le code pour recr\u00e9er l\u2019effet Matrix et quand vous regardez le code, vous r\u00e9alisez que c\u2019est de l\u2019interpr\u00e9t\u00e9 ligne par ligne un peu nul, pas super optimis\u00e9, avec des boucles while true, des sleep 0.05 pour ralentir l\u2019animation, et des appels \u00e0 tput cup pour positionner le curseur \u00e0 chaque frame. Tenez, prenons bouncing. Le script doit calculer la position du \u201cO\u201d, d\u00e9tecter les collisions avec les bords du terminal, inverser la v\u00e9locit\u00e9, effacer l\u2019ancienne position, afficher la nouvelle, attendre un peu, et recommencer. \u00c7a consomme du CPU pour un effet visuel qu\u2019on pourrait obtenir en CSS avec 5 lignes de code et zero conso de CPU d\u00e8s le premier rendu. Mais bon, c\u2019est du script bash alors c\u2019est trop cooool ! Quoiqu\u2019il en soit, mon pr\u00e9f\u00e9r\u00e9 c\u2019est life. C\u2019est le Jeu de la Vie de Conway o\u00f9 vous avez une grille de cellules, et chaque cellule peut \u00eatre vivante ou morte. ET \u00e0 chaque g\u00e9n\u00e9ration, vous appliquez ces r\u00e8gles : 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\u00e9menter \u00e7a en bash, \u00e7a veut donc dire parcourir une matrice 2D, compter les voisins pour chaque cellule, stocker l\u2019\u00e9tat suivant, et redessiner le tout. Le vrai but de bash-screensavers, vous l\u2019aurez compris, ce n\u2019est donc pas de prot\u00e9ger votre \u00e9cran. \u00c7a on s\u2019en fout. Non, le vrai but, c\u2019est de signaler \u00e0 vos coll\u00e8gues les boulzors que : \u201cJe travaille, ne touchez pas \u00e0 mon terminal\u201d. H\u00e9 oui, la nature humaine est mal faites car si quelqu\u2019un voit un terminal avec du texte statique, il peut penser que la session est abandonn\u00e9e alors que s\u2019il voit un terminal avec des pipes ASCII qui poussent en temps r\u00e9el, il sait que quelqu\u2019un a lanc\u00e9 \u00e7a volontairement. Le projet inclut m\u00eame une section Not Ready For Primetime avec des screensavers exp\u00e9rimentaux qui ne sont pas encore assez bien pour figurer dans la galerie principale. Et tout le monde peut apporter sa petite contribution. Merci \u00e0 Lorenper pour l\u2019info.<\/p>\n","protected":false},"author":1,"featured_media":1554,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-1553","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1553"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1553\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1554"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}