(Xubuntu) Jak ustawić tapetę za pomocą wiersza poleceń?

11

Robiłem dużo google, ale nie byłem w stanie znaleźć rozwiązania mojego problemu.

Jestem nauczycielem i używam Xubuntu na niektórych komputerach studentów. Wszystko zostało całkiem dobrze zamknięte, ale nie mogę wymyślić, jak ograniczyć użytkownikom zmianę tapety bez konieczności wyłączania całej maszyny w trybie kiosku. Nie dbam o to, czy zmienią to podczas sesji roboczej, ale chciałbym utworzyć crontab, który resetuje się do oryginalnego pliku .png podczas ponownego uruchamiania.

Mam nadzieję na proste wejście do crona, ale chętnie wprowadzę się w świat skryptów powłoki, jeśli to będzie potrzebne.

Jakieś pomysły?

Jan
źródło

Odpowiedzi:

10

Tak jest w krainie Xfce

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

(Oczywiście zamień żądaną ścieżkę pliku.)

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

wyświetla wszystkie powiązane właściwości, w przypadku gdy screen0 / monitor0 nie jest tą.

Sól
źródło
Kiedy uruchamiam to w wierszu poleceń, działa to jak urok. Kiedy próbuję dodać go do crona, nic nie robi. Jakieś pomysły? `
John
Co powiesz na zamknięcie całej rzeczy w skrypcie powłoki i uruchomienie skryptu powłoki cronzamiast tego?
Chester
Utworzono skrypt powłoki i wykonano go. Działa po dwukrotnym kliknięciu i mogę uruchomić go w wierszu polecenia. Próbowałem dodać go do crona z @reboot jako czasem, ale wydaje się, że nie działa. Czy muszę dodać coś do crona oprócz ścieżki do skryptu?
Jan
@John Nie działa w cronie, ponieważ cron działa z uprawnieniami roota i jest to tło specyficzne dla użytkownika. spróbuj zmienić polecenie, aby działało jako użytkownik
kamil
1
Dla mnie --property /backdrop/screen0/monitorLVDS1/workspace0/last-imagezałatwiłem sprawę.
Ilmari Karonen,
9

W przypadku Xfce4 w Xubuntu 14.04 użyj właściwości / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image zamiast / backdrop / screen0 / monitor0 / image-path

Musisz także ustawić zmienną środowiskową DBUS_SESSION_BUS_ADDRESS w następujący sposób:

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

W moim przypadku chciałem obracać tapetę (losowy obraz z wybranego folderu) raz dziennie, ale nieregularnie włączam komputer, więc rozwiązałem go, uruchamiając skrypt z crona co pół godziny, ale działam tylko raz dzień.

wpis w crontab (dodaj go za pomocą crontab -ekomendy):

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

Uwaga: -Jeśli używasz ustawień regionalnych w języku innym niż angielski, właściwość może mieć inną nazwę. Najlepszym sposobem na znalezienie nazwy właściwości, otwarcie okna terminala i uruchomienie tej komendy:

xfconf-query -c xfce4-desktop -m

Spowoduje to włączenie monitorowania właściwości xfce4-desktop. Teraz zmień tło ręcznie. W oknie terminalu powinna zostać wyświetlona nazwa właściwości, na którą wpłynęła ta zmiana. Użyj tej właściwości, jeśli jest inna niż / background / screen0 / monitorDisplayPort-1 / workspace0 / last-image

Lucyf
źródło
2

Ustawienie image-pathnie ma wpływu na mój system (XFCE 4.12, Debian buster / sid).

Używam następujących elementów do ustawiania obrazu tła wszystkich obszarów roboczych:

xfconf-query --channel xfce4-desktop --list | grep last-image | while read path; do
    xfconf-query --channel xfce4-desktop --property $path --set <path>
done
scai
źródło
0

Próbować

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

Jest file://to wymagane.

Chester
źródło
Próbowałem bez powodzenia. Odkąd korzystam z XFCE, czy mam nawet zestawy ustawień? Składnia polecenia ma dla mnie sens, ale nie wiem, jak zastosować ją do Xubuntu.
Jan
0

Nie używaj crona. Zamiast tego użyj skryptu uruchamiania. Chociaż możesz użyć crona, ale nie wolę tego w tej sytuacji, ponieważ jest on specyficzny dla użytkownika.

Zrób to w ten sposób:

sudo vi /etc/rc.local

dodaj następujące na końcu pliku

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

i upewnij się, że zastąpiłeś YOURUSERNAME bieżącym użytkownikiem. I zastąp /usr/share/backgrounds/xfce/xfce-blue.jpg rzeczywistą ścieżką nowego obrazu tła i upewnij się, że użytkownik ma uprawnienia do odczytu obrazu

Kamil
źródło
1
Dlaczego zostało to zanegowane? OP poprosił o sposób, który działa przy ponownym uruchomieniu. Być może PO musiał zastosować go do kilku użytkowników, ale nie stwierdził tego wprost. Ta odpowiedź wydaje się dobra (choć jej nie przetestowałem). Dlaczego więc głosowanie negatywne?
Stéphane Gourichon
0

aby ustawić kolor tła xfce w skrypcie bash:

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

zabarwienie:

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

itp.

rgb to 16-bitowe dziesiętne składniki RGB.

65535 = 255 * 257. 255 = 0xFF w systemie szesnastkowym.

przekonwertować z 8-bitowego kodu szesnastkowego na 16-bitowe dziesiętne elementy RGB:

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

jeśli kolor tła się nie zmienia, ustaw styl obrazu na none

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

.... i ustaw styl wypełnienia na bryłowy

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

aby ustawić inny kolor dla każdego obszaru roboczego:

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 powiedział ^^

Mila Nautikus
źródło