loginctlでグラフィックttyを決定する方法

loginctlでグラフィックttyを決定する方法

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=x11Type=wayland

関連情報