J'essaie d'utiliser xprintidle
pour obtenir le temps d'inactivité X (Unity) afin de pouvoir mettre mon moniteur en veille après un certain temps. (Je dois utiliser xset dpms force off
parce que mon moniteur ne se rallume pas lors de l'utilisation de paramètres d'alimentation/de suspension Ubuntu normaux. Problème différent ...) Mais xprintidle
revient à 0 ms toutes les 30 secondes, que je sois utiliser ma machine ou pas. c’est-à-dire si je déplace la souris/clique/défile ou tape sur le clavier. Je soupçonne que quelque chose fait penser à Unity que je ne suis pas inactif, mais je ne peux pas comprendre ce que cela pourrait être.
Voici une sortie montrant le problème:
x-pc-linux% while [[ $(xprintidle) -lt 60000 ]]; do
echo "$(date +%T) $(xprintidle)" && sleep 1;
done
13:24:47 12
13:24:48 917
13:24:49 1924
13:24:50 2933
13:24:51 3940
13:24:52 4946
13:24:53 5955
13:24:54 6963
13:24:55 7969
13:24:56 8976
13:24:57 9982
13:24:58 10990
.
. # snip
.
13:25:08 21061
13:25:09 22069
13:25:10 23078
13:25:11 24085
13:25:12 342
13:25:13 1350
13:25:14 2358
13:25:15 3364
13:25:16 4372
13:25:17 5380
13:25:18 6388
13:25:19 7395
13:25:20 8402
13:25:21 9409
13:25:22 10417
.
. # snip
.
13:25:35 23511
13:25:36 24519
13:25:37 25525
13:25:38 26532
13:25:39 27540
13:25:40 28549
13:25:41 29556
13:25:42 551
13:25:43 1559
13:25:44 2566
^C%
Remarquez comment le temps d'inactivité est réinitialisé à 12 secondes et à 42 secondes. (Ok, alors j'ai la réponse ultime, mais pas à cette question!)
J'ai aussi essayé de lancer w
( Qu'est-ce que la commande "w" indique en temps d'inactivité? ), mais malheureusement, il indique "? Xdm?" pour X temps d'inactivité.
x-pc-linux% w
13:37:47 up 2 days, 3:28, 4 users, load average: 1.76, 2.04, 2.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
*** :0 :0 Sat10 ?xdm? 4days 0.59s /sbin/upstart --user
*** pts/1 :0 Sat10 2:09m 0.39s 0.30s zsh
*** pts/4 :0 Sun14 0.00s 5:34 0.00s w
*** pts/12 192.168.1.144 11:20 20:11 13.41s 13.32s zsh
[Modifier] J'ai également essayé d'obtenir le temps d'inactivité directement à partir de l'extension XScreenSaver, comme cela a été fait ici dans la réponse de Andrey Sidorov, mais le même minuteur est réinitialisé toutes les 30 secondes.
Le documentation x.org mentionne seulement
Le champ inactif spécifie le nombre de millisecondes écoulées depuis la dernière entrée de l'utilisateur sur l'un des périphériques d'entrée.
En regardant la source de xprintidle
(voir ci-dessous comment j'ai fait cela), nous voyons:
This program prints the "idle time" of the user to stdout. The "idle
time" is the number of milliseconds since input was received on any
input device. If unsuccessful, the program prints a message to stderr
and exits with a non-zero exit code.
Donc, je suppose que déplacer la souris réinitialiserait le délai. Cela a du sens, car le délai en question conduit à l’effacement ou au verrouillage de l’écran.
En regardant plus loin dans le source, on voit les fonctions que xprintidle
utilise. (XScreenSaverAllocInfo()
, DPMSQueryExtension()
, etc.). La lecture de la page man
de ces fonctions vous donnera plus de détails (man XScreenSaverAllocInfo
).
Comment j'ai la source à regarder:
# Includes several set-up-the-environment steps
mkdir ${HOME}/apt-src
cd ${HOME}/apt-src
Sudo apt-get install apt-src
apt-src install xprintidle
cd xprintidle-0.2/
ls
less xprintidle.c
cd ..
apt-src remove xprintidle