作者Typebrook (Pham)
看板Linux
標題Re: [問題] 在 Openbox 的 NextWindow 動作中,取得 Window ID
時間Thu Mar 16 19:39:14 2023
: 在 Openbox 的預設環境下,按下 <Alt+Tab> 會使用 Action "NextWindow"
: 若維持按下 Alt 的狀態,則會循環選擇已開啟的 Window,
: 最近我想要加入一項功能:
: 若是視窗的 class 是 CONFIRM_BEFORE_CLOSE,則再關掉前先用 dialog 詢問使用者。
: 因此我把原本的快捷鍵<Alt-q>改成如下設定:
: 若單獨使用快捷鍵<Alt-q>時,這個功能有達成我的目標。
: 但若是搭配<Alt+Tab>,則因為是使用 "xdotool getactivewindow",
: 所以拿到的 Window ID 始終是目前處ᄅ騕J點的視窗,而不是"NextWindow" 的ID
: 因此關掉的視窗始終是目前處於焦點的視窗
: 請問有什麼辦法可以改進呢?
雖然沒辦法在 Openbox 的循環視窗中拿到 Window ID。
不過這邊我用其它解法達到「若視窗有特殊標記,則不要輕易關掉它」:
Openbox 可以用<query>標籤,來對不同屬性的視窗進行不同動作。
以下的設定中按下 Alt-q 時,若視窗的名稱由"@"開始,則將它最小化。反之,則關掉視窗。
<keybind key="A-q">
<action name="If">
<query target="default">
<title type="regex">^@</title>
</query>
<then>
<action name="Iconify"/>
</then>
<else>
<action name="Close"/>
</else>
</action>
</keybind>
這邊我可以設定一個熱鍵,手動更改重要的視窗名稱,並加上"@"前綴
<keybind key="W-y">
<action name="Execute">
<command>
sh -c '
zenity --entry --text "Window title" | \
xargs -i xdotool set_window --name @{} `xdotool getactivewindow`
'
</command>
</action>
</keybind>
另外再設定一個 Alt-Shift-q 熱鍵,用來執行原本的無條件關閉視窗:
<keybind key="A-S-q">
<action name="Close"/>
</keybind>
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.125.142 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1678966756.A.ECF.html