Làm thế nào để bạn thực hiện bố trí với tự động khởi động các ứng dụng trong trình quản lý cửa sổ i3?


23

Đây là phần tiếp theo của câu hỏi trước về cách tự khởi động ứng dụng trên các không gian làm việc riêng lẻ với trình quản lý cửa sổ i3 và những gì có thể và không thể được thực hiện trong ~/.i3/configtệp cấu hình.

Đầu tiên, giải pháp được cung cấp dựa trên tài liệu Arch Linux và một bản cập nhật được cung cấp bởi op nơi anh ta đẩy logic hơn nữa:

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'

Điều đáng quan tâm là sự trao đổi này về việc tận dụng một số điều đó trực tiếp trên dòng lệnh mà không trùng lặp:

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

Nhưng tôi chưa bao giờ thấy một cấu hình tự động khởi động nhiều cửa sổ / ứng dụng trong mỗi không gian làm việc theo bố cục dọc hoặc ngang mong muốn. Mục tiêu của tôi là tự động khởi động cấu hình đơn giản này mà tôi sử dụng:

 _____ _____     ___________     ___________
| 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

Vì vậy, nó bắt đầu với một cái gì đó như thế này trong configtập tin:

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'

Nhưng làm thế nào trên thế giới bạn đạt được kiểu bố trí và phân chia theo chiều dọc / ngang mà bạn muốn? Tôi đang cố gắng, nhưng không rõ bạn "trộn" cách thực hiện và bố cục như thế nào. Cú pháp cảm thấy bình dị khi bắt đầu vì bạn đang thực thi i3-imgtrong cấu hình của i3. Bạn có sử dụng split h(hoặc v) - layout split v- exec layout split v- focus down(hoặc phải) ở giữa mỗi execcuộc gọi không ??

Đối với một không gian làm việc, cấu hình khởi động tất cả các ứng dụng theo chiều dọc hoặc chiều ngang và tôi dường như không thể ảnh hưởng đến bố cục - hoặc splitlệnh cuối cùng trong chuỗi quyết định liệu các cửa sổ được thêm theo chiều dọc hay chiều ngang. i3-msgdường như bỏ qua các phần của lệnh không được định dạng chính xác trong một số trường hợp nên khó gỡ lỗi. Điều này còn được củng cố bởi thực tế là bạn thực sự cần phải thoát X và startxmột lần nữa để xác minh kết quả vì chỉ cần làm mới cấu hình mà mod+shift+Rsẽ không cắt nó ngay cả khi bạn đóng mọi thứ trên mỗi không gian làm việc.

Cách thích hợp để cấu hình này là gì? Có ai có một giải pháp mà thực hiện một cái gì đó như thế? Các tài liệu là khá tốt nhưng nó không cung cấp mà tôi có thể nhìn thấy một ví dụ cụ thể mà trộn thực hiện và bố trí trên nhiều không gian làm việc.


Cũng mở rộng về điều này .

Người ta không cần phải sử dụng FF hoặc urxvt để cung cấp giải pháp. Theo như tôi biết thì không có gì đặc biệt để ai đó có thể sao chép bố cục # 2 với bất kỳ chương trình nào, lưu tệp json, tách tệp, xem có thể khởi chạy từ tệp cấu hình khi đăng nhập hay không, sau đó chỉ cần thay đổi tên chương trình trước khi gửi câu trả lời ...

bạn có thể tải lên phần trong tệp i3 của mình kết hợp với bố cục json đã lưu / khôi phục không? Tôi có cùng một vấn đề .. nhưng không làm cho nó hoạt động. Bạn có sử dụng nhiều màn hình trong tập tin config / json không?

Câu trả lời:


11

Tôi tin rằng bạn đang tìm kiếm tính năng tiết kiệm bố cục mới được giới thiệu trong i3 v4.8 (2014-06-15). Các tài liệu liên kết có vẻ khá kỹ lưỡng.

Trích dẫn từ tài liệu:

Lưu / khôi phục bố cục cho phép bạn tải tệp bố cục JSON để bạn có thể có bố cục cơ sở để bắt đầu làm việc sau khi bật nguồn máy tính. Các trường hợp sử dụng động cũng xuất hiện trong tâm trí: nếu bạn thường xuyên (nhưng không phải luôn luôn!) Cần bố trí lưới các thiết bị đầu cuối với các lệnh ping / traceroute để chẩn đoán các sự cố mạng, bạn có thể dễ dàng tự động mở các cửa sổ này theo đúng bố cục.

... và ghi chú phát hành :

tl; dr: xuất 1 bố cục hiện tại của bạn dưới dạng tệp JSON, tải nó vào các phiên i3 mới, nhận các cửa sổ giữ chỗ sẽ được thay thế bằng các ứng dụng thực tế khi bạn khởi động chúng.


1. Bạn có thể yêu cầu các gói perl-anyevent-i3perl-json-xs để sử dụng i3-save-treetiện ích.


3
Các tính năng bố trí là thách thức đáng ngạc nhiên để sử dụng. Khái niệm của họ về cửa sổ giữ chỗ "nuốt" ứng dụng có nghĩa là nếu bạn muốn nhiều lần cùng một ứng dụng như lxterminalhoặc urxvtcho một không gian làm việc, thì bạn phải phân biệt chúng bằng cách sử dụng --name somethingkhi bạn thực thi chúng trong .i3 / config. Ví dụ trong tài liệu hoạt động nhưng khi tôi sử dụng xuất từ ​​một trong không gian làm việc của mình, tôi dường như không thể làm cho nó hoạt động. Bạn sử dụng lớp cho tên và ví dụ cho những gì bạn đã sử dụng với --name. Trong trường hợp này tôi chỉ có thể hy vọng một công cụ gui nghiêm túc, vì định dạng json có rất nhiều dấu ngoặc trong đó !!

1
Bây giờ tôi đã cập nhật lên 4.8 và tôi khá hài lòng với tính năng mới này. Tôi luôn gặp một số rắc rối với việc bắt đầu mọi thứ một cách đáng tin cậy khi đăng nhập từ .i3/configcác phiên bản trước đó, nhưng một khi tôi đã đăng nhập đúng cách, mọi thứ đều hoạt động tốt. Những gì tôi đã làm là sắp xếp một vài bố cục và lưu chúng, sau đó chỉ chỉnh sửa các biến lớp của các tệp json. Sau đó, một cái gì đó như i3-msg workspace 2\; append_layout mylayout.json\;và sau đó i3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec meditsẽ khôi phục bố trí mong muốn đầu tiên của bạn. // Cảm ơn đã cải thiện câu trả lời của tôi, btw.
damien
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.