如何在暂停时锁定xscreensaver

海兰!

我用xscreensaver替换了gnome-screensaver,它到目前为止工作得很好,但是当我暂停我的笔记本电脑时我无法锁定我的会话。

任何想法如何做到这一点?

Ubuntu 10.10戴尔Vostro 1310

谢谢!

最后,我找到了正确的方法来组合我在/etc/acpi/sleep.sh中找到的部分(这似乎在那里没用),而scaine指向/ usr / lib / pm-utils ……

所以适用于我的最终脚本是:/usr/lib/pm-utils/sleep.d/00xscreensaver

#!/bin/sh # Lock xscreensaver on resume from a suspend. # getXuser gets the X user belonging to the display in $displaynum. # If you want the foreground X user, use getXconsole! getXuser() { user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'` if [ x"$user" = x"" ]; then startx=`pgrep -n startx` if [ x"$startx" != x"" ]; then user=`ps -o user --no-headers $startx` fi fi if [ x"$user" != x"" ]; then userhome=`getent passwd $user | cut -d: -f6` export XAUTHORITY=$userhome/.Xauthority else export XAUTHORITY="" fi export XUSER=$user } if pidof xscreensaver > /dev/null; then for x in /tmp/.X11-unix/*; do displaynum=`echo $x | sed s#/tmp/.X11-unix/X##` getXuser; if [ x"$XAUTHORITY" != x"" ]; then export DISPLAY=":$displaynum" case "$1" in resume|thaw) sudo -u $XUSER xscreensaver-command -unthrottle ;; suspend|hibernate) sudo -u $XUSER xscreensaver-command -throttle sudo -u $XUSER xscreensaver-command -lock ;; esac fi done fi 

实际的xscreensaver命令也可以通过su(而不是sudo)调用

 su $XUSER -c "(xscreensaver-command -lock)" 

但这对我不起作用,因为我在登录时使用pam_mount挂载加密的家,当我使用su时,pam在脚本中要求输入pam_mount的密码…

我不是专家,但我认为您可以编辑/usr/lib/pm-utils/sleep.d/00powersave以在开始时添加xscreensaver-command --lock命令。

但是,这将执行两次 – 一次暂停,然后再次恢复。

编辑:这是一个更多的参与(不多),但从这个线程 ,你最好用你想要运行的命令在/usr/lib/pm-utils/sleep.d中创建你的文件。 所以完整的,这是来自终端的命令:

 sudo gedit /usr/lib/pm-utils/sleep.d/000LockScreensaver 

然后把它放在文件中并保存:

 #!/bin/sh # Lock xscreensaver on resume from a suspend. case "$1" in resume|thaw) xscreensaver-command --lock ; esac 

最后,

 sudo chmod +x /usr/lib/pm-utils/sleep.d/000LockScreensaver 

然后尝试暂停以查看恢复时它是否有效。

应该注意的是,自引入systemd以来,上述答案已经过时。 现在,要锁定xscreensaver,必须移动并修改systemd-sleep(8)调用约定的帮助程序脚本,或使用xss-lock之类的帮助程序。

参看 https://unix.stackexchange.com/questions/149959/how-to-run-systemd-user-service-to-trigger-on-sleep-aka-suspend-hibernate