Journal Remplacement de wallpaper-tray

Posté par (page perso) .
Tags : aucun
11
10
mai
2011

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:

#!/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
  • # shuf

    Posté par . Évalué à 3.

    L'utilisation de shuf rendrait le script plus élégant, comme ici (pour Gnome) :

    gconftool-2 -t str -s /desktop/gnome/background/picture_filename "$(find ~/Wallpapers -type f | shuf -n1)"

  • # Gstyle

    Posté par (page perso) . Évalué à 1.

    J'ai eu le même soucis que toi. J'ai choisis Gstyle. Il y a des Wallpaper dynamique agréables.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.