非アクティブ化後にコンソールプログラムの上でスクリーンセーバーを実行する:入力を監視する方法は?

非アクティブ化後にコンソールプログラムの上でスクリーンセーバーを実行する:入力を監視する方法は?

私はttyでユーザー入力を待つスクリーンセーバーシステムを実装しています。入力が受信されない場合は、入力が受信されるまでスクリーンセーバーを再生します。

私は何をしますか?効率的なttyをクリックしたときのユーザー入力(例/dev/pts/1:)

よろしくお願いします。

答え1

したがって、これは実際にはstdinではなくPTYに関するものです。実行中のプロセスのキーストロークは通常stdinではありません!

したがって、必要なのは、入力を処理し、画面に何も起こらないときに時間を記録するタイマーを維持できる疑似TTYエミュレータです。

tmuxこれは可能です。をインストールし(少なくとも)、次を含むintmuxを生成します(60秒のスクリーンセーバー遅延)。tmux.conf~/.config/tmux

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まだ試していないセッションに移行して、非アクティブ検出がまだ機能していることを確認できます。

関連情報