Por que usamos o comando sleep antes de xset dpms?

1

Eu tenho a seguinte linha para desativar a exibição do meu laptop:

sleep 1 && xset dpms force standby

sleep 1 : Coloca o encadeamento para dormir por 1 segundo.

xset dpms force standby : de man , força o sinalizador dpms a aguardar.

Quando omito o comando sleep 1 , o comando xset coloca o pc no modo de espera por 1 segundo e, em seguida, retoma automaticamente a operação normal. Mas quando combinado com o comando sleep 1 , ele coloca o pc em modo de espera indefinidamente, até que uma entrada do usuário seja detectada.

Você pode explicar a relação entre esses dois comandos e por que funciona dessa maneira?

    
por zindarod 12.05.2017 / 16:39

2 respostas

3

Quando você executa seu comando, dois eventos acontecem, "KeyPress" e "KeyRelease".

Então, quando você executar este comando pressionando o botão Enter .

xset dpms force standby

Primeiro um "KeyPress" acontece, ele fará com que o comando seja executado imediatamente e coloque o monitor em repouso, quando você soltar a tecla Enter , então "KeyRelease" acontece e é uma atividade do usuário então o monitor volta a funcionar.

Se você fizer o trabalho realmente rápido (pressionando Enter e fazendo a realimentação antes do comando ser executado), seu monitor permanecerá no estado "sleep".

Para testar isso, instale x11-xserver-utils package.

sudo apt install x11-xserver-utils

execute xev .

Agora pressione Enter para ver o que acontece; você deve ver algo mais ou menos como:

KeyPress event, serial 48, synthetic NO, window 0x2600001,
...

KeyRelease event, serial 48, synthetic NO, window 0x2600001,
...

Portanto, usamos sleep para garantir que esses eventos aconteçam antes que o comando seja executado.

    
por Ravexina 12.05.2017 / 19:28
0

Eu acho que provavelmente tem a ver com o que o sistema considera "atividade do usuário".

Se o sistema detectar atividade do teclado, ele volta do modo de suspensão. Esse fato que você pressiona entra para enviar o comando force standby como uma atividade "atual" e assim desabilita imediatamente.

O

sleep 1 garante que o teclado não tenha registrado a atividade por 1 segundo antes que o comando sleep seja enviado, portanto o modo de espera continua.

    
por teknopaul 12.05.2017 / 19:10