web-dev-qa-db-ja.com

i3ウィンドウマネージャーでアプリケーションを自動起動するレイアウトをどのように実装しますか?

これは、以前の question のフォローアップです i ウィンドウマネージャーを使用して個々のワークスペースでアプリケーションを自動起動する方法と、~/.i3/config構成内で実行できることと実行できないことファイル。

まず、提供された ソリューションArchLinux ドキュメント に基づいて、opが提供する更新ロジックをさらにプッシュします。

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'

また、この exchange の一部は、複製せずにコマンドラインで直接利用することについても興味深いです。

i3-msg workspace 3; i3-msg exec firefox
i3-msg workspace 9; i3-msg exec chromium

しかし、私は決して希望する垂直または水平レイアウトに従って各ワークスペースで多くのウィンドウ/アプリを自動起動する設定を見たことはありません。私の目標は、使用するこの単純な構成を自動起動することです。

 _____ _____     ___________     ___________
| lx  | lx  |   |        |u_|   |     |     |   proportions:
|_____|_____|   |  FF    |lx|   |spacefm    |   1- 25% each
|medit| lx  |   |        |__|   |     | vlc |   2- 75/25 x 25/50/25
|_____|_____|   |________|u_|   |_____|_____|   3- 50/50
      1               2               3

したがって、configファイルの次のようなものから始まります。

exec --no-startup-id i3-msg 'workspace 1; exec i3-sensible-terminal; layout toggle split; layout splitv; split vertical; exec i3-sensible-terminal; exec i3-sensible-terminal; exec i3-sensible-terminal; workspace 2; exec firefox; exec urxvt; exec i3-sensible-terminal; exec urxvt; workspace 3; exec spacefm; exec vlc'

しかし、どのようにして、希望するタイプのレイアウトと垂直/水平分割をどのように実現しますか?私は試みていますが、実行とレイアウトを「混合」する方法が明確ではありません。構文は、i3の構成内でi3-imgを実行しているので、最初は特異な感じがします。各exec呼び出しの間にsplit h(またはv)-layout split v-exec layout split v-focus down(または右)を使用していますか?

単一のワークスペースの場合、構成はすべてのアプリケーションを垂直または水平に開始し、レイアウトに影響を与えているようには見えません。または、チェーンの最後のsplitコマンドがウィンドウを垂直または水平のどちらに追加するかを決定します。 i3-msgは、正しくフォーマットされていないコマンドの一部を無視しているように見えるため、デバッグが困難です。これは、Xとstartxを毎回本当に終了して、結果を確認する必要があるという事実によってさらに悪化します。mod+shift+Rで構成を更新しても、各ワークスペースのすべてを閉じても切断されないためです。

これを構成する適切な方法は何ですか?誰かがそのようなものを実装するソリューションを持っていますか? documentation はかなり良いですが、複数のワークスペースでの実行とレイアウトを組み合わせた詳細な例を見ることができません。

23
user44370

newlayout-saving feature で導入されたi3v4.8(2014-06-15)。リンクされたドキュメントはかなり完全なようです。

ドキュメントからの引用:

レイアウトの保存/復元を使用すると、JSONレイアウトファイルをロードして、コンピューターの電源を入れた後に基本レイアウトを使用して作業を開始できます。動的なユースケースも思い浮かびます:ネットワークの問題を診断するためにping/tracerouteコマンドを備えたターミナルのグリッドレイアウトが頻繁に(常にではありません!)必要な場合は、これらのウィンドウを適切なレイアウトで簡単に自動で開くことができます。

...および リリースノート

tl; dr:エクスポート1 現在のレイアウトをJSONファイルとして、新しいi3セッションに読み込み、プレースホルダーウィンドウを取得します。プレースホルダーウィンドウは、起動すると実際のアプリに置き換えられます。


1.Perl-anyevent-i3およびPerl-json-xsi3-save-treeユーティリティを使用するためのパッケージ。

11
damien