linuxコマンドラインツールwmctrl
を使うと、すべてのウィンドウやすべてのデスクトップをリストアップすることができます。デスクトップ一覧表示モードでは、現在のデスクトップにはアスタリスクが付いています
現在アクティブなウィンドウのタイトルを把握できるツールが必要です。残念ながら、wmctrl
にはこれを行うヘルパーがありません – どのウィンドウが現在アクティブなのかを知っているにもかかわらず (:ACTIVE:
マーカーを参照してください)
現在のウィンドウのウィンドウIDやウィンドウタイトルを表示するコマンドラインツールはありますか?
56 Dave Vogt 2012-01-26
xdotool
をインストールしてから実行してください
xdotool getwindowfocus getwindowname
これは、例えば、Firefoxで開いている現在のWebページのために与えられます
linux - Detecting currently active window - Super User - Mozilla Firefox
59 Skippy le Grand Gourou 2013-07-05
これはより直接的で、xprop
とcut
のみを使用します
xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME
これらのコマンドは、ルートウィンドウとアプリケーションウィンドウからプロパティを抽出しただけのものですが、Lorenzo von Matterhornのリクエストによるものです
First,
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
ルートから
_NET_ACTIVE_WINDOW
プロパティを抽出し、アクティブなウィンドウの XID を与えます。32x '\t$0'
は、cut
が後で簡単にパースできるように出力をフォーマットするようにxprop
に指示しますそして、出力からXIDだけを
cut -f 2
で抽出しますそして、XIDをパラメータとして渡します
xprop -id XID _NET_WM_NAME
そのウィンドウの名前を表示します
35 Jim Paris 2013-01-12
ありますが、短絡的な答えや解決策はありません
$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')
result:
0x03800004 0 16459 xxxxxxxxxx /bin/bash
In use:
$ 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)
10 tao 2012-02-08
これが私には効果がありました
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME
Gives:
WM_NAME(STRING) = "~"
だから名前だけでもいいからセド醜いことをするんじゃないの?
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | sed -e 's/.*"\(.*\)".*/\1/'
Gives:
~
これは私が現在集中している窓の名前です
もしくは、やや不細工ではないセドを避ける
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | awk -F '"' '{print $2}'
5 Greg Bell 2014-07-16
比較的短く、引用符を含むウィンドウ名を正しく処理します
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME |
sed -nr 's/.*= "(.*)"$/\1/p'
3 Ton van den Heuvel 2016-07-08