Chrome

無法從 i3 腳本禁用全屏

  • February 5, 2017

我使用 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之後。所以sleepandi3-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”上,您可以在i3assign配置中使用和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*嘗試啟用它之前禁用全屏。這就是為什麼繞道執行sleepi3-msg通過exec是必要的。

引用自:https://unix.stackexchange.com/questions/342252