Por que o bloqueio da área de trabalho para de funcionar após algum tempo?

14

xautolockestá claramente em execução :

$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock

No entanto, quando tento bloqueá-lo :

$ xautolock -locknow
Could not locate a running xautolock.

Se eu girar outro xautolock, funciona:

$ xautolock -time 10 -notify 30 -notifier "notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds'" -locker slock&
[2] 18828
$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
user   18828  0.0  0.0  20124  2708 pts/1    S    08:30   0:00      \_ xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
$ xautolock -locknow # Runs fine and locks the desktop

O que da?

Até agora eu já vi isso no meu desktop e laptop. Observe que pelo menos a primeira vez após o bloqueio de inicialização funciona bem. Somente após algum tempo ou evento desconhecido é que começa a falhar.


Eu não fui capaz de reproduzir isso de forma confiável. Ou seja, tentei as seguintes abordagens no meu laptop e, em ambos os casos, o atalho / comando do protetor de tela realmente bloqueia a área de trabalho depois:

  1. Feche a tampa
  2. Aguarde o computador hibernar
  3. Abra a tampa
  4. Pressione o botão liga / desliga
  5. Forneça a senha de login seguida por Enter

e

  1. Bloquear a área de trabalho
  2. Os mesmos passos acima

Rastreando o código:

  1. A linha que imprime a mensagem de erro :error1 ("Could not locate a running %s.\n", progName);
  2. Isso acontece se messageToSendfor verdade etype != XA_INTEGER
  3. Parece que typeestá definido na seguinte declaração:

    (void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False,
                               AnyPropertyType, &type, &format,
                               &nofItems, &after,
                               (unsigned char**) &contents);
    

Isso significa que se a execução xautolocké detectada pode depender da janela que está focada? Também estou querendo saber se esta chamada pode estar relacionada a este bug conhecido :

  1. As opções -disable, -enable, -toggle, -itit, -locknow, -unlocknow e -restart dependem do acesso ao servidor X para fazer seu trabalho. Isso implica que eles serão suspensos caso algum outro aplicativo pegue o servidor por si só.

É possível que xautolockconflitos com xss-lockambos estejam sendo usados slock? Além da xautolocklinha acima, também tenho esta linha em .xprofile :

xss-lock slock &

Uma vez que tanto xautolocke xss-lockpode chamar slock, eu estou suspeitar que o problema é algo como isto:

Desde que xss-lockpode detectar o sono do laptop, eu gostaria de usá-lo em vez de xautolock, mas não consigo xss-locktrabalhar notify-send.

l0b0
fonte
Qual unix você está usando?
kasperd
Estou com esse mesmo problema. Eu não olhei muito profundamente, mas gostaria de saber uma resposta também.
precisa saber é o seguinte
Como você está começando? Eu encontrei a mesma coisa recentemente, quando iniciá-lo a partir de .xinitrc: eu mudei para um --userarquivo de serviço e já não é um problema ...
jasonwryan
1
A reprodução de um vídeo com mpv (mas não o mplayer) desencadeia o problema para mim. Ambos os jogadores têm configurações vazias.
JRM
1
Uma solução não-ideal para esse gatilho é adicionar stop-screensaver=noa ~/.mpv/config. Obviamente, isso significa que você deve desativar manualmente o bloqueio ao reproduzir vídeos com mpv.
JRM

Respostas:

5

Para mim, o processo xautolock ainda estava sendo executado em segundo plano, mas não estava ouvindo nenhum xautolock -locknowcomando. Conforme mencionado por @jrm, um aplicativo deve suprimir o "protetor de tela" . Para nós dois, isso ocorreu porque o mpv (player de vídeo) desativou o protetor de tela.

Para mpv, a correção é adicionar o seguinte a ~/.config/mpv/configou ~/.mpv/config:

stop-screensaver=no

Se você não usar mpv, pode ser outro aplicativo que desativa o protetor de tela. Experimente alguns mais usados ​​para ver qual é.


Se você deseja impedir o bloqueio automático da tela durante a reprodução de vídeo , uma maneira comum é usar o recurso "cantos" do xautolock:

xautolock -corners 000- -cornersize 30

Com o comando acima, se você colocar o cursor do mouse no canto inferior direito da tela (dentro de um raio de 30px), o bloqueio automático será temporariamente desativado.


Mais uma coisa a tentar é a -resetsaveropção:

xautolock -resetsaver

Ou a -detectsleepopção:

xautolock -detectsleep
Mateen Ulhaq
fonte
Boas dicas, obrigado! Eu conheço o bloqueio de tela do meu player de vídeo (VLC) há muitos anos, mas sinceramente esse problema está agora tão distante que não me lembro se minha mente simplesmente ignorou esse fato. De qualquer forma eu parei de usar xautolock, então a questão é um pouco discutível agora. Marcar como aceito como a resposta mais útil até o momento. Se alguém tiver exatamente o mesmo problema, eu posso excluir esta pergunta para evitar uma duplicata.
L0b0