시작 시 여러 sway/i3 컨테이너의 레이아웃을 설정하는 방법은 무엇입니까?

시작 시 여러 sway/i3 컨테이너의 레이아웃을 설정하는 방법은 무엇입니까?

질문

저는 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.

관련 정보