無法從 i3 腳本禁用全屏
我使用 i3 綁定來執行腳本
#!/bin/sh i3-msg workspace web /bin/chromium --start-fullscreen sleep 5 i3-msg fullscreen disable
最後兩行是禁用全屏(不知道是否需要休眠)。i3 全屏作為 chromium 參數的副作用啟用(僅用於隱藏地址欄等)。但由於某種原因,它不起作用,全屏沒有被禁用。只有當我使用綁定 $mod+f 手動切換全屏時,它才會被禁用。為什麼腳本不能做到這一點?
(我想禁用全屏的原因是,當我使用 chromium-vim 從外部編輯文本欄位時,gvim 在禁用全屏之前不會顯示。)
原因很簡單,當你執行
chromium
它時,它不會返回,直到它完成,即在你關閉Chromium之後。所以sleep
andi3-msg
只會在視窗已經消失後執行。要解決這個問題,您只需要
chromium
在後台啟動,這可以通過附加&
到命令來完成。這sleep
是必需的,否則它i3-msg
可能會在Chromium初始化其視窗之前執行。五秒鐘可能有點長,但這實際上取決於Chromium在您的系統上打開的速度。此外,我建議將標準添加到
i3-msg
. 這樣它就可以在任何Chromium視窗上工作,而不僅僅是目前聚焦的視窗,這實際上可能不是所需的Chromium視窗(如果您希望某些Chromium視窗全屏顯示,這可能不是所需的行為)。#!/bin/sh i3-msg workspace web /bin/chromium --start-fullscreen & sleep 2 i3-msg '[instance="^chromium$"] fullscreen disable'
或者,如果您希望Chromium視窗始終出現在工作區“web”上,您可以在i3
assign
配置中使用和for_window
配置指令來完成這項工作:assign [instance="^chromium$"] web for_window [instance="^chromium$"] exec "sh -c 'sleep 2; i3-msg \[instance=chromium\] fullscreen disable'"
這樣,您不再需要腳本,每次執行
chromium
i3時都會將其放在“web”上,兩秒鐘後視窗將退出全屏。**注意:雖然理論上可以
fullscreen disable
直接與 一起使用for_window
,但它不適用於Chromium,因為視窗實際上是以全屏啟動的。Chromium只是非常快地啟用全屏;不幸的是, i3在執行時甚至更快for_window
。所以*i3會在Chromium*嘗試啟用它之前禁用全屏。這就是為什麼繞道執行sleep
和i3-msg
通過exec
是必要的。