作者Typebrook (Pham)
看板Linux
標題[問題] 在 Openbox 的 NextWindow 動作中,取得 Window ID
時間Mon Mar 13 12:25:11 2023
在 Openbox 的預設環境下,按下 <Alt+Tab> 會使用 Action "NextWindow"
若維持按下 Alt 的狀態,則會循環選擇已開啟的 Window,
在放開 Alt 時則會使用 <finalactions>。相關 keybind 如下:
<keybind key="A-Tab">
<action name="NextWindow">
<allDesktops>yes</allDesktops>
<finalactions>
<action name="focus"/>
<action name="raise"/>
</finalactions>
</action>
</keybind>
通常我習慣在按壓 Alt 的狀態下,使用快捷鍵<Alt-q>來關掉視窗:
<keybind key="A-q">
<action name="Close"/>
</keybind>
最近我想要加入一項功能:
若是視窗的 class 是 CONFIRM_BEFORE_CLOSE,則再關掉前先用 dialog 詢問使用者。
因此我把原本的快捷鍵<Alt-q>改成如下設定:
<keybind key="A-q">
<action name="Execute">
<command>
sh -c '
current_window=$(xdotool getactivewindow);
if [ $(xdotool getwindowclassname $current_window) = CONFIRM_BEFORE_CLOSE ]; then
zenity --question --text "Are you sure you want to close this window?" || exit 1;
fi
xdotool windowkill $current_window;
'
</command>
</action>
</keybind>
若單獨使用快捷鍵<Alt-q>時,這個功能有達成我的目標。
但若是搭配<Alt+Tab>,則因為是使用 "xdotool getactivewindow",
所以拿到的 Window ID 始終是目前處ᄅ騕J點的視窗,而不是"NextWindow" 的ID
因此關掉的視窗始終是目前處於焦點的視窗
請問有什麼辦法可以改進呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.69.145 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1678681513.A.942.html
1F:→ leolarrel: openbox我不熟,可能要直接修改 openbox 的source code 03/13 19:57
同樣的設定我會套用在不同機器,每次都要重新編譯太麻煩了
下面的回文中,我有找到替代方法了
※ 編輯: Typebrook (42.72.186.177 臺灣), 03/17/2023 08:26:59