linux – 現在アクティブなウィンドウを検出する

command-line linux xorg

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


これはより直接的で、xpropcutのみを使用します

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


タイトルとURLをコピーしました