Envie d'un diaporama comme fond d'écran ?

Où comment faire défiler une série de fond d'écran pour les environnements de bureau tels que GNOME, MATE, ou Cinnamon.

Si vous utilisez un environnement de bureau dont les préférences sont gérées par GSettings, j'ai la solution pour réaliser facilement cette tâche.

Le principe

Il nous faut :

  • Un ensemble d'images (généralement la plupart des distributions proposent un paquet contenant des fonds d'écran)
  • Définir un temps d'affichage (il s'agit de la durée pendant laquelle le fond d'écran sera affiché)
  • Définir la durée de la transition entre deux fonds d'écran
  • Modifier la propriété adéquate

Les trois premiers éléments de la liste ci-dessus doivent être stockés dans un fichier XML, ce qui peut être fastidieux si l'on a un grand nombre d'images. Il faut répéter un certains nombres d'opérations, pouvant entraîner des erreurs, d'où l'idée d'automatiser le processus.

Je suis parti à la recherche d'un programme en Python (supportant Python3 et ne faisant pas appelle au module subprocess). Je n'ai rien trouvé qui me satisfasse, j'ai donc décidé de créer le mien, backgrounds-slideshow.

Comment il s'utilise ?

On doit tout d'abord « cloner » le dépôt (on va récupérer les sources du programme [1]).

cd ~/Documents/
git clone https://bitbucket.org/olivierduchateau/backgrounds-slideshow.git

Un nouveau dossier backgrounds-slideshow/ sera créer dans ~/Documents/.

Il faut vérifier les dépendances. Le script utilise en grande partie les modules de la bibliothèque standard de Python. Cependant il nous faut également les bindings pour la bibliothèque GObject et notamment la partie instrospection à GLib (le paquet [2] porte un nom différent suivant la distribution).

Quand tout est en place, on peut tester le programme. On va afficher les différentes options :

python3 backgrounds-slideshow -h
usage: backgrounds-slideshow.py [-h] [-e FILE] [-R] [-r] [-t MIN] directory

positional arguments:
  directory             directory to scan

optional arguments:
  -h, --help            show this help message and exit
  -e FILE, --exclude FILE
                        file to exclude (can be specified multiple times)
  -R, --recursive       scan a directory recursively
  -r, --random          shuffle elements
  -t MIN, --time MIN    how long image is going to be displayed (default
                        15min)

Un aperçu des différentes options

On constate qu'il y a deux sortes d'options, facultatives (celles situées entre les crochets) et celles obligatoires.

Il faut obligatoirement spécifier le chemin vers un dossier contenant des images, par exemple :

python3 backgrounds-slideshow.py /usr/share/backgrounds/

Ci-dessus, il s'agit du cas le plus simple.

Par défaut le script s'arrête uniquement aux fichiers contenus dans le répertoire en question. Si il existe des sous-dossiers, ils ne sont pas traités, pour y remédier, il faut utiliser l'option -R.

python3 backgrounds-slideshow.py -R /usr/share/backgrounds/

Le programme ne comptabilise pas les liens symboliques, c'est pourquoi, il faut un minimum de deux fichiers (sinon un message d'erreur va s'afficher).

On peut vouloir exclure un (ou plusieurs) fichier(s), cela se fait à l'aide de l'option -e. Par exemple, si l'on ne souhaite pas voir s'afficher les images symbolics-1.png et blue-dark.jpg :

python3 backgrounds-slideshow.py -R -e symbolics-1.png -e blue-dark.jpg /usr/share/backgrounds/

Si tout se passe bien, un fichier XML sera créer dans le répertoire ~/.cache/, et il a comme suffixe -slideshow.xml.

Le programme met à jour automatiquement la propriété correspondant à la valeur du fond d'écran, pour les bureaux qui sont supportés. Pour finir, une version GUI est en cours de développement.

Notes

[1] Il est gérer par Git, donc il faut l'installer au préalable.

[2] Consultez le fichier README.rst du dépôt.