Ini adalah tindak lanjut dari pertanyaan sebelumnya tentang cara melakukan autostart aplikasi pada ruang kerja individual dengan window manager i3 dan apa yang dapat dan tidak bisa dilakukan di dalam ~/.i3/config
file konfigurasi.
Pertama, solusi yang disediakan berdasarkan dokumentasi Linux Arch dan pembaruan yang disediakan oleh op di mana ia mendorong logika lebih lanjut:
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'
Yang juga menarik adalah pertukaran ini tentang memanfaatkan sebagian dari itu secara langsung di baris perintah tanpa menduplikasi:
i3-msg workspace 3; i3-msg exec firefox
i3-msg workspace 9; i3-msg exec chromium
Tapi saya belum pernah melihat konfigurasi yang autostarts banyak windows / aplikasi di setiap ruang kerja sesuai dengan tata letak vertikal atau horizontal yang diinginkan. Tujuan saya adalah untuk memulai kembali konfigurasi sederhana ini yang saya gunakan:
_____ _____ ___________ ___________
| 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
Jadi itu dimulai dengan sesuatu seperti ini di config
file:
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'
Tetapi bagaimana Anda bisa mencapai tipe tata letak dan pemisahan vertikal / horizontal yang Anda inginkan? Saya mencoba, tetapi tidak jelas bagaimana Anda "mencampur" eksekusi dan tata letak. Sintaks terasa aneh untuk memulai karena Anda mengeksekusi i3-img
dalam konfigurasi i3. Apakah Anda menggunakan split h
(atau v) - layout split v
- exec layout split v
- focus down
(atau kanan) di antara setiap exec
panggilan ??
Untuk ruang kerja tunggal, konfigurasi memulai semua aplikasi baik secara vertikal maupun horizontal dan sepertinya saya tidak dapat memengaruhi tata letak - atau split
perintah terakhir dalam rantai memutuskan apakah windows ditambahkan secara vertikal atau horizontal. i3-msg
tampaknya mengabaikan bagian dari perintah yang tidak diformat dengan benar dalam beberapa kasus sehingga sulit untuk di-debug. Ini semakin diperparah oleh fakta bahwa Anda benar-benar harus keluar dari X dan startx
lagi setiap kali untuk memverifikasi hasil karena hanya menyegarkan konfigurasi dengan mod+shift+R
tidak akan memotongnya bahkan jika Anda menutup semuanya di setiap ruang kerja.
Apa cara yang tepat untuk mengkonfigurasi ini? Adakah yang punya solusi yang mengimplementasikan sesuatu seperti itu? The dokumentasi cukup bagus tetapi tidak memberikan bahwa saya dapat melihat contoh rinci yang bercampur pelaksanaan dan tata letak pada beberapa ruang kerja.
Jawaban:
Saya percaya bahwa Anda mencari fitur hemat tata letak baru yang diperkenalkan di i3 v4.8 (2014-06-15). Dokumentasi yang ditautkan tampaknya cukup menyeluruh.
Mengutip dari dokumentasi:
... dan catatan rilis :
1. Anda mungkin memerlukan paket perl-anyevent-i3 dan perl-json-xs untuk menggunakan
i3-save-tree
utilitas.sumber
lxterminal
atauurxvt
untuk satu ruang kerja, maka Anda harus membedakannya menggunakan--name something
ketika Anda mengeksekusinya di .i3 / config. Contoh dalam dokumen ini berfungsi tetapi ketika saya menggunakan ekspor dari salah satu ruang kerja saya, sepertinya saya tidak dapat membuatnya berfungsi. Anda menggunakan kelas untuk nama dan contoh untuk apa yang Anda gunakan dengan --name. Dalam hal ini saya hanya bisa berharap untuk alat gui dengan serius, karena format json memiliki banyak tanda kurung di dalamnya !!.i3/config
juga dengan versi sebelumnya, tetapi begitu saya masuk dengan benar, semuanya bekerja dengan baik. Apa yang saya lakukan adalah mengatur beberapa tata letak dan menyimpannya, kemudian hanya mengedit variabel kelas dari file json. Maka sesuatu sepertii3-msg workspace 2\; append_layout mylayout.json\;
dan kemudiani3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec medit
harus mengembalikan tata letak pertama yang Anda inginkan. // Terima kasih telah meningkatkan jawaban saya, btw.