i3:我可以暂时强制任何新窗口打开浮动吗?

i3:我可以暂时强制任何新窗口打开浮动吗?

在我知道一个窗口即将打开的情况下,有时我希望它正常打开(使其他窗口调整大小以腾出空间),但其他时候我知道我会希望它浮动并避免调整大小。其中一种情况是,当打开许多终端窗口时,调整它们的大小将导致它们的显示变得混乱,而我只需要短暂地想要新窗口。

我不想为此配置每个应用程序或窗口类的规则,至少不是为了这个问题的目的。

我想要的是能够在我期望窗口打开时按住键,并且如果按住键,新窗口将被迫浮动,因此其他窗口不会调整大小。

这样的事可能吗?我怎样才能实现它?

答案1

这在 sway 中对我有用,它很大程度上与 i3 兼容:

set $mod Mod4
set $float disable
bindsym $mod+f set $$float enable
for_window [title=".*"] floating $$float; set $$float disable

现在,当我按下 时Mod4+f,下一个打开的窗口将浮动,但此后的任何新窗口都会平铺,直到我Mod4+f再次按下。请注意,这swaymsg相当于i3msg.

你问的是保持参与浮动行为的键。这似乎很难以通用方式配置,因为无法查询 i3/sway 中修饰键的状态(无论如何,我不知道)。如果您有少量程序需要在浮动模式下运行,您可以为每个程序单独配置行为,如下所示:

bindsym $mod+z exec evince
bindsym $mod+Shift+z set $$float enable; exec evince

请注意,第一个答案中的标准[title=".*"]将包括每个窗口。这可能会导致意外的问题,例如导致对话框默认不再浮动。您必须缩小标准范围以排除您不希望受到影响的窗口类型。或者,这可能有效:

set $float toggle
bindsym $mod+f set $$float enable
for_window [title=".*"] floating $$float, floating $$float, set $$float toggle

floating toggle, floating toggle应该没有任何影响,从而保留原来的浮动状态。

相关内容