(Xubuntu) Як встановити шпалери за допомогою командного рядка?


11

Я багато робив у Google, але не зміг знайти рішення своєї проблеми.

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

Я сподіваюся на простий запис у хрон, але я готовий увійти у світ скриптів оболонки, якщо це потрібно.

Будь-які ідеї?

Відповіді:


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, але, здається, це не працює. Чи потрібно мені додати щось до крона, крім простого шляху до сценарію?
Іван

@John Це не працює в cron, оскільки cron працює під root привілеєм, і це специфічна для користувача інформація. спробуйте змінити команду для запуску як ваш користувач
kamil

1
Для мене --property /backdrop/screen0/monitorLVDS1/workspace0/last-imageзробив трюк.
Ільмарі Каронен

9

Для xfce4 в Xubuntu 14.04 використовуйте властивість / backdrop / screen0 / monitorDisplayPort-1 / робоча область0 / last-image замість / backdrop / screen0 / monitor0 / image-path

Вам також потрібно встановити змінну середовища 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-)

У моєму випадку я хотів обертати шпалери (випадкове зображення з вибраної папки) один раз на день, але я вмикаю свій ПК нерегулярно, тому вирішував це, запускаючи сценарій із крону кожні півгодини, але набираю чинності лише один раз день.

запис у 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. Тепер змініть фон вручну. Ви повинні побачити ім'я властивості, на яке вплинула ця зміна, у вікні терміналу. Використовуйте це ім'я властивості, якщо воно відрізняється від / backdrop / screen0 / monitorDisplayPort-1 / workpace0 / 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, чи є у мене навіть геттінг? Синтаксис команди має сенс для мене, але я не знаю, як змусити його застосувати до 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))

якщо колір фону не змінюється, встановіть стиль зображення ні

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.