Gsettings и Anacron

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

DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri '"file://'$wallPath'"'

($wallPath - путь к обоям)

. не когда анакрон работает. Я подумал, что это потому, что anacron запускается как root (я также проверяю dconf для root и мой пользователь проверяет это). Поэтому я нашел способ запустить анакрон от имени конкретного пользователя. Но это не сработало.

Может кто-нибудь помочь мне найти способ запуска gsettings как пользователь? Я пробовал su (имя пользователя) -c 'sh run / this / script' безрезультатно. Я нашел кое-что об экспорте некоторых переменных dbus env, но у меня возникают трудности с его отслеживанием.

3
задан 29 October 2013 в 22:56

3 ответа

В качестве root, простой sudo -u <username> <command> будет делать.

0
ответ дан 29 October 2013 в 22:56

Вы можете настроить отдельный экземпляр anacron для запуска в пользовательском режиме. Для этого создайте папку .anacron в вашем домашнем каталоге и в ней две подпапки, etc и spool.

Затем перейдите к созданию нового anacrontab во вновь созданной папке ~/.anacron/etc со следующим содержимым:

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

1   10    wallpaperchanger script.sh

где script.sh - путь к вашему сценарию (или однострочный , твой выбор). Сконфигурируйте интервал и задержку в свое удовольствие и сохраните файл как anacrontab.

Затем добавьте следующую строку в ваш файл ~/.profile:

/usr/sbin/anacron -s -t ${HOME}/.anacron/etc/anacrontab -S ${HOME}/.anacron/spool

Anacron должен быть запущен при следующем входе в систему.

Примечание : убедитесь, что $wallPath - это правильный путь к файлу, поскольку вы не учитывали пробелы и специальные символы в своем скрипте.

0
ответ дан 29 October 2013 в 22:56

Вместо использования:

DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri '"file://'$wallPath'"

попробуйте использовать:

PID=$(pgrep gnome-session)  # instead of 'gnome-session' it can be also used 'noutilus' or 'compiz' or the name of a process of a graphical program about that you are sure that is running after you log in the X session
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
gsettings set org.gnome.desktop.background picture-uri '"file://'$wallPath'"

См. Объяснение в моем ответе здесь .

0
ответ дан 29 October 2013 в 22:56

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

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