Si vous utilisez un environnement de bureau dont les préférences sont gérées par [GSettings|https://developer.gnome.org/gio/stable/GSettings.html], 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|Extensible Markup Language??, 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|https://docs.python.org/3/library/subprocess.html]). Je n’ai rien trouvé qui me satisfasse, j’ai donc décidé de créer le mien, [backgrounds-slideshow|https://bitbucket.org/olivierduchateau/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 $$Il est gérer par [Git|https://git-scm.com/], donc il faut l’installer au préalable.$$).

///
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|https://developer.gnome.org/gobject/stable/] et notamment la partie __instrospection__ à [GLib|https://developer.gnome.org/glib/2.54/] (le paquet $$Consultez le fichier @@README.rst@@ du dépôt.$$ 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|Graphical User Interface?? est en cours de développement.