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


23

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

まず、Arch Linuxのドキュメントに基づいて提供されたソリューションと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'

また、興味深いのは、コマンドラインで複製せずにその一部を直接利用することに関するこの交換です:

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- focus downそれぞれの間で(または右)execの呼び出し?

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

これを設定する適切な方法は何ですか?誰かがそのようなものを実装するソリューションを持っていますか?ドキュメントはかなり良いですが、それは私が複数のワークスペース上での実行とレイアウトをミックス詳細な例を見ることができることを提供していません。


これも展開します

FFやurxvtを使用してソリューションを提供する必要はありません。私が知っている限り、これらのプログラムには特別なものは何もないので、誰かがどんなプログラムでもレイアウト#2を再現し、jsonファイルを保存し、それを削除し、ログイン時に設定ファイルから起動できるかどうかを確認し、プログラム名を変更するだけです答えを提出する前に...

保存/復元されたjson-layoutと組み合わせてi3ファイルのパーツをアップロードできますか?私は同じ問題を抱えています。しかし、それを機能させてはいけません。config / jsonファイルでマルチディスプレイを使用していますか?

回答:


11

i3 v4.8(2014-06-15)で導入された新しい レイアウト保存機能を探していると思います。リンクされたドキュメントはかなり徹底しているようです。

ドキュメントから引用:

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

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

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


1. ユーティリティを使用するには、perl-anyevent-i3およびperl-json-xsパッケージが必要になる場合がありi3-save-treeます。


3
レイアウト機能の使用は驚くほど困難です。プレースホルダの窓「ツバメ」の彼らのコンセプトは、あなたのような何回も同じアプリたい場合ことを意味アプリlxterminalまたはurxvt1つのワークスペースのために、そしてあなたが使用してそれらを区別する必要があり--name somethingますが.i3 / configの中でそれらをexecしたときに。ドキュメントの例は機能しますが、ワークスペースの1つからエクスポートを使用すると、機能しないようです。あなたは、使用するクラスを名前とするために、インスタンスあなたが--nameで使用するもののために。この場合、json形式には非常に多くの括弧が含まれているため、GUIツールを真剣に期待することしかできません!

1
4.8に更新しましたが、この新機能にかなり満足しています。.i3/config以前のバージョンからもログイン時に確実に起動するのに常に問題がありましたが、適切にログインすると、すべてが正常に機能します。私がやったのは、いくつかのレイアウトを配置して保存し、jsonファイルのクラス変数のみを編集することです。その後、次のようにするi3-msg workspace 2\; append_layout mylayout.json\;i3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec medit、最初に必要なレイアウトが復元されます。//答えを改善してくれてありがとう、ところで。
ダミアン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.