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

时间:2015-12-21 11:53:09

标签: linux window archlinux

我可以通过启用hide_edge_borders both来禁用不浮动窗口的边框。但是当我打开像lxterminal这样的浮动窗口时,我得到了this borders to change window size。 如何禁用此边框,但不能禁用窗口标题?

1 个答案:

答案 0 :(得分:4)

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

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

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命令设置变量有助于提高可读性和可维护性。为边界类型设置变量没有多大意义,因为变量不是递归计算的。因此,无法为边框样式设置变量,并在float / un-float命令的变量设置中重用该变量。
    • 我使用了bindcode,因为我无法获得{kbd> Super + Control + Space bindsym的组合我的系统。当然这仅仅是一个例子,无论如何你的系统可能都不需要它。
  • 如果您想保留当前布局,但又希望能够使用单个快捷方式切换窗口的浮动状态,则必须使用 i3的 {{3} }。利用IPC,您可以检查聚焦窗口的当前状态。然后你可以浮动/取消浮动窗口并更改它的边框样式。