(Xubuntu) Wie stelle ich das Hintergrundbild über die Befehlszeile ein?

11

Ich habe viel gegoogelt, aber keine Lösung für mein Problem gefunden.

Ich bin Lehrer und verwende Xubuntu auf einigen Schülercomputern. Ich habe alles ziemlich gut gesperrt, aber ich kann nicht herausfinden, wie Benutzer daran gehindert werden können, das Hintergrundbild zu ändern, ohne den gesamten Computer im Kiosk-Modus ausschalten zu müssen. Es ist mir egal, ob sie es während ihrer Arbeitssitzung ändern, aber ich möchte eine Crontab erstellen, die beim Neustart auf die ursprüngliche .png zurückgesetzt wird.

Ich hoffe auf einen einfachen Cron-Eintrag, bin aber bereit, in die Welt der Shell-Skripte einzutauchen, wenn es das ist, was es braucht.

Irgendwelche Ideen?

John
quelle

Antworten:

10

Im Xfce-Land ist das so

xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg

(Ersetzen Sie natürlich den gewünschten Dateipfad.)

xfconf-query --channel xfce4-desktop --list

listet alle zugehörigen Eigenschaften auf, falls screen0 / monitor0 nicht die richtige ist.

Salz
quelle
Wenn ich das in der Kommandozeile ausführe, funktioniert es wie ein Zauber. Wenn ich versuche, es zu cron hinzuzufügen, macht es nichts. Irgendwelche Ideen? `
John
Wie wäre es, wenn Sie das Ganze in ein Shell-Skript einschließen und cronstattdessen das Shell-Skript ausführen ?
Chester
Erstellt das Shell-Skript und macht es ausführbar. Es wird ausgeführt, wenn Sie darauf doppelklicken, und ich kann es in der Befehlszeile ausführen. Ich habe versucht, es mit @reboot als Zeit zu cron hinzuzufügen, aber es scheint nicht zu funktionieren. Muss ich etwas anderes zu cron hinzufügen als nur den Pfad zum Skript?
John
@ John Es funktioniert nicht in Cron, da Cron unter Root-Rechten arbeitet und dies ein benutzerspezifischer Hintergrund ist. Versuchen Sie, den Befehl so zu ändern, dass er als Ihr Benutzer ausgeführt wird
kamil
1
Für mich --property /backdrop/screen0/monitorLVDS1/workspace0/last-imagehat der Trick getan.
Ilmari Karonen
9

Verwenden Sie für xfce4 in Xubuntu 14.04 die Eigenschaft / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image anstelle von / backdrop / screen0 / monitor0 / image-path

Sie müssen auch die Umgebungsvariable DBUS_SESSION_BUS_ADDRESS wie folgt festlegen:

PID=$(pgrep xfce4-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

In meinem Fall wollte ich das Hintergrundbild (zufälliges Bild aus einem ausgewählten Ordner) einmal am Tag drehen, aber ich schalte meinen PC unregelmäßig ein, sodass ich es gelöst habe, indem ich jede halbe Stunde ein Skript von cron ausgeführt habe, das jedoch nur einmal wirksam wird ein Tag.

Eintrag in crontab (über crontab -eBefehl hinzufügen ):

0,30 * * * * /home/lucifer/scripts/rotate-wallpaper.sh

rotate-wallpaper.sh:

#!/bin/bash
wallpaperdir="/home/lucifer/Pictures/wallpapers"
datefile="/home/lucifer/.wallsw"
thisday=$( date +%j )
wallfiles=($wallpaperdir/*)
randompic=`printf "%s\n" "${wallfiles[RANDOM % ${#wallfiles[@]}]}"`
PID=$(pgrep xfce4-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

if [ -f "$datefile" ]
then
    lastday=$( cat "$datefile" )
    if [ "$lastday" != "$thisday" ]
    then    
        date +%j > "$datefile"
        xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic 
    fi
else
    date +%j > "$datefile"
    xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic
fi

Hinweis: -Wenn Sie ein nicht englisches Systemgebietsschema verwenden, kann die Eigenschaft einen anderen Namen haben. Der beste Weg, um den Eigenschaftsnamen herauszufinden, ein Terminalfenster zu öffnen und diesen Befehl auszuführen:

xfconf-query -c xfce4-desktop -m

Dadurch wird die Überwachung der xfce4-Desktop-Eigenschaften aktiviert. Ändern Sie nun Ihren Hintergrund manuell. Der Eigenschaftsname, der von dieser Änderung betroffen war, sollte im Terminalfenster angezeigt werden. Verwenden Sie diesen Eigenschaftsnamen, wenn er sich von / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image unterscheidet

Lucif
quelle
2

Rahmen image-path hat auf meinem System keine Auswirkung (XFCE 4.12, Debian Buster / Sid).

Ich verwende Folgendes zum Einstellen des Hintergrundbilds aller Arbeitsbereiche:

xfconf-query --channel xfce4-desktop --list | grep last-image | while read path; do
    xfconf-query --channel xfce4-desktop --property $path --set <path>
done
scai
quelle
0

Versuchen

gsettings set org.gnome.desktop.background picture-uri file:///your/picture/location.jpg

Das file://ist erforderlich.

Chester
quelle
Ich habe es ohne Glück versucht. Habe ich überhaupt Gsettings, seit ich XFCE verwende? Die Syntax des Befehls ist für mich sinnvoll, aber ich weiß nicht, wie ich ihn auf Xubuntu anwenden soll.
John
0

Benutze kein Cron. Verwenden Sie stattdessen das Startskript. Sie können zwar cron verwenden, aber ich bevorzuge es in dieser Situation nicht, da es benutzerspezifisch ist.

Mach es so:

sudo vi /etc/rc.local

Fügen Sie am Ende der Datei Folgendes hinzu

sudo -u YOURUSERNAME -g $( id -g YOURUSERNAME ) xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg

und stellen Sie sicher, dass Sie IHREN BENUTZERNAME durch Ihren aktuellen Benutzer ersetzen. Ersetzen Sie /usr/share/backgrounds/xfce/xfce-blue.jpg durch den tatsächlichen Pfad des neuen Hintergrundbilds und stellen Sie sicher, dass Ihr Benutzer die Berechtigung zum Lesen des Bildes hat

Kamil
quelle
1
Warum wurde das abgelehnt? Das OP forderte einen Weg an, der sich beim Neustart auswirkt. Möglicherweise musste das OP es auf mehrere Benutzer anwenden, hat dies jedoch nicht ausdrücklich angegeben. Diese Antwort scheint in Ordnung zu sein (habe sie jedoch nicht getestet). Warum also die Abwertung?
Stéphane Gourichon
0

So legen Sie die xfce-Hintergrundfarbe im Bash-Skript fest:

d=0; r=$d; g=$d; b=$d; \
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/color1 \
-s $r -s $g -s $b -s 65535

Farben:

black: d=0;
white: d=65535;
red:   r=65535; g=0; b=0;

etc.

RGB sind 16-Bit-Dezimal-RGB-Komponenten.

65535 = 255 * 257. 255 = 0xFF in hex.

Konvertieren von 8-Bit-Hex-Farbcode in 16-Bit-Dezimal-RGB-Komponenten:

x='C31717' # dark red
r=$((16#${x:0:2} * 257))
g=$((16#${x:2:2} * 257))
b=$((16#${x:4:2} * 257))

Wenn sich die Hintergrundfarbe nicht ändert, setzen Sie den Bildstil auf Keine

xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/image-style \
-s 0

.... und setze den Füllstil auf solid

xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/color-style \
-s 0

So legen Sie für jeden Arbeitsbereich eine andere Farbe fest:

xfconf-query -c xfce4-desktop \
-p /backdrop/single-workspace-mode \
-s false

i=1; # workspace id
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/image-style \
-s 0
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/color-style \
-s 0
x=0; r=$x; g=$x; b=$x; \
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace$i/color1 \
-s $r -s $g -s $b -s 65535

Nuff sagte ^^

Mila Nautikus
quelle