web-dev-qa-db-ja.com

起動時に複数のsway / i3コンテナーのレイアウトを設定する方法は?

問題

私はSwayウィンドウマネージャーを使用していますが、i3にも同じことが当てはまると思います。

起動時に、同じワークスペースで2つのターミナルウィンドウを起動します。 1つはNeovimを実行し、2つ目は空の(アプリを実行していない)端末になります。 2つの端子はタブ付きレイアウトで表示されますが、空の端子にはスタックレイアウトセットが必要です。そのため、新しい端子をそこから開くと、2番目のタブに新しいスタックエントリとして表示されます。視覚的に:

起動時

-------------------------------------------------------------------------------
|      Tab: Terminal with Neovim       |    Tab: Other terminals (active)     |
-------------------------------------------------------------------------------
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                 Terminal 1                                  |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
-------------------------------------------------------------------------------

他のターミナルタブで新しいターミナルを開いた後

-------------------------------------------------------------------------------
|      Tab: Terminal with Neovim       |    Tab: Other terminals (active)     |
-------------------------------------------------------------------------------
|      Other terminals tab: Stack entry: Terminal 1                           |
-------------------------------------------------------------------------------
|      Other terminals tab: Stack entry: Terminal 2 (active)                  |
-------------------------------------------------------------------------------
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                 Terminal 2                                  |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
-------------------------------------------------------------------------------

質問

Sway/i3で起動時にそのようなレイアウトを構成するにはどうすればよいですか?

以下を設定ファイルに追加してみましたが、うまくいきません。両方の端末ウィンドウが表示されますが、それらのレイアウトは適切に設定されていません。 execが非同期で実行されるため、layoutコマンドが実行されてもコンテナーが開いていないために発生すると思います。

exec swaymsg "workspace $workspace_programming; exec $term --command nvim; layout tabbed; exec $term; split vertical; layout stacking"
2
Robert Kusznier

私はなんとかその構成を使用してそれを行うことができました:

exec \
    swaymsg "workspace $workspace_programming"; \
    swaymsg "exec $neovim"; \
    swaymsg "layout tabbed"; \
    sleep 0.3s; \
    swaymsg "exec $term"; \
    sleep 0.3s; \
    swaymsg "split vertical"; \
    swaymsg "layout stacking"

[〜#〜] edit [〜#〜]:上記は機能しましたが、起動後に実行された場合のみです(exec_alwaysを使用)。何らかの理由で、起動時にexecを使用して実行すると機能しません。驚いたことに、私にとっては、Neovim端末でさえも、ウィンドウをまったく開かない。私はそれを少しリファクタリングし、このバージョンは起動時にも機能します:

exec swaymsg "workspace $workspace_programming; exec $neovim; layout tabbed;"
exec sleep 0.3s && swaymsg "exec $term";
exec sleep 0.6s && swaymsg "workspace $workspace_programming; split vertical; layout stacking"

両方のバージョンの違いは何か、なぜ最初のバージョンが機能しないのか理解できません。 somoneが私を説明できれば、私は嬉しいです。

また、sleepに頼ることなく、よりクリーンな方法があるかどうかについても疑問に思います。

1
Robert Kusznier