Certificar-se de que o meu ambiente de trabalho está bloqueado quando entra no modo de suspensão

1

Existe uma maneira de instalar algum tipo de gancho que garante que xlock ou um programa semelhante seja chamado antes de meu laptop entrar no modo de espera, independentemente da origem da solicitação (chamando pm-suspend de um script ou apenas fechar a tampa, etc.) e o gerenciador de janelas que estou usando no momento?

(Atualmente estou usando o Debian Linux, mas suponho que haverá uma solução agnóstica de distribuição.)

    
por Petr Pudlák 28.05.2016 / 11:40

1 resposta

3

Não, como o kernel não fornece nenhum tipo de sinal de "adormecer" antes de congelar todos os processos, não há uma maneira independente de distribuição para detectá-lo.

Dito isto, praticamente todas solicitações de suspensão - incluindo o lid-close - tendem a passar por algumas APIs de espaço de usuário: eventualmente, elas chamam a função Suspend() do systemd-logind via D-Bus, ou gerar o comando pm-suspend . Ambos têm vários tipos de "ganchos" que podem ser usados para isso.

(Note que não importa o que você faça, um echo mem > /sys/power/state direto permanece quase invisível para o userspace, a não ser para assistir a saltos repentinos do relógio ...)

Então, se você usar systemd como init:

  1. Instale xss-lock e faça o seu ambiente de trabalho iniciá-lo no login (via ~/.xinitrc , via ~/.config/autostart/ , ou via qualquer outro):

    xss-lock xlock &

    Isso manipulará as notificações de pré-suspensão do systemd, bem como as chamadas manuais loginctl lock-sessions , caso você precise delas.

  2. Crie um script de gancho do pm-utils em /etc/pm/sleep.d/50lock :

    #!/bin/sh
    loginctl lock-sessions

    (Não se esqueça de chmod +x .) Você não precisa disso para regular systemd suspender, mas ele irá enviar uma notificação para xss-lock sempre que você executar manualmente pm-suspend .

Se você estiver usando outro sistema de inicialização:

Se você estiver usando pm-suspend , suponho que você possa executar xlock diretamente do script de gancho pm / sleep.d. Isso exigiria que você também configurasse diretamente as variáveis de ambiente DISPLAY e XAUTHORITY , o que é meio ruim, já que elas podem variar de inicialização para inicialização (embora algumas pessoas codifiquem :0 lá ...)

Em geral, nessa situação, os métodos específicos do ambiente de desktop podem funcionar melhor.

    
por 28.05.2016 / 14:14