J'ai créé un simple script python pour changer mon papier peint (Ubuntu 18.04) en prenant aléatoirement une image dans un dossier spécifique. J'utilise la commande gsettings. Ça fonctionne quand je l'exécute manuellement, mais je veux l'automatiser avec crontab.
J'ai rencontré l'erreur suivante car crontab n'a pas toutes les variables que j'avais quand j'exécutais mon script manuellement :
(process:xxxxx): dconf-AVERTISSEMENT **: 15:07:01.547: échec de la validation des changements de dconf: Impossible de lancer automatiquement D-Bus sans $DISPLAY X11
J'ai trouvé quelques solutions comme :
dbus_session_bus_address = 'PID=$(pgrep gnome-session | head -n1) && export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-) && '
command = dbus_session_bus_address + 'gsettings set org.gnome.desktop.background picture-uri ' + getRandomImage()
Cela semble fonctionner pour la plupart des gens mais j'ai un problème, mon crontab n'a pas les permissions :
grep: /proc/$pid/environ: Permission refusée
dconf-AVERTISSEMENT **: 15:19:01.514: échec de la validation des changements de dconf: L'adresse indiquée est vide
J'ai alors exécuté le script avec sudo crontab -e
, mais j'ai rencontré l'erreur suivante :
dconf-AVERTISSEMENT **: 15:22:01.807: échec de la validation des changements de dconf: La connexion est fermée
De plus, je préfère utiliser mon crontab utilisateur.. Quelle est la meilleure façon de le faire ?