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.