我使用 i3 绑定来执行脚本
#!/bin/sh
i3-msg workspace web
/bin/chromium --start-fullscreen
sleep 5
i3-msg fullscreen disable
最后两行是禁用全屏(我不知道是否需要睡眠)。 i3 全屏是作为 chromium 参数的副作用而启用的(其目的只是隐藏地址栏等)。但由于某种原因,它不起作用,全屏未禁用。仅当我使用绑定 $mod+f 手动切换全屏时,它才会被禁用。为什么脚本无法做到这一点?
(我想禁用全屏的原因是,当我使用 chromium-vim 在外部编辑文本字段时,gvim 在禁用全屏之前不会显示。)
答案1
原因很简单,当你运行时chromium
它不会返回,直到完成,即关闭后铬。所以sleep
andi3-msg
只会在窗口消失后运行。
要解决这个问题,您只需chromium
在后台启动,这可以通过附加&
到命令来完成。是sleep
必需的,没有它i3-msg
可能会在之前运行铬甚至初始化了它的窗口。五秒可能有点长,但这实际上取决于多快铬在您的系统上打开。
此外,我建议向i3-msg
.这样它就可以在任何铬窗口而不仅仅是当前聚焦的窗口,这实际上可能不是所需的铬窗口(显然这可能不是一个理想的行为,如果你想要一些铬窗口全屏)。
#!/bin/sh
i3-msg workspace web
/bin/chromium --start-fullscreen &
sleep 2
i3-msg '[instance="^chromium$"] fullscreen disable'
或者, 如果你想铬窗口始终出现在工作区“web”上,您可以在您的工作区中使用assign
和for_window
配置指令i3配置来完成工作:
assign [instance="^chromium$"] web
for_window [instance="^chromium$"] exec "sh -c 'sleep 2; i3-msg \[instance=chromium\] fullscreen disable'"
这样,您不再需要脚本,并且每次运行时chromium
i3会将其放在“网络”上,两秒钟后窗口将退出全屏。
笔记:虽然理论上可以fullscreen disable
直接使用 with for_window
,但它不适用于铬因为窗口实际上是全屏启动的。铬只需非常快地启用全屏;很遗憾i3跑步时甚至更快for_window
。所以i3之前会禁用全屏铬甚至尝试启用它。这就是为什么运行sleep
和i3-msg
via绕道exec
是必要的。