GNU/Linux >> Linux の 問題 >  >> Linux

現在アクティブなウィンドウの検出

xdotool をインストール 、次に実行

xdotool getwindowfocus getwindowname

それは例えば与えるでしょう。 Firefox で開いている現在の Web ページ:

linux - Detecting currently active window - Super User - Mozilla Firefox

これはより直接的で、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 の方法で出力をフォーマットする 後で簡単に解析できます。

  • 次に、出力から cut -f 2 で XID だけを抽出します。

  • 次に、XID をパラメーターとして

    に渡します。
    xprop -id XID _NET_WM_NAME
    

そのウィンドウの名前を出力します。


ありますが、短い答えや解決策はありません。

$ 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)

Linux
  1. リモートアクティブターミナルでコマンドを実行しますか?

  2. Tmux Force Resize Window?

  3. Gnomeでウィンドウの透明度を設定しますか?

  1. テキストの問題を選択/強調表示しますか?

  2. アクティブなワークスペースを変更せずにウィンドウを別のワークスペースに送信するにはどうすればよいですか?

  3. X でアクティブなウィンドウのタイトルを取得する

  1. アクティブウィンドウを視覚的に認識しますか?

  2. C での 64 ビット コンパイルの検出

  3. ffmpeg x11単一のウィンドウをグラブする