(Xubuntu) Bagaimana cara mengatur wallpaper menggunakan baris perintah?

11

Saya telah melakukan banyak googling tetapi belum dapat menemukan solusi untuk masalah saya.

Saya seorang guru dan saya menggunakan Xubuntu di beberapa komputer siswa. Saya telah mengunci semuanya dengan cukup baik, tetapi saya tidak tahu cara membatasi pengguna untuk mengubah wallpaper tanpa harus keluar seluruh mesin dalam mode Kiosk. Saya tidak peduli jika mereka mengubahnya selama sesi kerja mereka, tetapi saya ingin membuat crontab yang mengatur ulang kembali ke .png asli saat reboot.

Saya berharap untuk entri cron sederhana tapi saya bersedia untuk masuk ke dunia skrip shell jika itu yang diperlukan.

Ada ide?

John
sumber

Jawaban:

10

Di tanah Xfce, itu

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

(Ganti jalur file yang Anda inginkan, tentu saja.)

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

daftar semua properti terkait, seandainya screen0 / monitor0 bukan satu.

Garam
sumber
Ketika saya menjalankan itu di baris perintah, itu berfungsi seperti pesona. Ketika saya mencoba menambahkannya ke cron, itu tidak melakukan apa-apa. Ada ide? `
Yohanes
Bagaimana kalau menyertakan semuanya dalam skrip shell dan menjalankan skrip shell menggunakan cronsebagai gantinya?
Chester
Membuat skrip shell dan membuatnya dapat dieksekusi. Ini berjalan ketika diklik ganda dan saya bisa menjalankannya di baris perintah. Saya mencoba menambahkannya ke cron dengan @reboot sebagai waktu tetapi tampaknya tidak berfungsi. Apakah saya perlu menambahkan sesuatu ke cron selain dari path ke skrip?
John
@ John Ini tidak berfungsi di cron karena cron bekerja di bawah hak istimewa root dan ini adalah latar belakang khusus pengguna. coba ubah perintah untuk dijalankan sebagai pengguna Anda
kamil
1
Bagi saya, --property /backdrop/screen0/monitorLVDS1/workspace0/last-imagelakukan triknya.
Ilmari Karonen
9

Untuk xfce4 di Xubuntu 14.04, gunakan properti / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / gambar terakhir alih - alih / backdrop / screen0 / monitor0 / image-path

Anda juga perlu mengatur variabel lingkungan DBUS_SESSION_BUS_ADDRESS seperti ini:

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

Dalam kasus saya, saya ingin memutar wallpaper (gambar acak dari folder yang dipilih) sekali sehari, tetapi saya menyalakan PC saya secara tidak teratur, jadi saya menyelesaikannya dengan menjalankan skrip dari cron setiap setengah jam, tetapi hanya berlaku sekali satu hari.

entri di crontab (tambahkan melalui crontab -eperintah):

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

Catatan: -Jika Anda menggunakan sistem lokal non-Inggris, properti dapat memiliki nama yang berbeda. Cara terbaik untuk mengetahui nama properti, buka jendela terminal, dan jalankan perintah ini:

xfconf-query -c xfce4-desktop -m

Ini akan mengaktifkan pemantauan properti xfce4-desktop. Sekarang ubah latar belakang Anda secara manual. Anda harus melihat nama properti yang dipengaruhi oleh perubahan ini di jendela terminal. Gunakan nama properti ini jika berbeda dari / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image

Lucif
sumber
2

Pengaturan image-pathtidak berpengaruh pada sistem saya (XFCE 4.12, Debian buster / sid).

Saya menggunakan yang berikut ini untuk mengatur gambar latar belakang semua ruang kerja:

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

Mencoba

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

The file://diperlukan.

Chester
sumber
Saya mencobanya tanpa hasil. Karena saya menjalankan XFCE, apakah saya bahkan punya gsettings? Sintaks perintah masuk akal bagi saya, tapi saya tidak tahu bagaimana membuatnya berlaku untuk Xubuntu.
John
0

Jangan gunakan cron. Alih-alih menggunakan skrip startup. Meskipun Anda dapat menggunakan cron tetapi saya tidak suka dalam situasi ini karena ini adalah spesifik pengguna.

Lakukan seperti ini:

sudo vi /etc/rc.local

tambahkan berikut ini di akhir file

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

dan pastikan Anda mengganti YOURUSERNAME dengan pengguna Anda saat ini. Dan ganti / usr/share/backgrounds/xfce/xfce-blue.jpg dengan path asli gambar latar belakang baru dan pastikan pengguna Anda memiliki izin untuk membaca gambar

kamil
sumber
1
Mengapa ini diturunkan? OP meminta cara yang berpengaruh saat reboot. Mungkin OP perlu menerapkannya ke beberapa pengguna, tetapi belum secara eksplisit menyatakannya. Jawaban ini tampaknya baik-baik saja (belum diuji). Jadi, mengapa downvote?
Stéphane Gourichon
0

untuk mengatur warna latar belakang xfce dalam skrip 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

warna:

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

dll.

rgb adalah komponen RGB desimal 16bit.

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

untuk mengkonversi dari kode warna hex 8bit, ke komponen RGB desimal 16bit:

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

jika warna latar belakang tidak berubah, atur gaya gambar ke tidak ada

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

.... dan atur style fill menjadi solid

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

untuk mengatur warna berbeda untuk setiap ruang kerja:

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

kata nuff ^^

Mila Nautikus
sumber