obtém o status xautolock

7

Atualmente, estou usando xautolock para bloquear automaticamente minha tela com slock . No entanto, quando estou assistindo a um filme, certamente não quero que minha tela fique preta de repente. Eu li a manpage e vi que xautolock -toggle ligado a um atalho de teclado deveria me dar controle sobre a coisa toda.

Mas quero ver o status atual. Ou vou ficar confuso. Alguém sabe uma maneira de encontrar o status xautolock, ou devo fazer algo como criar um arquivo contendo o status atual e usar -enable / -disable, verificando o arquivo e notify-send ing algo?

    
por MadTux 16.07.2014 / 15:30

3 respostas

2

Você pode usar a funcionalidade incorporada na maioria dos players de mídia para gerenciar isso; funciona de forma eficaz com xautolock e seus armários.

mpv e mplayer ambos têm opções de proteção de tela:

--stop-screensaver, --no-stop-screensaver Turns off the screensaver (or screen blanker and similar mechanisms) at startup and turns it on again on exit (default: yes). The screensaver is always re-enabled when the player is paused. This is not supported on all video outputs or platforms. Sometimes it is implemented, but does not work (happens often on GNOME). You might be able to to work this around using --heartbeat-cmd instead.

Você pode ativar essa funcionalidade incluindo a linha no seu ~/.mpv/config :

stop-screensaver=yes

e desfrute da reprodução ininterrupta dos seus vídeos.

Se você estiver usando um media player que não tenha essa funcionalidade básica, poderá usar um invólucro simples para obter o mesmo efeito:

#!/usr/bin/env bash
# wrapper to prevent screen blanking when files are played from ~/Videos

usage() {
    printf "%s\n" "Usage: ${0##*/} /path/to/file"
    exit 1
}

case $# in
    1)  if [[ $1 =~ Videos ]]; then
            xset dpms 0 0 0
            xautolock -disable
            vlc "$1"
            xautolock -enable
            xset dpms 900 900 900
        else
            usage
        fi
        ;;
    *) usage
        ;;
esac
    
por 16.07.2014 / 22:53
4

Uma verificação rápida do código-fonte da versão atual, xautolock 2.2 , mostra que ele não suporta esse recurso, embora não seja muito difícil implementá-lo por conta própria se você souber um pouco sobre C e como escrever X programs.

A razão é provavelmente esta: sempre que você quiser saber o status de xautolock , você também sabe em que status você gostaria que estivesse. Então, simplesmente emita xautolock -disable se você quer que ele seja desligado, e xautolock -enable no caso contrário. Observe que todas as outras configurações de xautolock não serão afetadas ao fazer isso.

Também é possível acompanhar o status da maneira que você sugere, mas provavelmente pouco confiável e propenso a erros.

    
por 16.07.2014 / 19:32
0

Eu consegui fazer exatamente o que o OP pediu e tudo está contido na minha configuração do i3, ligado a um atalho (veja abaixo). Então eu bloqueio minha tela com Mod + o e eu alterno o bloqueio automático de tela com Mod + Shift + o onde aparece uma notificação que me diz "LOCK on" ou "LOCK OFF", dependendo do "status" do xautolock. Eu usei xautlock -exit para descobrir se ele está ou não em execução sem ter que gerenciar o status em um arquivo extra.

O script que cuida do status de toggled por si só se parece com isso

if xautolock -exit
    then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null
    else
        notify-send -u normal -t 100 -- 'LOCK on'
        xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 100 -- 'LOCKING screen ...'"
fi

Dependendo de onde você chama esse script, certifique-se de que xautolock -time ... seja executado em segundo plano (por exemplo, adicionando & ).

Do meu arquivo .i3/config :

exec --no-startup-id xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 10000 -- 'LOCKING screen'"

bindsym $mod+o exec --no-startup-id xautolock -locknow
bindsym $mod+Shift+o exec --no-startup-id "if xautolock -exit; then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null; else notify-send -u normal -t 100 -- 'LOCK on'; xautolock -time 2 -locker 'slock' -notify 10 -notifier \"notify-send -u normal -t 100 -- 'LOCKING screen ...'\"; fi"
    
por 05.04.2017 / 12:41