作者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/cn.aspx?n=bbs/Linux/M.1678966756.A.ECF.html