Executando um script se o servidor X não estiver recebendo nenhuma entrada por algum tempo

1

Eu quero executar um determinado script quando não estiver por perto de minha máquina, para que ele seja executado automaticamente, mas isso não me incomoda quando estou trabalhando. Eu criei o script bash e coloquei na fila com o cron, mas ele não parece rodar (ele não produz o efeito necessário de abrir uma aba do navegador).

Aqui está o script localizado em /home/suseika/.bin/stackoverflowfanatic :

#!/bin/bash
idle='xprintidle' # tells how long in milliseconds x server haven't been receiving any events
required_idle_time=3600000 # one hour in milliseconds
if [[ $idle -gt $required_idle_time ]];
then
        chromium http://stackoverflow.com/
        echo idle was $idle
        xdotool mousemove 12 13 # A quick and dirty way to send an event to x server
        xdotool mousemove 12 14
        echo now idle is 'xprintidle' # for debugging
fi

O script funciona bem se eu definir required_idle_time para 0 e executá-lo manualmente com sleep 1 && stackoverflowfanatic

Aqui está como eu enfileirei com o cron:

/etc/cron.d/stackoverflow :

0,30 *     * * *     suseika /home/suseika/.bin/stackoverflowfanatic
    
por jojman 28.02.2015 / 20:01

1 resposta

1

O Cron não tem acesso à sua sessão X, por design. Você provavelmente deve executar isso em um loop de plano de fundo do seu .xsession ou semelhante.

    
por 02.03.2015 / 14:37

Tags