我正在尝试通过在启动时运行脚本来“锁定”计算机,该脚本会打开锁定,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-)
请参阅我的回答中的解释这里。