スクリプトから現在のウィンドウクラス名を取得する方法は?

スクリプトから現在のウィンドウクラス名を取得する方法は?

私のスクリプトでは、現在アクティブなアプリケーションに基づいてさまざまなタスクを実行したいと思います。現在アクティブなウィンドウクラス名を取得するには?

非常に似た質問があります。xdotool:現在のウィンドウがbashスクリプトの特定のクラスに属しているかどうかをテストする方法は?ところで、アクティブウィンドウとクラス名で検索されたウィンドウが同じであることを確認したいだけです。実際にクラス名を取得したいです。

私も見たことがあるhttps://superuser.com/a/615946/873855人々が窓の名前を取得したい場所。私の使命はこれに非常に近いです。 xdotoolまたはwmctrlはこれを行うことができますか?

答え1

X11またはWaylandのXWaylandウィンドウでこれを行うには、xdotoolを使用して実行できます(アプリケーションクラスの名前を返します)。

$ xdotool getactivewindow getwindowclassname
VSCodium

アクティブウィンドウがX11でない場合(wayland)、次を返します。

XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
xdo_get_active_window reported an error

答え2

解決策は次のとおりです。

WINDOW_ID=$(xdotool getactivewindow)
CLASS_NAME=$(xprop -id $WINDOW_ID | rg WM_CLASS | cut -d '"' -f2)

関連文書が見つかりません。getwindowclassname

関連情報