Arch-Linux
“wmctrl -i -a <WIN>”的行為不一致
我正在嘗試使用
dmenu
並wmctrl
編寫一個腳本,該腳本將向我顯示所有目前打開的視窗的列表,然後切換到我選擇的那個。它看起來像這樣:現在,我正在使用從中獲得的視窗 ID
wmctrl -l
(例如,在第二行的螢幕截圖中可見的“0x00c0005c”)來確定確切選擇了哪個視窗(我沒有使用視窗類,因為 2 個視窗屬於到同一個應用程序將具有相同的類,但不同的 id)。唯一的問題是:
wmctrl -i -a
有時有效,但有時無效 - 有時,它會切換,但切換到錯誤的視窗!這是相當隨機的。在網上搜尋後,我發現唯一一個甚至提到這個問題的網頁就是這個。它說:WIN 作為數字視窗 ID 似乎並不能始終如一地工作。也許並非所有選項都支持它,或者正在發生一些瘋狂的事情。它曾經對我很好。重新測試。
誰能告訴我如何解決或解決此問題?
我在
wmctrl
最新的 Arch Linux 機器上使用官方儲存庫中的 1.07-3 版本,如果有幫助的話,還有 Awesome Window Manager。謝謝
今天擺弄了一下之後,我得到了這個東西,但是當我上次嘗試它時,我無法確定問題出在哪裡(我確實在過渡期間切換到了 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 上的某個位置,使其可執行,並將密鑰綁定到它。