Sous Mate un seul slideshow disponible pour les fonds d'écran (Cosmos), je n'ai trouvé aucune solution facile pour en créer d'autre
Le meilleur logiciel de slideshow que j'ai trouvé : variety est disponible dans les dépôts Debian
Un autre logiciel fait son apparition sous Bulleye : hydrapaper , pour l'instant mes tests en VM sont peu concluants
On créer un fichier script avec le contenu suivant
#!/bin/bash #change de fond d'écran aléatoirement grâce à la commande shuf #Plusieurs répertoires peuvent être indiqués à l'intérieur des guillemets double, les répertoires contenant des espaces devront être protégé par des guillemets simple backgroundsdir="/home/stephane/Images/Wallpapers/16:9 /home/stephane/.config/variety/Downloaded/Unsplash" currentpic="$(find $backgroundsdir -iname '*.*p*g' | shuf -n1)" gsettings set org.mate.background picture-filename "$currentpic" exit
rendre le fichier exécutable
chmod +x fond_ecran_crontab.sh
En utilisant crontab certaines variables indispensable au bon fonctionnement du script nous manquent
Pour afficher ses variables
env |egrep 'DISPLAY|DBUS'
DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
Éditer le fichier crontab et régler le temps voulu entre les changements de fond d'écran (sans oublier de reporter les valeurs des deux variables)
crontab -e
exemple pour un changement de fond d'écran toute les 5 minutes:
*/5 * * * * DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus DISPLAY=:0 /home/stephane/fond_ecran_crontab.sh
Un ou plusieurs répertoires contenant des photos doivent être précisés pour la variable backgroundsdir
Pour le reste tout se passe en éditant le fichier crontab
crontab -e
il suffit juste de commenter la ligne pour désactiver le script par exemple
#*/5 * * * * DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus DISPLAY=:0 /home/stephane/fond_ecran_crontab.sh
Pourquoi faire simple quand on peut faire compliqué
#!/bin/bash #change de fond d'écran aléatoirement grâce à la commande shuf #Plusieurs répertoires peuvent être indiqués pour la variable backgroundsdir #les répertoires contenant des espaces devront être protégé par des guillemets simple backgroundsdir="$HOME/Images/Wallpapers/16:9 $HOME/.config/variety/Downloaded/Unsplash" while true do #5 minutes sleep 300 currentpic="$(find $backgroundsdir -iname '*.*p*g' | shuf -n1)" gsettings set org.mate.background picture-filename "$currentpic" done
Ne pas oublier de rendre le script éxécutable
chmod +x fond_ecran.sh
l'intérêt du script est qu'il soit lancé à l'ouverture de session
j'ai donc créé un fichier desktop avec le contenu suivant que j'ai placé dans mon dossier
$HOME/.config/autostart
[Desktop Entry] Version=1.0 Type=Application Terminal=false Icon=$HOME/.icons/oomox-quakeWorld_croutons/scalable/status/xfce-unknown.svg Icon[fr_FR]=st Name[fr_FR]=fond_ecran Exec=$HOME/fond_ecran.sh Comment[fr_FR]=chargement aléatoire de fond d'écran Name=fond_ecran Comment=chargement aléatoire de fond d'écran X-MATE-Autostart-enabled=true
dernière étape indispensable: créer un script pour tuer le processus à la fermeture de session sans quoi le script fond_ecran.sh reste actif et peut avoir plusieurs instances d'ouverte à mesure que les sessions s'ouvrent sans redémarrage de l'ordi
#!/bin/bash #ce script s'exécute après la fermeture de session #session-cleanup-script=$HOME/fermeture_session.sh ajouté dans le fichier configuration de lightdm #arret du script fond_ecran, tue le ou les processus correspondant au PID fond_ecran.sh kill $(pgrep -f 'fond_ecran.sh')
(rendre le script exécutable)
Éditer le fichier de configuration de lightdm en root
nano /etc/lightdm/lightdm.conf
puis ajouter sous la section
[SeatDefaults]
ou bien
[Seat:*]
la ligne
session-cleanup-script=/home/stephane/fermeture_session.sh
Enregistrer le fichier et redémarrer le pc ou redémarrer le service lightdm pour que les modifications soient prises en compte
Un ou plusieurs répertoires contenant des photos doivent être précisés pour la variable backgroundsdir
l'affichage par défaut pour chaque fond d'écran est de 5 minutes (sleep 300)
la valeur est à inscrire en secondes, mais on peut utiliser un suffixe (voir sleep –help)
Pour inactivé le script au démarrage, éditer le fichier desktop du dossier autostart et passer la ligne à false
X-MATE-Autostart-enabled=false
inversement repasser la valeur à true pour réactiver le démarrage auto
Note: si tout est bien la commande suivante doit renvoyer un seul numéro de PID du script actif
pgrep -f 'fond_ecran.sh'
à la fermeture de session cette commande ne doit rien renvoyer, dans le cas contraire c'est que quelque chose ne vas pas
sources du script d'origine https://forums.linuxmint.com/viewtopic.php?t=305338