질문
저는 Sway 창 관리자를 사용하고 있는데 i3에도 마찬가지인 것 같아요.
시작 시 동일한 작업 공간에서 2개의 터미널 창을 시작하고 싶습니다. 그 중 하나는 Neovim을 실행하고 두 번째는 빈(실행 중인 애플리케이션이 없는) 터미널이 됩니다. 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"
두 버전의 차이점과 첫 번째 버전이 작동하지 않는 이유를 이해할 수 없습니다. 누군가 나에게 설명을 해준다면 기쁘겠습니다.
에 의존하지 않고도 이 작업을 수행할 수 있는 더 깔끔한 방법이 있는지 궁금합니다 sleep
.