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.