URL: https://linuxfr.org/users/err404/journaux/remplacement-de-wallpaper-tray Title: Remplacement de wallpaper-tray Authors: err404 Date: 2011年05月10日T14:20:02+02:00 Tags: Score: 11 Il y a un moment, j'ai découvert un petit utilitaire, très simple, pour changer périodiquement le fond d'écran (et en parcourant les dossiers d'images de façon récursive). il s'agissait de `walppaper-tray`. Or depuis quelques temps, ce paquet n'est plus maintenu et à même été retiré des dépôts officiels de Debian, on peu certes le trouver ailleurs, mais ce n'était pas mon but. Il est vrai que `wallpaper-tray` souffrait de quelques bug, par exemple, de temps en temps, il se terminait, probablement en voulant charger une image pas bien supportée. J'ai cherché à lui trouver un remplaçant, mais je souhaitais un utilitaire dont les dépendances ne me fâchent pas, c'est pourquoi j'ai éliminé `drape` depuis le début. Je n'utilise pas kde, donc je n'ai pas choisi `kdewallpaper`. J'ai trouvé `nitrogen`, pratique, mais il me semblait incapable de parcourir un ensemble de dossiers récursivement, et tout aussi incapable de changer le fond d'écran périodiquement. Finalement je me suis décidé à écrire un petit script bash qui appellerai l'utilitaire régulièrement. Ce script est facilement adaptable pour l'utilitaire `feh` qui peux remplir les même tâches que `nitrogen` (parce que nitrogen semble orienté vers `gnome`, et que cela peut en déranger quelques un) Je publie ce script sous licence GPL version 2 http://err404.numericore.com/Doc/Debian/WallPaper-tray.sh mais pour vous éviter d'avoir à attendre que mon serveur vous réponde (il fait ce qu'il peut) je vous fais une copie ici: ```bash #!/bin/bash # GPLv2 #Copyright (C) 2011 Boris Ganne (Err404) #This program is free software; you can redistribute it and/or #modify it under the terms of the GNU General Public License #as published by the Free Software Foundation; either version 2 #of the License, or (at your option) any later version. #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with this program; if not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #Merci à Minos et à Link Mauve sur discussion@chat.jabberfr.org pour leur attention et leurs conseils #Merci à Alf pour les corrections. #dossier où sont stockées les images WPdir="${HOME}/wallpapers" # intervale d'attente entre chaque affichage de fond d'écran attente=60 # vérification si le sript est déjà en cours d'exécution, si oui, on kill le(s) précédant(s) # ce test n'est effectué qu'une seule fois, au lancement if pidof -x $(basename 0ドル)> /dev/null; then for p in $(pidof -x $(basename 0ドル)); do if [ $p -ne $$ ]; then echo "Script pid: $p is already running. je termine $p " kill -9 $p fi done # La boucle d'attente principale # # capable d'aller dans les sous dossiers et liens, # choisit une image au hasard et tente de l'afficher. while [ true ] ; do i=0 # on liste tous les fichiers, et on en fait un tableau. find $WPdir/ -type f |( while read elem; do tableau[i]=$elem ;((i++)); done #on prend un nombre au hasard R=$RANDOM # on prend le modulo de R/$i: let "R %= $i" # on affiche le fichier choisi (utile si lancé dans un terminal) echo ${tableau[R]} # on applique le fond d'écran /usr/bin/nitrogen --set-auto ${tableau[R]} # on sort du sous-processus lancé avec le | après le find ) # on attend sleep $attente done fi ``` J'ai rencontré quelques difficultés pour pouvoir prendre en compte l'espace dans le nom de fichier ou de dossier, comme une boucle `for` ne passait pas bien, j'ai utilisé une boucle `while`, mais du coup j'ai eu du mal à transmettre certaines variables parce que `while` s'exécute dans un sous-processus, d'où la présence du sous-processus après le `find`

AltStyle によって変換されたページ (->オリジナル) /