i3スクリプトでフルスクリーンを無効にすることはできません

i3スクリプトでフルスクリーンを無効にすることはできません

i3バインディングを使用してスクリプトを実行します。

#!/bin/sh
i3-msg workspace web
/bin/chromium --start-fullscreen
sleep 5
i3-msg fullscreen disable

最後の2行は全画面を無効にすることです(節電が必要かどうかわかりません)。 i3フルスクリーンはChromeパラメータの副作用として有効になります(その目的は単にアドレスバーなどを隠すことです)。ただし、何らかの理由で機能せず、全画面表示は無効になりません。 $mod + fバインディングを使用して手動でフルスクリーンを切り替える場合にのみ無効になります。スクリプトはなぜこれを行うことができないのですか?

(フルスクリーンを無効にする理由は、chromium-vimを使用して外部でテキストフィールドを編集するときにフルスクリーンが無効になるまでgvimがそれを表示しないためです。)

ベストアンサー1

理由は簡単です。実行するとchromium、完了するまで、つまり閉じた後に返されません。クロム。したがって、sleepおよびはi3-msgウィンドウが消えた後にのみ実行されます。

この問題を解決するには、chromiumバックグラウンドで起動します。&コマンドに追加するだけです。必須ですsleep。このエントリがない場合は、i3-msg以前に実行できます。クロムでもウィンドウを初期化します。 5秒は少し長いかもしれませんが、どれだけ早いかによって異なります。クロムシステムで開きます。

i3-msgまた、どんな用途でも使用できるように.をお勧めします。クロム実際には望ましくないかもしれない現在の焦点が合っているウィンドウではなくウィンドウクロムウィンドウ(明らかにこれは望ましい動作ではないかもしれません)。クロムウィンドウフルスクリーン)。

#!/bin/sh
i3-msg workspace web
/bin/chromium --start-fullscreen &
sleep 2
i3-msg '[instance="^chromium$"] fullscreen disable'

または、あなたが望むならクロムこのウィンドウは常にワークスペース「Web」に表示され、ワー​​クスペースでディレクティブを使用しassignfor_window構成できます。i3タスクを完了するための構成:

assign [instance="^chromium$"] web
for_window [instance="^chromium$"] exec "sh -c 'sleep 2; i3-msg \[instance=chromium\] fullscreen disable'"

これにより、スクリプトは不要になり、実行するたびにchromium i3「ネットワーク」に置いて2秒後、ウィンドウは全画面で終了します。
メモ:fullscreen disable理論的にはdirectと一緒に使用することは可能ですが、それはうまくfor_windowいきません。クロムウィンドウが実際にフルスクリーンで実行されるためです。クロム残念ながら、非常に迅速にフルスクリーンを有効にします。i3走るともっと速くなりますfor_window。だからi3以前は、フルスクリーンが無効になっていました。クロム有効にしてみてください。走りsleepi3-msg迂回がexec必要な理由だ。

おすすめ記事