web-dev-qa-db-fra.com

Comment un script peut-il détecter le temps d'inactivité d'un utilisateur?

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 ...).

32
josinalvo

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.

38
josinalvo

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

3
Dan