Loginctlは多くのセッションをリストし、どのセッションがグラフィカルセッションであるかをプログラムで知りたいです(例:GNOMEデスクトップ)。
次の例では、GNomeデスクトップセッション、SSH接続、およびテキストセッション(getty)を開きました。
$ loginctl
SESSION UID USER SEAT TTY
3 1000 user seat0 tty2
237 1000 user pts/2
260 1000 user seat0 tty3
3 sessions listed.
$
Ctrl + Alt + F2を使用してtty2に切り替えることができるため、tty2がGNomeセッションであると推測できます。 tty3はテキストセッションです(Ctrl + Alt + F3)。 pts/2 は残りの SSH セッションです。しかし、プログラムはどれがどれであるかをどうやって知ることができますか?
注:次の方法は厳密ではないため、解決策にはならないと思います。ユーザーはおそらく新しいttyを開き、/usr/libexec/gdm-x-sessionを実行できます。これは私のプログラムをだますでしょう。
方法 1: 実行してps -aux | grep /usr/libexec/gdm-x-session
表示:
... tty2 Sl+ 00:32 0:00 /usr/libexec/gdm-x-session
方法 2: 実行してlsof /dev/tty2
表示:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gdm-x-ses 3271 user 0u CHR 4,2 0t0 23 /dev/tty2
...
答え1
loginctl
各セッションの種類を尋ねてください。
loginctl show-session -p Type 3
これはグラフィックセッションで表示または使用されますType=x11
。Type=wayland