Я пытаюсь использовать xprintidle, чтобы получить простоя X (Unity), чтобы я мог отключить мой монитор через определенное время. (Я должен использовать xset dpms force off, потому что мой монитор не будет возвращаться при использовании обычных настроек питания / приостановки Ubuntu. Различные проблемы ...) Но xprintidle будет сбрасываться до 0 мс каждые 30 секунд независимо от того, пользуюсь ли я своей машиной или не. то есть, я перемещаю мышь / нажимаю / прокручиваю или печатаю на клавиатуре. Я подозреваю, что что-то заставляет Unity думать, что я не праздный, но я не могу понять, что это может быть.
Вот результат, показывающий проблему:
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%
Обратите внимание, как время простоя сбрасывается на отметке 12 секунд и 42 секунды. (Хорошо, поэтому у меня есть окончательный ответ, но не на этот вопрос!)
Я также попытался запустить w (Что означает время простоя из команды «w»?), Но, к сожалению, он показывает «? xdm?» для времени простоя X.
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
[Edit] Я также попытался получить время простоя непосредственно из расширения XScreenSaver, как это сделано Что означает время простоя от «w»? команда [? d4] в ответе Андрея Сидорова, но я получаю один и тот же таймер сбрасывания каждые 30 секунд.
Документация x.org упоминает только
Поле idle указывает номер миллисекунд, поскольку последний вход был получен от пользователя на любом из устройств ввода.