如何判断用户是否正在 Linux 中主动输入?

如何判断用户是否正在 Linux 中主动输入?

我想写一个小脚本,定期询问我正在做什么,但如果我正在写电子邮件或输入密码,我希望它不会夺取焦点。我想到两个选项是 (1) 通知发送/pynotify,它让我在屏幕右上角弹出一个通知气泡,这很完美,但似乎无法包含文本输入字段;(2) zenity 和类似程序,它们会弹出一个带有文本字段的窗口,但这样做会夺取焦点。

答案1

啊哈,xprintidle 似乎解决了我的难题。它可以跟踪鼠标移动以及键盘,但以毫秒为单位给出空闲时间,所以看起来已经足够好了。

http://www.dtek.chalmers.se/~henoch/text/xprintidle.html

sleep 10 
echo waiting for me not to be busy
while [ "$(xprintidle)" -lt 3000 ]; do sleep 1; done
echo interrupting
(unset WINDOWID; zenity --title "Annoyer" --entry --text "Are we there yet?")

答案2

如果在 X 中,这里有一个包含脚本监视器的帖子/dev/input/event

重要的命令是:

sudo hexdump -e '48/1 "%x " "\n"' /dev/input/event1 | awk '( $29 == 1) { print "PRESS: " $13 } ( $29 == 0 ) { print "RELEASE: " $13 }'

当然,你需要有sudo权限,否则它就会变成那篇帖子所暗示的那样……

答案3

您想要监视的用户的 ptswtail -f dev/pts/13在哪里?13w

相关内容