i3 창 관리자에서 애플리케이션 자동 시작으로 레이아웃을 어떻게 구현합니까?


23

i3 창 관리자를 사용하여 개별 작업 공간에서 응용 프로그램을 자동 시작하는 방법 과 구성 파일에서 수행 할 수있는 작업과 수행 할 수없는 작업 에 대한 이전 질문 에 대한 후속 조치 입니다.~/.i3/config

먼저 Arch Linux 문서를 기반으로 제공된 솔루션 과 op를 통해 로직을 더욱 발전시킨 업데이트를 제공합니다.

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'

또한이 중 일부는 복제하지 않고 명령 행에서 직접 일부를 활용하는 것에 대한 교환입니다 .

i3-msg workspace 3; i3-msg exec firefox
i3-msg workspace 9; i3-msg exec chromium

그러나 원하는 수직 또는 수평 레이아웃에 따라 각 작업 공간에서 많은 창 / 앱을 자동 시작하는 구성을 본 적이 없습니다 . 내 목표는 내가 사용하는 간단한 구성을 자동 시작하는 것입니다.

 _____ _____     ___________     ___________
| lx  | lx  |   |        |u_|   |     |     |   proportions:
|_____|_____|   |  FF    |lx|   |spacefm    |   1- 25% each
|medit| lx  |   |        |__|   |     | vlc |   2- 75/25 x 25/50/25
|_____|_____|   |________|u_|   |_____|_____|   3- 50/50
      1               2               3

따라서 config파일 에서 다음과 같이 시작 됩니다.

exec --no-startup-id i3-msg 'workspace 1; exec i3-sensible-terminal; layout toggle split; layout splitv; split vertical; exec i3-sensible-terminal; exec i3-sensible-terminal; exec i3-sensible-terminal; workspace 2; exec firefox; exec urxvt; exec i3-sensible-terminal; exec urxvt; workspace 3; exec spacefm; exec vlc'

그러나 세계에서 원하는 레이아웃 유형과 수직 / 수평 분할을 어떻게 달성 할 수 있습니까? 노력하고 있지만 실행 및 레이아웃을 어떻게 "혼합"하는지 명확하지 않습니다. 구문은 i3-imgi3의 구성 내에서 실행 중이기 때문에 특유의 느낌 입니다. 당신이 사용하십니까 split h(또는 V) - layout split v- exec layout split v- focus down각 사이 (또는 오른쪽) exec전화 ??

단일 작업 공간의 경우 구성은 모든 응용 프로그램을 세로 또는 가로로 시작하며 레이아웃에 영향을 줄 수 없거나 split체인 의 마지막 명령으로 창을 세로 또는 가로로 추가할지 여부를 결정합니다. i3-msg경우에 따라 올바르게 형식이 지정되지 않은 명령 부분을 무시하므로 디버그하기가 어렵습니다. 이것은 각 작업 공간에서 모든 것을 닫더라도 startx구성을 새로 고치면 결과 mod+shift+R가 잘리지 않으므로 결과를 확인하기 위해 매번 X를 다시 종료해야한다는 사실에 더 복잡합니다 .

이것을 구성하는 올바른 방법은 무엇입니까? 누구나 그런 것을 구현하는 솔루션이 있습니까? 문서는 꽤 좋은이지만 나는 여러 작업 공간에서 실행 및 레이아웃을 혼합 자세한 예를 볼 수 제공하지 않습니다.


또한 이것에 확장 합니다 .

솔루션을 제공하기 위해 FF 또는 urxvt를 사용할 필요는 없습니다. 내가 아는 한 그 프로그램에는 특별한 것이 없으므로 누군가가 어떤 프로그램으로 레이아웃 # 2를 재현하고 json 파일을 저장하고 제거하고 로그인 할 때 구성 파일에서 시작할 수 있는지 확인한 다음 단순히 프로그램 이름을 변경할 수 있습니다 답변을 제출하기 전에 ...

저장 / 복원 된 json-layout과 함께 i3 파일에 부품을 업로드 할 수 있습니까? 나는 같은 문제가있다. 그러나 그것을 작동시키지 않는다. config / json 파일에서 다중 디스플레이를 사용합니까?

답변:


11

i3 v4.8 (2014-06-15) 에 도입 된 새로운 레이아웃 절약 기능 을 찾고 있다고 생각합니다 . 연결된 문서는 꽤 철저한 것 같습니다.

문서에서 인용 :

레이아웃 저장 / 복원을 사용하면 컴퓨터의 전원을 켠 후 기본 레이아웃을 사용하여 JSON 레이아웃 파일을로드 할 수 있습니다. 동적 사용 사례도 염두에 두어야합니다. 네트워크 문제를 진단하기 위해 ping / traceroute 명령을 사용하여 터미널의 그리드 레이아웃을 자주 (항상 그런 것은 아님) 필요로하는 경우 올바른 레이아웃에서 이러한 창을 자동으로 열 수 있습니다.

... 및 출시 정보 :

TL; DR : 수출 1 JSON 파일로 현재 레이아웃, 당신이 그들을 시작하면 실제 앱 대체됩니다 자리 창을 얻을, 새로운 I3 세션에로드합니다.


1. 유틸리티 를 사용하려면 perl-anyevent-i3perl-json-xs 패키지 가 필요할 수 있습니다 i3-save-tree.


3
레이아웃 기능은 놀랍게도 사용하기가 어렵습니다. 응용 프로그램을 "삼키는"자리 표시 자 창 개념은 동일한 작업 공간 lxterminal이나 urxvt단일 작업 공간 과 동일한 응용 프로그램을 여러 번 원할 경우 --name something.i3 / config에서 실행할 때 이를 사용하여 차별화해야 함을 의미 합니다. 문서의 예제는 작동하지만 내 작업 공간 중 하나에서 내보내기를 사용하면 작동하지 않는 것 같습니다. 당신이 사용하는 클래스 의 이름과에 대한 는 --name로 무엇을 사용합니다. 이 경우 json 형식에 너무 많은 괄호가 있으므로 GUI 도구 만 심각하게 기대할 수 있습니다 !

1
이제 4.8로 업데이트되었으며이 새로운 기능에 매우 만족합니다. .i3/config이전 버전에서도 로그인 할 때 항상 안정적으로 시작하는 데 문제가 있었지만 제대로 로그인하면 모든 것이 제대로 작동합니다. 내가 한 것은 몇 가지 레이아웃을 정렬하고 저장 한 다음 json 파일의 클래스 변수 편집하는 것입니다. 다음과 같이 i3-msg workspace 2\; append_layout mylayout.json\;다음과 i3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec medit첫 번째 원하는 레이아웃을 복원해야합니다. // 답변을 개선해 주셔서 감사합니다. btw.
damien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.