Faire alterné le fond d’écran sous Gnome Shell

Bonjour,

J’aime bien Gnome Shell, car on peut le piloté pratiquement tout au clavier, l’interface est très épuré, mais il y avais quelque chose qui me manquait, c’était de pouvoir changé de fond d’écran aléatoirement, toutes les 30 minutes par exemple.

Cette fonctionnalité est présente nativement sous Xfce ou KDE par exemple, meme sous i3, en exécutant feh au démarrage de la session i3 (cf. mon billet sur i3).

Malheureusement, elle est pas présente dans Gnome Shell, soit on peut installer des logiciels comme Variety ou Wallch, mais je les trouve trop ‘usine à gaz’ et franchement, installer un logiciel avec des librairies, des dépendances, juste pour changer le fond d’écran, c’est sortie l’artillerie lourde pour rien.

Au début, j’utilisais l’extension Gnome Shell BackSlide, mais après une mise a jour de Gnome, de la 3.16 à la 3.18 si je me souvient bien, elle n’etait plus compatible, donc je l’ai supprimer, je sais pas si son auteur à fait une mise a jour depuis, je ne l’utilise plus.

Du coup, j’ai crée un script qui se charge de changer le fond d’écran, et une unité systemd couplé avec un timer. Cela est compatible avec les versions les plus récente de Gnome 3, la 3.20 et la 3.22.

  • Création du script principal:

Premièrement, il faut créé le script qui va se charger de choisir aléatoirement une image dans un dossier prédéfini et de l’afficher comme fond d’écran.
Voici mon script en question:

Les premières lignes permettent de récupérer le nom d’utilisateur de la session, puis de récupérer le PID de gnome-session de cet utilisateur, enfin on récupère la variable d’environnement DBUS_SESSION_BUS_ADDRESS de la session quand celle-ci a démarré.

Ensuite on défini le répertoire qui contient les fonds d’écran, avec 

walls_dir=$HOME/Wallpapers, et on défini une variable selection qui récupère la sortie d’un find suivi d’un shuf n1 qui permet de permuter aléatoirement la sortie de find.
 

Enfin la commande:

gsettings set org.gnome.desktop.background pictureuri « file://$selection » permet d’afficher le fond d’ecran dans Gnome.

  • Créer une instance systemd:

On va créer le fichier .service pour systemd, que l’on va exécuter en mode utilisateur.

Il faut créer dans son /home le repertoire pour les services systemd en mode utilisateur:

Ensuite on créer le fichier ~/.config/systemd/user/gnome-wallpaper.service:

Il faut, bien sur changer la variable [USERNAME] par son nom d’utilisateur.

  • Créer le timer systemd:

Le timer pour systemd c’est comme la crontab, c’est dans ce fichier que l’on va définir le temps que l’on désire pour exécuter le script.

On créer le fichier ~/.config/systemd/user/gnome-wallpaper.timer:

J’ai réglé le miens toutes les 30 minutes.

Ensuite il ne reste plus qu’as activé le service avec:

Maintenant on peut vérifier que le timer est bien en cours d’exécution avec la commande:

Voilà, j’espère que ce petit tuto vous auras plu, et si vous voulez en savoir plus sur les unités systemd en mode utilisateur et sur les timers, je vous donne la doc de ArchLinux qui est bien faite.

A bientôt.

Auteur : Eric

SysAdmin Junior, anciennement infographiste avec pas mal de reste… Passionné d’informatique OpenSource et Mélomane (Vinyl Addict).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *