Cet article présente des logiciels et des services qui ne sont plus maintenus ou accessibles depuis très longtemps. Il est conservé à titre indicatif et historique, mais aucun des outils abordés ci-après ne doit être utilisé autrement qu’à titre d’exemple ou de référence.
J’ai depuis créé mon propre changeur de fonds d’écran[1].
Bien que la configuration de mon bureau soit stabilisée depuis un long moment maintenant (est-ce cela, entrer dans la vie adulte ?), il restait un petit regret de temps à autre, aiguisé récemment par un collègue au boulot : le fond d'écran.
Après avoir amassé --- sans doute comme beaucoup --- des centaines d'images diverses durant mon adolescence, je me rendais bien compte que changer de fond d'écran tous les jours était une tâche ridiculement inutile. J'ai donc pendant longtemps conservé le même fond d'écran[2], neutre par excellence et reposant pour les yeux. Mais /quid/ de ma super grande collection ?
Mon collègue utilise un petit logiciel (je ne me souviens plus s’il l'a ajouté ou si c'est natif dans Unity[3]) pour changer de fond d'écran à intervalle régulier. « Bon sang mais c'est bien sûr ! ». J'entends déjà vos moqueries atteindre mes oreilles : oui, je sais que c'est vieux comme le monde, j'en avais même testé à une époque mais cela m'était complètement sortie de la tête.
[1] créé mon propre changeur de fonds d’écran
Me voilà donc en quête du meilleur changeur de fond d'écran, au vu de ma configuration (Archlinux[1], Awesome WM[2]). Je me retrouve donc avec, au choix :
Je ne me voyais pas, pour une fois, devoir mettre les mains dans le cambouis pour maintenir le bouzin, du coup l'existence d'un paquet pour Archlinux (que je n'ai pas besoin de maintenir moi-même si possible) était un impondérable. Par ailleurs, je souhaitais pouvoir profiter de la banque d'image absolument infinie de Flickr[6] et d'une interface graphique un peu chouette pour éviter de trop traîner dans des scripts.
De ce fait --- et parce qu'il faut bien faire un choix un jour --- j'ai rapidement évacué l'option des scripts et Wallch, qui ne propose pas de greffon pour Flickr.
Il me restait donc Wally et Variety. J'ai finalement écarté Wally également sur des prétextes que d'aucun qualifieraient de fallacieux, mais un choix est un choix : Wally est développé en QT là où une majorité mes applications --- ex-gnome-user oblige --- est en GTK et il n'est disponible qu'en tant que « paquet utilisateur » sur AUR[7] pour ma distribution. À côté de ça, Variety est développé en PyGTK et est même disponible dans les dépôts officiels de ma distribution. /Banco/
Après installation de la chose, j'ai découvert deux points hyper positifs pour ce logiciel :
En l'occurrence, une fois sorti du monde Gnome, Unity, KDE et consort, la seule option proposée par l'auteur de Variety est d'utiliser `feh'. Pourquoi pas. Mais historiquement j'ai toujours utilisé Nitrogen[1], un petit logiciel très léger et efficace. Pourquoi changer ?
J'ai donc profité de la possibilité d'utiliser ses propres scripts pour rendre Variety interopérable avec Nitrogen. Voilà comment.
Le script `get_wallpaper' permet de récupérer la valeur du dernier papier peint enregistré. Ce script ne sert réellement qu'au démarrage de Variety, pour qu'il décide quel fond d'écran utiliser rapidement. Nitrogen utilisant un fichier de configuration pour sauvegarder les choix de l'utilisateur, il était assez simple pour moi de récupérer cette valeur. Voilà ci-après le contenu de mon script `~/.config/variety/scripts/get_wallpaper' :
1 #!/usr/bin/env bash 2 3 sed -n "s/file=\(.*\)/\1/p" $HOME/.config/nitrogen/bg-saved.cfg | tail -n 1
Cette partie-là a demandé, en tout cas sous Archlinux, une petite manipulation supplémentaire. En effet, la version de Nitrogen installable facilement via les paquets n'est pas la plus à jour et dans mon cas très précis j'avais besoin des derniers changements apportés à l'interface en ligne de commande concernant la gestion des écrans multiples.
Il a donc fallu tout simplement que je désinstalle Nitrogen pour récupérer le paquet utilisateur[1] `nitrogen-git'. C'est tout.
Voici donc le contenu de mon script `~/.config/variety/scripts/set_wallpaper' :
1 #!/usr/bin/env bash 2 3 WP=$1 4 WP_SIZE=`identify "$WP" | cut -d' ' -f3 | cut -dx -f1` 5 6 SCREEN_NUMBER=1 7 SCREEN_SIZE=0 8 SCREEN_MSG='fills all screens.' 9 if which xrandr &> /dev/null; then 10 SCREEN_NUMBER=`xrandr -q | grep '*' | wc -l` 11 SCREEN_SIZE=`xrandr -q | head -n1 | sed -n "s/.*current \([0-9]*\) x .*/\1/p"` 12 fi 13 14 if [ "$SCREEN_SIZE" -gt "$WP_SIZE" -a "$SCREEN_NUMBER" -gt '1' ]; then 15 for ((cur_screen=0; cur_screen < SCREEN_NUMBER ; cur_screen++)) 16 do 17 nitrogen --head=$cur_screen --set-zoom-fill "$WP" 2> /dev/null 18 done 19 SCREEN_MSG='on each screen.' 20 else 21 nitrogen --head=-1 --set-zoom-fill "$WP" 2> /dev/null 22 fi 23 24 # Show a notification on wallpaper change (only when the change is automatic). Display the original filename, but the post-effects image. 25 if [ "$2" == "auto" ]; then 26 WP_CAP=`basename $WP` 27 convert "$WP" -resize 100x100 "/tmp/resize_$WP_CAP" 28 notify-send --icon "/tmp/resize_$WP_CAP" "Wallpaper changed" "$WP_CAP $SCREEN_MSG" 29 rm "/tmp/resize_$WP_CAP" 30 fi
La première partie permet de décider de la commande Nitrogen à utiliser : s'agit-il de placer le même fond d'écran sur les différents écrans allumés, ou la résolution du fond d'écran spécifié est suffisamment bonne pour permettre son utilisation unique au travers des différents écrans. Je vous invite à vous reporter à l'aide de Nitrogen pour mieux comprendre les options utilisées (`nitrogen --help').
La seconde partie --- à partir de `# Show a notification on wallpaper change' --- est beaucoup plus gadget et me permet, à l'aide d'ImageMagick[2], de m'afficher dans une notification système un aperçu du fond écran utilisé après un changement. Travaillant très souvent en plein écran, cela me permet d'avoir quand même un petit aperçu des jolies images affichées, sans pour autant être trop gênant.
[1] paquet utilisateur (HTTPS)
--
📅 dimanche 24 mai 2015 à 15:02
📝 Étienne Pflieger with GNU/Emacs 29.4 (Org mode 9.7.11)