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

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

これは前編の連続です質問次のコマンドを使用してさまざまなワークスペースでアプリケーションを自動的に起動する方法についてi3ウィンドウマネージャと設定ファイルで実行できるタスクと実行できないタスク~/.i3/config

まず、提供解決策に基づいてアーチLinux文書そして、ロジックをさらに発展させる作戦担当者が提供するアップデートは次のとおりです。

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'

また興味深いのはこれです。交換重複せずにコマンドラインから直接これらのいくつかを利用する方法は次のとおりです。

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-imgi3の構成内で実行されるため、構文は最初から特別に感じられます。各通貨の間にsplit h(またはv) - layout split v- exec layout split v-(またはright)を使用しますか?focus downexec

split単一のワークスペースの場合、構成はすべてのアプリケーションを垂直または水平に実行し、レイアウトまたはウィンドウを垂直または水平に追加するかどうかを決定するチェーンの最後のコマンドには影響しないようです。i3-msg場合によっては、間違ったコマンド部分が無視され、デバッグが難しいようです。状況をさらに複雑にするには、startx結果を確認するために毎回Xを終了する必要があります。なぜならmod+shift+R、各ワークスペースのすべての項目を閉じても、構成を更新するだけでは問題は解決しないからです。

これを構成する正しい方法は何ですか?同様の機能を達成するためのソリューションがある人はいますか?これ文書非常に優れていますが、複数のワークスペースで実行とレイアウトを混在させることがわかる詳細な例はありません。

答え1

私はあなたが探していると信じています新しい レイアウト保存機能にありますi3v4.8(2014-06-15)。リンクされた文書は非常に徹底しているようです。

ドキュメントから引用:

レイアウトの保存/復元を使用すると、JSONレイアウトファイルをロードしてコンピュータの電源を入れたときに起動できるデフォルトのレイアウトを持つことができます。動的ユースケースも念頭に置いてください。ネットワークの問題を診断するためにping / tracerouteコマンドのターミナルグリッドレイアウトを頻繁に(常にそうではない!)使用する必要がある場合は、これらのウィンドウを正しいレイアウトで簡単に自動的に開くことができます。

...しかもリリースノート:

tl;dr:現在のレイアウトをJSONファイルにエクスポートし、それを新しいi3セッションにロードし、実行した後に実際のアプリケーションに置き換えられるプレースホルダウィンドウを取得します。


1. 必要がある場合もありますPerl-anyevent-i3そしてPerl-json-xsこのユーティリティを使用するには、パッケージを使用してくださいi3-save-tree

関連情報