Je veux vérifier, dans un script bash, depuis combien de temps l'utilisateur d'une session X est inactif.
L'utilisateur lui-même ne doit pas nécessairement utiliser bash, mais seulement X. Si l'utilisateur vient de déplacer la souris, par exemple, une bonne réponse serait "inactif pendant 0 secondes". S'il n'a pas touché l'ordinateur en 5 minutes, une bonne réponse serait "inactif pendant 300 secondes"
La raison pour ne pas utiliser immédiatement xautolock est de pouvoir implémenter un comportement complexe. Par exemple, si l'utilisateur reste inactif pendant 10 minutes, essayez de le suspendre. S'il est inactif pendant plus de 5 minutes, fermez-le (je sais que ça a l'air bizarre, mais suspendre ne fonctionne pas toujours ici ...).
Je viens de trouver un moyen simple de le faire.
Il y a un programme appelé xprintidle qui fait le tour
obtenir le temps d'inactivité (en millisecondes) est aussi simple que
xprintidle
et installer
apt-get install xprintidle
Pour les administrateurs système, cela fonctionne aussi à distance
Depuis un session ssh:
export DISPLAY=:0 && Sudo -u john xprintidle
où john est l'utilisateur connecté à la session X sur la machine distante.
Réponse de ici :
En bash
w | tr -s " " | cut -d" " -f1,5 | tail -n+3
vous donne une paire nom d'utilisateur/idletime pour chaque shell. Donc, fondamentalement, vous pouvez obtenir les informations d'inactivité à l'aide de la commande w