xfce4/xfwm4で最近焦点を当てたアプリケーションウィンドウを有効にする方法は?

xfce4/xfwm4で最近焦点を当てたアプリケーションウィンドウを有効にする方法は?

特定のアプリケーション(F1 Chrome、F2端末など)にファンクションキーを使用します。正しいアプリケーションを有効にするために、ショートカットキーにバインドされたスクリプトがありますが、動作しますが、最近焦点を当てたウィンドウをアクティブにしません。スクリプトは、wmctrl -lx生成順序とは逆の順序でリストされたウィンドウをリストします。 「最も近い端末ウィンドウのアクティブ化」スクリプトを作成できるように、特定のウィンドウのアクティブ化順序を要求または追跡する方法はありますか?

または、ウィンドウを繰り返すときに使用されるウィンドウスタックの順序を維持して問題を解決できるように見えますが、xfwm4そのウィンドウスタックの順序を取得するコマンドラインインターフェイスは表示されません。

ベストアンサー1

スクリプトではwmctrl、、xpropおよびを使用してawkウィンドウマネージャが管理するアクティベーション時間を使用できます。 (例えばwm-spec 1.5)。たとえば、次のように(複数行)コマンドラインを使用します。

W=$(wmctrl -l | \
    awk '$ ~ "Terminal" {print $1;}' | while read x ; do \
      echo "$x $(xprop -id $(xprop -id $x \
                             | awk '$1 ~ /_NET_WM_USER_TIME/ {print $NF}' \
                             ) \
                 | awk '{print $NF}' \
                 )" ; \
      done | awk '$2>t {i=$1; t=$2} END {print i}' \
    )

つまり:

  1. フィルタリングを介してリストを渡して、指定されたwmctrlアプリケーションのウィンドウID(上記の例では「ターミナル」)を選択します。
  2. これを(最も内側)に渡して、xprop最後に使用されたウィンドウIDを取得します。
  3. xprop別の(外部)を使用して、元のウィンドウの「最も高いウィンドウ」の(単一)プロパティである対応するタイムスタンプを取得します_NET_WM_USER_TIME_WINDOW
  4. awk最大のタイムスタンプを持つIDを報告するフィルタで生成されたすべてのIDとタイムスタンプの行を渡します。

おすすめ記事