
質問
私は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"
答え1
私は次の設定を使用してこれを行いました。
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"
編集する:上記の方法は機能しますが、起動後にのみ実行(使用)されます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"
2つのバージョンの違いと最初のバージョンが機能しない理由は理解できません。誰かが私に説明をしてくれたら嬉しいです。
に頼らずにこれを行うためのよりきれいな方法があるかどうか疑問に思いますsleep
。