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

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

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

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

Есть идеи?

11
задан 22 November 2013 в 02:11

6 ответов

В Xfce land это

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 isn ' т один.

0
ответ дан 22 November 2013 в 02:11

Для xfce4 в Xubuntu 14.04 используйте свойство / фон / экран0 / monitorDisplayPort-1 / workspace0 / last-image вместо / фон / экран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

0
ответ дан 22 November 2013 в 02:11

Настройка 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
ответ дан 22 November 2013 в 02:11

Попробуйте

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

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

0
ответ дан 22 November 2013 в 02:11
  • 1
    В этом случае Вы могли просто сделать ZQ в режиме Normal, хотя требуется некоторый перемонтаж для запоминания!:) – Kenny John Jacob 20 May 2015 в 14:58

Не используйте хрон. Вместо этого используйте скрипт запуска. Хотя вы можете использовать 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 реальным путем нового фонового изображения и убедитесь, что у вашего пользователя есть разрешение на чтение изображения

0
ответ дан 22 November 2013 в 02:11

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

и т. Д.

r g b - 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))

, если цвет фона не изменяется, задайте для стиля изображения значение

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

... и установите стиль заливки в solid

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

nuff said ^^

0
ответ дан 22 November 2013 в 02:11

Другие вопросы по тегам:

Похожие вопросы: