Hy!
Я заменил gnome-screensaver на xscreensaver, пока он прекрасно работает, но я не могу заставить его заблокировать сеанс, когда я приостанавливаю свой ноутбук.
Есть идеи, как это сделать?
Ubuntu 10.10 Dell 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 для монтирования моего зашифрованного дома во время входа в систему, и pam просит мой пароль для pam_mount в сценарии, когда я использую su...
Следует отметить, что приведенные выше ответы устарели с момента появления systemd. Теперь, чтобы заблокировать xscreensaver, нужно либо переместить и изменить вспомогательный скрипт для systemd-sleep(8)
соглашений о вызовах, либо использовать вспомогательную программу, такую как xss-lock .
Я не эксперт, но я думаю, что вы можете отредактировать /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
Затем попробуйте приостановить, чтобы увидеть, работает ли он, когда вы возобновите.