どの tty が「フォアグラウンド」または「現在表示されている」かを判断しますか?

どの tty が「フォアグラウンド」または「現在表示されている」かを判断しますか?

Linux では、キーの組み合わせを使用してAlt-Ctrl-F1Alt-Ctrl-F2... を別のものに切り替えることtty1ができますman chvt

このコマンドを使用するとtty、現在使用しているテレタイプ/Linux 仮想コンソールも表示されます。

ただし、 またはxtermの場合はgnome-terminal、 tty は関連する疑似端末を表示します。

これらすべてを考慮すると、

  • tty現在「アクティブ」なもの(つまり、画面に表示されているもの)はどれかを知るにはどうすればよいですか?

これはある程度の解決策となるでしょう(ただし、これは複雑でloginctl logindに依存しているように見えますが、非システム調べるには):

for sessionid in $(loginctl list-sessions --no-legend | awk '{ print $1 }'); do loginctl show-session -p State -p TTY  $sessionid; done | grep "State=active" -B1 | head -n 1 | sed 's/.*=//g'

答え1

cat /sys/devices/virtual/tty/tty0/active

tty0現在の仮想コンソールを参照します(この答え)。/sys/devices/virtual/tty/tty0/activeこれを読めば、どのコンソールかが分かります。

「現在」とは、実行されている場所ではなく、表示されているものを意味しますcat。たとえば、このループを開始すると

while sleep 1; do
   cat /sys/devices/virtual/tty/tty0/active
done

実行して、手動で別のコンソールに切り替え、数秒待ってから切り替えると、確認していたときに別のコンソールが報告されたことがわかります。

関連情報