Befehl zum Ändern des Hintergrundbilds in XUbuntu

15

Bei einer Google-Suche wird der Befehl angezeigt

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>

Beim ersten Ausführen dieses Befehls wurde die Meldung angezeigt, dass die Eigenschaft / backdrop / screen0 / monitor0 / image-path im Kanal xfce4-desktop nicht vorhanden ist.

Also habe ich diese Eigenschaft erstellt:

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>

Der Hintergrund änderte sich jedoch nicht.

Ich habe dann den Hintergrund von space-03.jpg in space-04.jpg geändert, normalerweise in der Anwendung Desktop Settings von XUbuntu. Dann laufe ich:

$ 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

Wie Sie sehen, hat sich die Eigenschaft /backdrop/screen0/monitorLVDS1/workspace0/last-imagegeändert (!).

Wenn ich diese Eigenschaft ändere, funktioniert sie einwandfrei, aber ich muss einen allgemeinen Weg finden, um sie in mein Programm (Wallch) zu implementieren.

Sogar Variety(was übrigens ein sehr nettes Programm ist) funktioniert auf meinem Computer nicht richtig und entscheidet sich dafür, die Eigenschaft zu ändern, die /backdrop/screen0/monitor0/image-pathnichts bewirkt.

Eine Möglichkeit wäre, alle möglichen Eigenschaften zu erstellen und bei Bedarf gleichzeitig zu ändern. Diese Lösung gefällt mir aus zwei Gründen nicht:

  1. Es werden mehrere Systemaufrufe benötigt
  2. Irgendwann muss ich den Pfad des aktuellen Bildes angeben (um den Ordner zu öffnen, den Pfad des Bildes zu kopieren, es zu löschen und einige andere Funktionen, die das Programm bereitstellt). Ich würde nicht wissen, welche Eigenschaft den Pfad des wirklich festgelegten Bildes enthält, um es dem Programm zur Verfügung zu stellen.

Ich verstehe auch nicht, warum XFCE es so komplex gemacht hat. Warum würde eine Immobilie nicht ausreichen wie in gsettings?

hytromo
quelle
habe es gerade ausprobiert, xfconf-query -c xfce4-desktop -p / background / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg hat sich für mich nie geändert mein Hintergrundbild vorher - achten Sie darauf, dass Sie keine root-Rechte haben, da die Einstellungen benutzerspezifisch sind.
Wolfgang
1
@hakermania - vielleicht so etwas wie dieses Skript in # 9 hier - gibt Ihnen dies einige Ideen zur weiteren Vorgehensweise (oder zumindest zur Identifizierung des richtigen Monitors)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom
@fossfreedom siehe die antwort die ich in der antwort unten gegeben habe.
Hytromo

Antworten:

4

Ich denke, das sollte den Job machen

Verwenden Sie den folgenden Code, um die angeschlossenen Geräte abzurufen und zu zählen:

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)

dann müssen Sie sie manipulieren und wählen, ob Sie den Wert für den Bildpfad oder das letzte Bild festlegen möchten

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

Angenommen, 1.jpeg ist eine beliebige Datei, die nur zum Erstellen der Zeichenfolge benötigt wird. Und 2.png ist das gewünschte Bild, das eingestellt werden soll. Ich habe die erste Zeile hinzugefügt, um sicherzustellen, dass xfce4-desktop existiert.

Dieses Skript wurde auf meinem Computer getestet und funktioniert gut.

Hoffe das hilft meinem Freund

EDIT: Eine Liste von Portnamen wurde hier so gefunden:

Namen der Ausgabeports

Intel Treiber - UMS

VGA - Analoger VGA-Ausgang

LVDS - Laptop-Panel

DP1 - DisplayPort-Ausgang

TV - Integrierter TV-Ausgang

TMDS-1 - Erster DVI SDVO-Ausgang

TMDS-2 - Zweiter DVI SDVO-Ausgang

Die SDVO- und DVO-TV-Ausgänge werden derzeit vom Treiber nicht unterstützt.

Intel Treiber - KMS

LVDS1 - Laptop-Panel

VGA1 - Analoger VGA-Ausgang

DVI1 - Digitaler Videoausgang

Radeon-Fahrer

VGA-0 - Analoger VGA-Ausgang

LVDS - Laptop-Panel

S-Video - Integrierter TV-Ausgang

DVI-0 - DVI-Ausgang

Weitere Infos findest du hier

kamil
quelle
Warum sollte das den Job machen?
Seth
@Seth Weil ich alle verfügbaren Monitore durchschleife und den entsprechenden Wert für den gefundenen Monitor einstelle. entweder last-image oder image-path
kamil
In einem neu installierten XFCE-System existieren die Werte nicht einmal. Sie werden erstellt, wenn Sie den Desktop-Hintergrund einmal manuell ändern. Das ist meiner Meinung nach keine gute Lösung. Ich füge diese Antwort meiner Frage hinzu. Ich sage ganz klar, dass ich sie alle ausprobieren könnte (jedes Mal neu erstellen und ändern), aber dies ist keine gute Lösung für das Problem.
Hytromo
Sie können Eigenschaften erstellen, wie Sie es getan haben
kamil
@ Hakermania überprüfen Sie die Bearbeitung
kamil