Como bloquear xscreensaver em suspender

4

Hy!

Eu substituí o gnome-screensaver pelo xscreensaver, ele funciona muito bem até agora, mas não consigo bloqueá-lo quando suspendo o meu laptop.

Alguma ideia de como fazer isso?

Ubuntu 10.10 Dell Vostro 1310

Obrigado!

    
por u-foka 08.01.2011 / 12:13

3 respostas

4

Finalmente eu encontrei o jeito certo de fazer isso combinando as partes que eu encontrei em /etc/acpi/sleep.sh (que parece não ser usado lá), e Scaine apontou em / usr / lib / pm-utils ...

Então o roteiro final que funciona para mim é: /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

Os comandos reais do xscreensaver também podem ser chamados através do su (ao invés de sudo) como

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

mas isso não funciona para mim porque eu uso pam_mount para montar minha casa criptografada durante o login, e pam pede minha senha para pam_mount no script quando eu uso su ...

    
por u-foka 09.01.2011 / 02:36
1

Não sou especialista, mas acho que você pode editar /usr/lib/pm-utils/sleep.d/00powersave para adicionar o comando xscreensaver-command --lock no início.

Isso, no entanto, será executado duas vezes - uma vez quando você suspender e, novamente, quando você reiniciar.

Editar: Isso é um pouco mais complicado (não muito), mas a partir de este tópico , parece que você está melhor criando seu arquivo em /usr/lib/pm-utils/sleep.d com o comando que você deseja executar. Então, na íntegra, aqui estão os comandos do terminal:

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

Em seguida, coloque isso no arquivo e salve:

#!/bin/sh

# Lock xscreensaver on resume from a suspend.

case "$1" in resume|thaw)
    xscreensaver-command --lock ;
esac

E finalmente,

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

Em seguida, tente uma suspensão para ver se funciona quando você retomar.

    
por Scaine 08.01.2011 / 12:31
1

Deve-se notar que as respostas acima estão desatualizadas desde a introdução do systemd. Agora, para bloquear o xscreensaver, é preciso mover e modificar o script auxiliar para convenções de chamada systemd-sleep(8) ou usar um programa auxiliar como xss Bloquear .

Cf. link

    
por Josip Rodin 18.02.2018 / 23:02