在i3wm中禁用浮动窗口的边框

我可以通过启用hide_edge_borders both来禁用不浮动窗口hide_edge_borders both 。 但是当我打开像lxterminal一样的浮动窗口时,我得到了这个边框来改变窗口大小 。 我能做些什么来禁用这个边界,但不禁用窗口的标题?

hide_edge_borders只隐藏与屏幕边缘相邻的边界,并仅在平铺图层上隐藏。 这与受影响的窗口的边框设置无关。

您可以使用new_windownew_float设置为窗口设置初始边框样式:

 new_window none new_window normal|pixel [<px>] new_float none new_float normal|pixel [<px>] 

设置none表示没有边框,没有标题栏。 normal给出一个标题栏和默认情况下两个像素宽的边界。 可以使用可选的<px>设置更改边框宽度,设置为0可以保留标题栏,但会删除边框。 pixel (也有可选的宽度)在所有边上都会产生边界,但是没有标题栏。

new_window设置在平铺层上启动的窗口的样式,这与i3几乎是每个窗口。 new_float将窗口的样式设置为浮动窗口,这些窗口大多是对话框窗口。 如果稍后更改浮动状态,则这些设置不会影响边框样式。 后来还包括像这样的设置

 for_window [class="SOMECLASS"] floating enable 

因为它们也是在窗口已经创建之后才完成的。

这给你留下了一些可能的解决方案


  • 如果你不需要任何边界的解决方案是非常简单的。 你可以设置:

     new_window normal 0 new_float normal 0 

    这将删除包括平铺窗口之间的任何边界。 然后,您也可以删除hide_edge_borders设置,因为它不再需要。


  • 如果你想保持现在的平铺层 – 窗口之间的边缘,而不是在屏幕边缘 – 它会变得更加棘手。 如上所述, new_float设置只会影响最初浮动的窗口,但不会影响后来自动或手动设置的窗口。 最简单的解决方案可能会有单独的命令浮动和取消浮动窗口(而不是只是切换),并扩展任何for_window设置还删除/添加边框根据需要。 例如:

     # New tiling windows with title bar and borders new_window normal 2 # New floating windows with title bar and without borders new_float normal 0 # Hide borders on edges hide_edge_borders both # Set variables for floating and un-floating commands set $FLOAT floating enable, border normal 0 set $UNFLOAT floating disable, border normal 2 # Key bindings # Switch between tiling and floating layer (Super+Space) bindcode Mod4+65 focus mode_toggle # Put windows on floating layer and remove borders (Super+Shift+Space) bindcode Mod4+Shift+65 $FLOAT # Make windows on tiling layer and add borders (Super+Control+Space) bindcode Mod4+Control+65 $UNFLOAT # Auto-float some windows for_window [class="SomeClass"] $FLOAT for_window [title="ThisTitle"] $FLOAT # Auto-un-float some other windows for_window [class="SomeOtherClass" window_type="dialog"] $UNFLOAT for_window [title="ThatTitle"] $UNFLOAT 

    笔记:

    • 为float和un-float命令设置变量有助于可读性和可维护性。 设置边界类型的变量没有多大意义,因为变量不是递归计算的。 因此,不可能为边界样式设置变量,并在浮点/非浮点型命令的变量设置中重新使用该变量。
    • 我使用了bindcode因为我无法在我的系统上获得带有bindsym Super + Control + Space组合。 当然这只是一个例子,反正你的系统可能不需要它。

  • 如果你想保持当前的布局,但也希望能够用一个快捷方式来切换窗口的浮动状态,你将不得不使用i3的 IPC接口 。 利用IPC可以检查聚焦窗口的当前状态。 然后,您可以浮动/取消浮动窗口,并更改它的边框样式。