Então, baixem o programa porque não era para ele aparecer somente em uma única linha. Tá indentado bonitinho.. A menos que tenha feito isso no Windows. O final de linha do Windows é diferente do formato usado no Unix. =). Façam assim:
$ wget
http://dl.dropbox.com/u/1281922/files/software/xidle.c
e daí creio que estará tudo certo. Se não, eis o código em um pastebin da vida:
http://c.pastebin.com/XPkwzqR0 . Compilem conforme instruções no próprio arquivo.
@agavioli, Então, esses includes são bibliotecas que são necessárias para que se possa usar determinadas funções ou variáveis. No caso, precisei da estrutura 'XScreenSaverInfo', das funções 'XScreenSaverAllocInfo()', 'XScreenSaverQueryInfo()' e 'Xfree()', onde eu poderia obter as informações referentes ao tempo ocioso em uma sessão do X, além de outras que estão declaradas nos arquivos de cabeçalho 'X11/extensions/scrnsaver.h' e 'X11/Xlibint.h'. Se eu não adicionar isso, o compilador não irá saber de que função eu estou falando. Além do que, existe o clássico arquivo de cabeçalho 'stdio.h' que me permite usar a função 'printf' e 'fprintf'.
@Sr. Guil, depois de compilado e com o programa no PATH, você pode pode apenas acessar ele como um comando qualquer do sistema:
---------------------------------
$ sleep 5 && xidle
5 s
---------------------------------
O sleep eu só coloquei para simular uma inatividade. No script, você chama direto o comando xidle e pega o primeiro campo para tirar aquele 's' de lá:
xidle | cut -f 1 -d' '
Note que se você fazer isso pelo terminal direto, sempre vai obter um 0 como resposta, já que acabou de dar um ENTER para executar o programa..
Como eu disse, deve já existir alguma maneira implementada de monitorar uma sessão ociosa do X e tudo mais, mas como não achei, escrevi esse programa como quebra galho.
=)