我正在实现一个屏幕保护程序系统,它将等待用户在 tty 上输入,如果没有收到任何输入,则会播放屏幕保护程序,直到收到输入。
我会怎样有效率的点击 tty 的用户输入(例如/dev/pts/1
)
提前致谢。
答案1
所以,这实际上主要是关于 PTY,而不是标准输入:运行进程中的按键通常不是标准输入!
因此,您需要的是一个伪 TTY 模拟器,它既能处理输入,又能保留一个计时器,记录屏幕上没有发生任何事情的时间。
tmux
可以做到这一点。安装tmux
,并创建一个tmux.conf
in ~/.config/tmux
,包含(至少)以下内容(60 s 屏幕保护程序延迟)
set -g lock-command "the program you want to be screensaver. It has to quit when a key is pressed, but that's your problem to implement"
set -g lock-after-time 60
然后你可以运行你的“主”程序
tmux new yourprogram
(或者像往常一样使用 tmux,参见大量tmux 教程)
使用reptyr
您可以将已有的程序迁移到tmux
会话中;还没有尝试不活动检测是否仍然有效。