我想配置窗口关闭行为,以便当我按Mod+ Shift+时q。如果框架有一个窗户或没有窗户,请关闭窗户并拆下框架。如果有超过 1 个窗口,则仅关闭获得焦点的窗口。这使得根据框架中的窗口动态关闭框架/窗口变得更容易。
我能够通过如下编辑配置文件来解决需求的第一部分。 IE。如果框架有一个窗口或没有窗口,则关闭窗口并移除框架。
hc keybind $Mod-n and . compare tags.focus.curframe_wcount lt 2 . chain , close , remove
但是,我无法链接第二部分,如果框架有超过 1 个窗口,只需关闭聚焦窗口即可。我尝试了以下两个选项。
- 尝试链接或者
hc keybind $Mod-n or | and . compare tags.focus.curframe_wcount lt 2 . chain , close , remove | close
- 尝试编写一个单独的函数
hc keybind $Mod-Shift-q close_frames
close_frames(){
WinCurFrame=$(hc attr tags.focus.curframe_wcount)
[[ WinInCurFrame < 2 ]] && hc close;remove || hc close
}
答案1
确定了实现它的方法。 Herbstluftwm 中有一个配置选项可以启用此行为。 https://herbstluftwm.org/herbstluftwm.html
关闭或删除 关闭聚焦的窗口,如果没有聚焦的窗口,则删除当前帧。在浮动模式下,这充当关闭命令。
关闭并删除 如果当前帧中不存在其他窗口,则关闭聚焦窗口并删除当前帧。在浮动模式下,这充当关闭命令。