无法使用 cron、rc.local 或 autostart 将 gsettings 设置为在启动时运行

无法使用 cron、rc.local 或 autostart 将 gsettings 设置为在启动时运行

我正在尝试通过在启动时运行脚本来“锁定”计算机,该脚本会打开锁定,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

我还尝试从其他关于在 cron 中使用 gsettings 的帖子中插入以下代码,但没有成功:

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 似乎也不起作用。

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

请参阅我的回答中的解释这里

相关内容