(Xubuntu) Как установить обои с помощью командной строки?


11

Я много гуглил, но не смог найти решение своей проблемы.

Я учитель, и я использую Xubuntu на некоторых компьютерах учеников. У меня все довольно хорошо заблокировано, но я не могу понять, как запретить пользователям менять обои, не отключая всю машину в режиме киоска. Мне все равно, если они изменят его во время рабочего сеанса, но я хотел бы создать crontab, который при перезагрузке сбрасывает исходный .png.

Я надеюсь на простую запись в cron, но я готов войти в мир сценариев оболочки, если это то, что нужно.

Есть идеи?

Ответы:


10

На земле Xfce это

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

(Замените путь к файлу, который вы хотите, конечно.)

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

перечисляет все связанные свойства, в случае, если screen0 / monitor0 не один.


Когда я запускаю это в командной строке, это работает как шарм. Когда я пытаюсь добавить его в cron, он ничего не делает. Есть идеи? `
Джон

Как насчет того, чтобы заключить все это в сценарий оболочки и запустить cronвместо этого сценарий оболочки ?
Честер

Создал скрипт оболочки и сделал его исполняемым. Он запускается при двойном щелчке, и я могу запустить его в командной строке. Я попытался добавить его в cron с помощью @reboot, но, похоже, он не работает. Нужно ли добавлять что-то в cron кроме пути к скрипту?
Джон

@John Это не работает в cron, потому что cron работает с правами суперпользователя, и это зависит от пользователя. попробуйте изменить команду для запуска от имени пользователя
kamil

1
Для меня --property /backdrop/screen0/monitorLVDS1/workspace0/last-imageсделали свое дело.
Илмари Каронен

9

Для xfce4 в Xubuntu 14.04 используйте свойство / фон / экран0 / мониторDisplayPort-1 / рабочее пространство0 / последнее изображение вместо / фон / экран0 / монитор0 / путь к изображению

Вам также необходимо установить переменную среды DBUS_SESSION_BUS_ADDRESS следующим образом:

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

В моем случае я хотел вращать обои (случайное изображение из выбранной папки) один раз в день, но я включал свой компьютер нерегулярно, поэтому я решил это, запуская скрипт из cron каждые полчаса, но вступая в силу только один раз день.

запись в crontab (добавьте через crontab -eкоманду):

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

Примечание. - Если вы используете неанглийский язык системы, свойство может иметь другое имя. Лучший способ узнать имя свойства, открыть окно терминала и выполнить эту команду:

xfconf-query -c xfce4-desktop -m

Это включит мониторинг свойств xfce4-desktop. Теперь измените свой фон вручную. Вы должны увидеть имя свойства, на которое повлияло это изменение, в окне терминала. Используйте это имя свойства, если оно отличается от / background / screen0 / monitorDisplayPort-1 / workspace0 / last-image


2

Настройка image-pathне влияет на мою систему (XFCE 4.12, Debian buster / sid).

Я использую следующее для установки фонового изображения всех рабочих пространств:

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

0

Пытаться

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

file://Требуется.


Я попробовал это без всякой удачи. Так как я использую XFCE, у меня вообще есть gsettings? Синтаксис команды имеет смысл для меня, но я не знаю, как применить его к Xubuntu.
Джон

0

Не используйте cron. Вместо этого используйте скрипт запуска. Хотя вы можете использовать cron, но я не предпочитаю его в этой ситуации, потому что это зависит от пользователя.

Сделай это так:

sudo vi /etc/rc.local

добавить следующее в конце файла

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

и убедитесь, что вы заменили YOURUSERNAME вашим текущим пользователем. И замените /usr/share/backgrounds/xfce/xfce-blue.jpg реальным путем нового фонового изображения и убедитесь, что у вашего пользователя есть разрешение на чтение изображения


1
Почему это было отвергнуто? ОП запросил способ, который влияет при перезагрузке. Возможно, ОП нужно было применить его к нескольким пользователям, но это прямо не указано. Этот ответ кажется нормальным (пока не проверял). Итак, почему отрицательный голос?
Стефан Гурихон

0

установить цвет фона xfce в скрипте 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

цвета:

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

и т.п.

RGB - 16-битные десятичные RGB-компоненты.

65535 = 255 * 257. 255 = 0xFF в гексе.

для преобразования из 8-битного шестнадцатеричного цветового кода в 16-битные десятичные RGB-компоненты:

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

если цвет фона не меняется, установите стиль изображения на none

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

.... и установите стиль заливки на сплошной

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

установить разные цвета для каждого рабочего пространства:

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

ничего не сказал ^^

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.