Linux コマンドライン ツールを使用するwmctrl
と、すべてのウィンドウやすべてのデスクトップなどを一覧表示できます。デスクトップ一覧モードでは、現在のデスクトップにアスタリスクが付きます。
現在アクティブなウィンドウのタイトルを判別できるツールが必要です。残念ながら、現在どのウィンドウがアクティブであるかがわかっているにもかかわらず (マーカーを参照) wmctrl
、これを行うヘルパーがありません。:ACTIVE:
現在のウィンドウのウィンドウ ID やウィンドウ タイトルを取得できる別のコマンドライン ツールはありますか?
答え1
インストールxdotool
して実行
xdotool getwindowfocus getwindowname
たとえば、Firefox で現在開いている Web ページの場合は次のようになります。
linux - Detecting currently active window - Super User - Mozilla Firefox
答え2
これはより直接的で、 と のみを使用しxprop
ますcut
。
xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME
これらのコマンドは、ルート ウィンドウとアプリケーション ウィンドウからプロパティを抽出したものにすぎませんが、Lorenzo von Matterhorn の要求に応じて次のようになります。
初め、
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
_NET_ACTIVE_WINDOW
ルートからプロパティを抽出し、アクティブ ウィンドウの XID を取得します。 は、後で簡単に解析できる方法で出力をフォーマットするように32x '\t$0'
指示します。xprop
cut
次に、出力からXIDだけを抽出します。
cut -f 2
次に、XIDをパラメータとして渡します。
xprop -id XID _NET_WM_NAME
そのウィンドウの名前を出力します。
答え3
ありますが、短い答えや解決策はありません。
$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')
結果:
0x03800004 0 16459 xxxxxxxxxx /bin/bash
使用中で:
$ for x in $(seq 1 10); do sleep 5; wmctrl -lp | grep $(xprop -root | \
grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | \
sed 's/^0x/0x0/'); done
0x03800004 0 16459 xxxxxxxxxx /bin/bash
0x020000a4 0 13524 xxxxxxxxxx linux - Detecting currently active window - Super User - Mozilla Firefox (Build 20120129142219)
答え4
比較的短く、引用符を含むウィンドウ名を正しく処理します。
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME |
sed -nr 's/.*= "(.*)"$/\1/p'