Como configurar o XFCE (ou o próprio X ou qualquer outro) para executar um comando personalizado quando o usuário estiver ocioso por algum tempo?

3

Por enquanto eu me lembro de travar a tela com o protetor de tela nunca tinha funcionado bem. O problema que sempre existiu é que quando eu movo o mouse ou pressiono um protetor de tela de chave desaparece fazendo a tela visível, então um segundo passa e só depois aparece a tela de bloqueio - isso parece e parece um bug e pode ser muito indesejável se você não quiser que outras pessoas vejam o que você estava fazendo quando saiu da mesa.

Agora, como eu instalei o Xubuntu mais recente com o XFCE 4.12, há outro problema (além do primeiro descrito acima): ele não bloqueia a tela ou faz isso duas vezes (então eu tenho que entrar no senha 2 vezes para desbloqueá-lo)

O primeiro problema já foi discutido muitas vezes e ninguém parece ter encontrado uma solução até agora.

Mas eu descobri acidentalmente ontem:

chamando xscreensaver-command -lock inicia o protetor de tela, bloqueia a tela e faz isso da maneira certa - a área de trabalho não fica exposta quando o protetor de tela desaparece se for lançado dessa forma.

Então gostaria que desabilitasse os recursos de gerenciamento de protetor de tela / tela de bloqueio nativos do ambiente de desktop / gerenciador de exibição e deixasse executar apenas o comando que defino quando estou ausente , simples como isso, bonita "maneira unix" -ish. Como isso pode ser alcançado?

    
por Ivan 24.01.2016 / 14:32

1 resposta

0

A abordagem em que pensei foi um script de loop infinito que verifica o tempo ocioso e executa o comando de bloqueio, se ainda não estiver em execução. Isso não funcionará com o xscreensaver, já que é um modelo cliente / servidor, mas como você disse "comando personalizado" em sua pergunta, eu tomei a liberdade de usar o slack muito simples do screenlocker.

Você precisará instalar dois pacotes para que isso funcione. xprintidle e slock . Ambos estão disponíveis no apt.

Coloque o seguinte script em algum lugar e torne-o executável. Ajuste o LOCK conforme desejado. 600000 = 10 minutos.

#!/bin/sh
DISPLAY=":0"
# in ms
LOCK=600000
while :
do
  IDLE=$(xprintidle)
  if [ $IDLE -gt $LOCK ]; then
    slock
  fi
  sleep 1
done

De acordo com o link , você pode adicionar o script à sua inicialização assim:

To launch custom applications when Xfce starts up, click the Applications Menu Settings > Settings Manager and then choose the Session and Startup option and click the tab Application Autostart. You will see a list of programs that get launched on startup. To add an entry, click the Add button and fill out the form, specifying the path to an executable you want to run.

Você certamente quer ter certeza de que o xscreensaver está desativado.

EDIT: Originalmente, preparei o slock e usei o pgrep para ver se o processo estava sendo executado. Eu percebi que era desnecessário e apenas permiti que o slock fosse um processo de bloqueio. Alterado de acordo.

    
por 04.02.2016 / 22:42