Faire une recherche google révèle la commande
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>
La première fois que j'exécute cette commande, un message m'informant 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 toujours le fond n'a pas changé.
J'ai ensuite modifié l'arrière-plan de space-03.jpg en space-04.jpg normalement, à partir de l'application Paramètres de bureau de XUbuntu. Puis je cours:
$ 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 constater, la propriété /backdrop/screen0/monitorLVDS1/workspace0/last-image
a changé (!).
Si je change cette propriété, alors cela fonctionne très bien, mais le problème est que je dois trouver un moyen général de la mettre en œuvre dans mon programme (Wallch).
Même Variety
(qui est un programme très agréable, soit dit en passant) ne fonctionne pas correctement sur ma machine et décide de changer 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, le cas échéant. Je n'aime pas cette solution pour deux raisons:
Je ne comprends pas non plus pourquoi XFCE l’a fait si complexe. Pourquoi une seule propriété ne serait-elle pas suffisante, comme dans gsettings?
Je pense que cela devrait faire le travail
Utilisez le code suivant pour obtenir les appareils connectés et les compter:
connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
activeOutput=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
connected=$(echo $connectedOutputs | wc -w)
alors vous devez manipuler dessus et choisir de définir la valeur pour image-path ou last-image
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s ~/Pictures/1.jpeg
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorLVDS1/workspace0/last-image -n -t string -s ~/Pictures/1.jpeg
for i in $(xfconf-query -c xfce4-desktop -p /backdrop -l|egrep -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$"); do
xfconf-query -c xfce4-desktop -p $i -n -t string -s ~/Pictures/2.png
xfconf-query -c xfce4-desktop -p $i -s ~/Pictures/2.png
done
Supposons que 1.jpeg est un fichier nécessaire à la création de la chaîne par défaut. Et 2.png est l'image recherchée à définir. J'ai ajouté la première ligne juste pour m'assurer que xfce4-desktop existe.
Ce script a été testé sur ma machine et il fonctionne bien.
J'espère que ça aide mon ami
EDIT: Une liste de noms de ports a été trouvée ici comme ceci:
Noms de port de sortie
Pilote Intel - UMS
VGA - Sortie analogique VGA
LVDS - Panneau de l'ordinateur portable
DP1 - sortie DisplayPort
TV - Sortie TV intégrée
TMDS-1 - Première sortie DVI SDVO
TMDS-2 - Seconde sortie DVI SDVO
Les sorties SDVO et DVO TV ne sont pas prises en charge par le pilote pour le moment.
Pilote Intel - KMS
LVDS1 - Panneau de l'ordinateur portable
VGA1 - Sortie analogique VGA
DVI1 - sortie vidéo numérique
pilote radeon
VGA-0 - Sortie VGA analogique
LVDS - Panneau de l'ordinateur portable
S-vidéo - Sortie TV intégrée
DVI-0 - sortie DVI
Pour plus d'informations, consultez ici