Как заблокировать xscreensaver при приостановке

Hy!

Я заменил gnome-screensaver на xscreensaver, пока он прекрасно работает, но я не могу заставить его заблокировать сеанс, когда я приостанавливаю свой ноутбук.

Есть идеи, как это сделать?

Ubuntu 10.10 Dell Vostro 1310

Спасибо!

4
задан 7 June 2011 в 20:53

3 ответа

Наконец я нашел правильный способ сделать это объединение первых частей, найденных в/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...

4
ответ дан 7 June 2011 в 20:53

Следует отметить, что приведенные выше ответы устарели с момента появления systemd. Теперь, чтобы заблокировать xscreensaver, нужно либо переместить и изменить вспомогательный скрипт для systemd-sleep(8) соглашений о вызовах, либо использовать вспомогательную программу, такую ​​как xss-lock .

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

0
ответ дан 7 June 2011 в 20:53

Я не эксперт, но я думаю, что вы можете отредактировать /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

Затем попробуйте приостановить, чтобы увидеть, работает ли он, когда вы возобновите.

0
ответ дан 7 June 2011 в 20:53

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

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