作者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/cn.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