En faisant une recherche sur Google, on trouve la commande
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>
La première fois que j'ai exécuté cette commande, j'ai reçu un message disant que la propriété /backdrop/screen0/monitor0/image-path n'existe pas dans le canal xfce4-desktop.
J'ai donc créé cette propriété :
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>
Mais le fond n'a toujours pas changé.
J'ai ensuite changé l'arrière-plan de space-03.jpg en space-04.jpg normalement, à partir de l'application Desktop Settings de XUbuntu. Puis j'exécute :
$ xfconf-query -c xfce4-desktop -p /backdrop -lv
/backdrop/screen0/image-path /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-path /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-show true
/backdrop/screen0/monitor1/image-path /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor1/image-show true
/backdrop/screen0/monitorLVDS1/workspace0/color-style 0
/backdrop/screen0/monitorLVDS1/workspace0/image-style 5
/backdrop/screen0/monitorLVDS1/workspace0/last-image /usr/share/backgrounds/space-04.jpg
Comme vous pouvez le voir, la propriété /backdrop/screen0/monitorLVDS1/workspace0/last-image
a changé ( !).
Si je change cette propriété, cela fonctionne très bien, mais le problème est que je dois trouver une méthode générale pour l'implémenter dans mon programme (Wallch).
Même Variety
(qui est un très beau programme, soit dit en passant) ne fonctionne pas correctement sur ma machine et choisit de modifier la propriété /backdrop/screen0/monitor0/image-path
qui ne fait rien.
Une solution consisterait à créer toutes les propriétés possibles et à les modifier simultanément en cas de besoin. Je n'aime pas cette solution pour deux raisons :
- Plusieurs appels système qui seront nécessaires
- À un moment donné, j'aurai besoin de prendre le chemin de l'image actuelle (afin d'ouvrir le dossier de celle-ci, de copier son chemin, de la supprimer et d'autres fonctions que le programme fournit). Je ne saurais pas quelle propriété contient le chemin de l'image réellement définie afin de la rendre disponible pour le programme.
Je ne comprends pas non plus pourquoi XFCE l'a fait de manière si complexe. Pourquoi une seule propriété ne suffirait-elle pas, comme dans gsettings ?