Commande pour changer le fond d'écran dans XUbuntu

15

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, 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 l'arrière-plan n'a pas changé.

J'ai ensuite changé l'arrière-plan de l'espace-03.jpg en espace-04.jpg normalement, à partir de l'application Paramètres du bureau de XUbuntu. Puis je lance:

$ 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-imagea changé (!).

Si je modifie cette propriété, cela fonctionne très bien, mais le fait est que je dois trouver un moyen général de l'implémenter dans mon programme (Wallch).

Même Variety(qui est un très bon programme, soit dit en passant) ne fonctionne pas correctement sur ma machine et choisit de changer la propriété /backdrop/screen0/monitor0/image-pathqui ne fait rien.

Une façon serait de créer toutes les propriétés possibles et de les modifier toutes en cas de besoin, simultanément. Je n'aime pas cette solution pour 2 raisons:

  1. Plusieurs appels système qui seront nécessaires
  2. À un moment donné, je devrai prendre le chemin de l'image actuelle (afin d'ouvrir le dossier de celle-ci, copier le chemin de celle-ci, le supprimer et certaines autres fonctions que le programme fournit). Je ne saurais pas quelle propriété détient le chemin de l'image vraiment définie afin de la rendre disponible au programme.

Je ne comprends pas non plus pourquoi XFCE l'a rendu si complexe. Pourquoi une propriété ne suffirait-elle pas comme dans gsettings?

hytromo
la source
viens de l'essayer, xfconf-query -c xfce4-desktop -p / backdrop / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg fonctionne pour moi .... n'avait jamais changé mon image d'arrière-plan avant - veillez à le faire sans privilèges root car les paramètres sont spécifiques à l'utilisateur.
Wolfgang
1
@hakermania - peut-être quelque chose comme ce script dans # 9 ici - cela vous donne-t-il des idées sur la façon de procéder (ou au moins d'identifier le bon moniteur)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom
@fossfreedom voir la réponse que j'ai donnée dans la réponse ci-dessous.
hytromo

Réponses:

4

Je pense que ça devrait faire l'affaire

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 les manipuler et choisir de définir la valeur du chemin de l'image ou de la dernière 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 soit n'importe quel fichier nécessaire pour créer la chaîne par défaut. Et 2.png est l'image souhaité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 cela aide mon ami

EDIT: Une liste de noms de ports a été trouvée ici comme ceci:

Noms des ports de sortie

Pilote Intel - UMS

VGA - Sortie analogique VGA

LVDS - Panneau pour ordinateur portable

DP1 - Sortie DisplayPort

TV - Sortie TV intégrée

TMDS-1 - Première sortie DVI SDVO

TMDS-2 - Deuxième sortie DVI SDVO

Les sorties TV SDVO et DVO ne sont pas prises en charge par le pilote pour le moment.

Pilote Intel - KMS

LVDS1 - Panneau pour ordinateur portable

VGA1 - Sortie analogique VGA

DVI1 - Sortie vidéo numérique

pilote radeon

VGA-0 - Sortie analogique VGA

LVDS - Panneau pour ordinateur portable

S-vidéo - Sortie TV intégrée

DVI-0 - Sortie DVI

Pour plus d'informations, cliquez ici

kamil
la source
Pourquoi cela devrait-il faire l'affaire?
Seth
@Seth Parce que je fais une boucle sur tous les moniteurs disponibles et que je définirai la valeur appropriée pour le moniteur trouvé. soit dernière image ou image-chemin
kamil
Dans un système XFCE nouvellement installé, les valeurs n'existent même pas. Ils sont créés lorsque vous modifiez manuellement une fois l'arrière-plan de votre bureau. Donc, ce n'est pas une bonne solution à mon avis. J'inclus cette réponse dans ma question. Je dis clairement que je pourrais tous les essayer (les créer et les changer à chaque fois), mais c'est loin d'être une bonne solution au problème.
hytromo
vous pouvez créer des propriétés comme vous l'avez fait
kamil
@hakermania vérifier l'édition
kamil