我可以通过启用从非浮动窗口禁用边框hide_edge_borders both
。但是当我打开像lxterminal这样的浮动窗口时,我得到了改变窗口大小的边界。我该怎么做才能禁用此边框,但不能禁用窗口标题?
hide_edge_borders
仅隐藏与屏幕边缘相邻且仅在平铺层上的边框。这与受影响的窗口的边框设置无关。
您可以使用new_window
和new_float
设置窗口的初始边框样式:
new_window none
new_window normal|pixel []
new_float none
new_float normal|pixel []
该设置none
意味着没有边框和标题栏。normal
给出标题栏和边框,默认情况下为两个像素宽。边框宽度可以使用可选
设置更改,设置为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和unfloat命令设置变量有助于提高可读性和可维护性。为边界类型设置变量没有多大意义,因为不会对变量进行递归求值。因此,不可能为边框样式设置变量并在为float / un-float命令设置变量时重复使用该变量。
我用的bindcode
,因为我无法得到的组合Super+ Control+ Space与bindsym
我的系统上。当然,这仅是示例,无论如何您的系统上可能都不需要。
如果要保留当前的布局,而且还希望能够仅通过单个快捷键切换窗口的浮动状态,则必须使用i3的 IPC界面。利用IPC,您可以检查聚焦窗口的当前状态。然后,您可以浮动/取消浮动窗口并更改其边框样式。