Невозможно настроить gsettings для работы при загрузке с использованием cron, rc.local или автозапуска

Я пытаюсь «заблокировать» компьютер, запустив скрипт при загрузке, который включает блокировку, экран блокировки через 10 минут и требует пароль и т. Д. Я использую Ubuntu 12.04

Я пытался редактировать crontab, anacrontab, а также rc.local для запуска моего скрипта или вставки кода из скрипта в файлы, и я не могу заставить что-либо работать.

Есть идеи?

* это единственный способ заставить команды запускаться в скрипте вручную *

(su - $(logname) -c "gsettings set org.gnome.desktop.screensaver lock-enabled true")

(su - $(logname) -c "gsettings set org.gnome.desktop.screensaver lock-delay 600")

(su - $(logname) -c "gsettings set org.gnome.desktop.screensaver ubuntu-lock-on-suspend true")

(su - $(logname) -c "gsettings set org.gnome.desktop.screensaver user-switch-enabled false")

* Эти Команды работают, если они введены в терминал вручную *

gsettings set org.gnome.desktop.screensaver lock-enabled true
gsettings set org.gnome.desktop.screensaver lock-delay 600
gsettings set org.gnome.desktop.screensaver ubuntu-lock-on-suspend true
gsettings set org.gnome.desktop.screensaver user-switch-enabled false

Я также попытался вставить следующий код из других постов об использовании gsettings в cron безуспешно:

DISPLAY=:0 
GSETTINGS_BACKEND=dconf
sessionfile=`find "${HOME}/.dbus/session-bus/" -type f`
export `grep "DBUS_SESSION_BUS_ADDRESS" "${sessionfile}" | sed '/^#/d'`

Также я дважды проверил, что мой скрипт был исполняемым и создан /home/username/.config/autostart/screenlock.desktop:

[Desktop Entry]
Type=Application
Exec=/path/screenlock.sh
Terminal=False
Hidden=true
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name[en_US]=screen lock
Name=screen lock

Также добавление /path/screenlock.sh в bash.rc или .profile работать так же.

3
задан 31 January 2013 в 00:03

1 ответ

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

DISPLAY=:0 
GSETTINGS_BACKEND=dconf
sessionfile=`find "${HOME}/.dbus/session-bus/" -type f`
export `grep "DBUS_SESSION_BUS_ADDRESS" "${sessionfile}" | sed '/^#/d'`

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

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-)

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

0
ответ дан 31 January 2013 в 00:03

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

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