Existe uma maneira programável de saber se a tela está bloqueada com a nova interface do Unity?

0

Eu tenho muitas coisas no meu crontab, incluindo algumas que falam na minha tela. Se eu não estou lá para notificar, eu realmente não quero que seja executado.

Existe uma maneira que eu posso verificar para ver se o computador está bloqueado, para que eu possa impedi-lo de fazer as coisas quando não estou na minha mesa? Ou, alternadamente, só faço outras coisas quando não estou na minha mesa?

Sim, Eu perguntei isso pergunta antes . Agora estou no Ubuntu 14.04 e no Unity, e o ambiente mudou. Quando executo gnome-screensaver-command -q , obtenho The screensaver is inactive se a estação de trabalho está bloqueada ou não. Um novo ambiente requer uma nova resposta.

    
por Dave Jacoby 05.09.2014 / 16:27

1 resposta

2

Examinei os pacotes que mencionam unity ( apt-cache search unity ), ignorando qualquer coisa com lib , lens etc. no nome. unity-services chamou a atenção. Um dos arquivos neste pacote é /usr/share/upstart/sessions/unity-panel-service-lockscreen.conf , um trabalho Upstart contendo:

description "Backing Service for the Unity Panel"
author "Andrea Azzarone <[email protected]>"

start on desktop-lock
stop on desktop-unlock

respawn
exec /usr/lib/unity/unity-panel-service --lockscreen-mode

Como você deve ter adivinhado, esse trabalho é executado quando a tela está bloqueada. Isso oferece algumas opções:

Verifique se o comando na linha exec está em execução:

Verifique se /usr/lib/unity/unity-panel-service está sendo executado com a opção --lockscreen-mode . Observe que unity-panel-service está sempre em execução, mas quando você bloqueia a tela, outra instância é iniciada com essa opção. Então, algo como:

if pgrep -cf lockscreen-mode
then 
    # do stuff
fi

pgrep -f procura a linha de comando completa, para que possamos pesquisar para a opção.

Acho que nesse caso a página de manual de unity-panel-service está errado ou desatualizado. Diz:

% bl0ck_qu0te%

Use um trabalho Upstart

Você pode trabalhar com a configuração de trabalho acima para escrever seu trabalho do Upstart. Crie um trabalho de sessão (digamos some-job ) ~/.config/upstart/some-job.conf contendo:

description "Some script to be run when screen gets locked"

start on desktop-lock
stop on desktop-unlock

script
    # do stuff
end script

Um script inverso com os eventos start e stop trocados pode ser usado para executar coisas quando a tela está desbloqueada.

    
por muru 05.09.2014 / 23:10