wmctrl -i -a が一貫して動作しません。」

wmctrl -i -a が一貫して動作しません。」

私は現在開いているすべてのウィンドウのリストを表示してから、選択したウィンドウに切り替えるスクリプトを使用してdmenu作成しようとしています。wmctrl次のようになります。

switch_toスクリプト

ここで取得したウィンドウID wmctrl -l(スクリーンショットの2行目に表示される「0x00c0005c」)を使用して、どのウィンドウが正確に選択されているかを確認します。同じアプリケーションに属する2つのウィンドウは同じクラスですが、IDは異なります)。

唯一の問題は、wmctrl -i -a動作する場合もありますが、動作しない場合もあることです。時には切り替えられますが、間違ったウィンドウに切り替えられることがあります。それは非常にランダムです。オンラインで検索した結果、唯一のページが見つかりました言及する問題はこれ。それは言う:

WINが数値ウィンドウIDとして機能する方法に矛盾があるようです。たぶん、すべてのオプションがそれをサポートしていないか、何か奇妙なことが起こっている可能性があります。それは私にとって本当にうまくいきました。再試験。

誰でもこの問題を修正または解決する方法を教えてもらえますか?

wmctrl私はAwesome Window Managerと一緒に最新のArch Linuxシステムの公式リポジトリにあるバージョン1.07-3を使用しています。ありがとう

ベストアンサー1

今日触れた後はうまくいきましたが、最後に試したときに問題が何であるかわかりませんでした。 (これまでLinux Mintに切り替えました。おそらく問題は何とか解決されたかもしれません。)

興味のある人のための作業スクリプトは次のとおりです。

#!/bin/sh

# source dmenu config file if it exists
if [ -f $HOME/.dmenurc ]; then
    . $HOME/.dmenurc
else
    DMENU='dmenu -i'
fi

# get list of all windows, and their count
wmctrl_output=$(wmctrl -lx)
win_count=$(echo "$wmctrl_output" | wc -l)
# get rid of the hostname and the number in the 2nd column
hostname=$(uname -n)
win_list=$(echo "$wmctrl_output" | \
    sed -r -e 's/[^@]'$hostname'//' | \
    sed -r -e 's/ [0-9][0-9]? / /')

# select a window ($target) and extract its id ($target_id)
target=$(echo "$win_list" | $DMENU -l $win_count -p "Switch to: ")
target_id=$(echo "$target" | cut -d' ' -f1)

# switch to target window
cmd="wmctrl -i -a \"$target_id\""
eval "$cmd"

そして私~/.dmenurc

DMENU_FONT='-*-*-medium-r-*-*-18-*-*-*-*-*-*-*'
DMENU="dmenu -i -fn $DMENU_FONT -nb #1E2320 -nf #DBDBDB -sb #3f3f3f -sf #ffffff"

あなたがする必要があるのは、スクリプトを$ PATHのどこかに置き、実行可能にしてからキーをバインドすることだけです。

おすすめ記事