私は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"
私はなんとかその構成を使用してそれを行うことができました:
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
に頼ることなく、よりクリーンな方法があるかどうかについても疑問に思います。