menggunakan beberapa terminal x-windows dengan satu sesi tmux

19

Saya biasanya bekerja dengan 2 monitor yang tidak cukup lurus secara vertikal (saya memiliki catu daya benchtop di bawah monitor kiri saya), tetapi saya ingin memiliki 4 terminal windows berdampingan di layar saya yang dapat saya gulir dengan mudah, seperti:

masukkan deskripsi gambar di sini

Pengaturan ini membuat saya sangat sedih karena saya tidak dapat dengan mudah menelusuri semua 4 dengan cara yang waras hanya menggunakan keyboard saya (alt-tab tidak memotongnya untuk saya karena tidak menjaga "pemesanan" semua 4 jendela - jika Saya berulang kali menekan alt-tab, itu hanya memantul di antara 2 jendela saya yang paling baru digunakan)

Apakah ada cara untuk mendapatkan tmux untuk menghasilkan x-window kedua sehingga saya dapat memiliki 2 x-windows, dengan masing-masing memiliki 2 panel tmux di dalamnya?

johnny_boy
sumber
Jadi, masalah Anda adalah (apakah) Anda memasang ubin di dua monitor dan siklus alt + tab di antara dua jendela terbaru dan bukan keempatnya? Ini sepertinya pekerjaan untuk seorang tiling window manager. Sudahkah Anda mencobanya? Ada banyak dari mereka. awesome, i3, wmii, xmonad, Dan dwmadalah yang terbaik. Meskipun untuk tujuan Anda, saya sarankan i3(1), karena mudah untuk mengambil (membaca file konfigurasi mengajarkan Anda kontrol dan dasar-dasar konfigurasi) dan dirancang untuk pengaturan multi-monitor (xinerama / xrandr).
Braden Best
Saya mencoba i3 dan saya benar-benar menyukainya, tetapi hal itu menyebabkan crash pada pengaturan ubuntu saya sekitar sekali dalam satu jam :( Ini juga tidak bermain bagus dengan monitor saya untuk beberapa alasan.
johnny_boy
Betulkah? Bagaimana dengan yang lain? wmii dan xmonad akan menjadi yang berikutnya di antrian saran saya, karena mereka juga "suka" ubin wms, diikuti oleh dwm (favorit pribadi saya). Meskipun tidak seluas fitur i3, mereka menangani beberapa monitor IMO yang cukup elegan.
Braden Best

Jawaban:

15

tmux memungkinkan Anda untuk membuat "grup sesi" - beberapa sesi yang semuanya bisa dilampirkan ke set windows yang sama.

(Terima kasih kepada https://gist.github.com/chakrit/5004006 :)

Di terminal kiri, buat grup sesi + jendela baru.

tmux new-session -s left

Membaginya menjadi panel seperti biasa.

:split-window -v

Di terminal lain (kanan), sambungkan ke grup jendela yang ada. Anda harus memberikannya nama lama untuk terhubung, dan nama sesi sendiri untuk membedakannya.

tmux new-session -t left -s right

Di sesi itu, buat jendela lain dan bagi

:new-window
:split-window -h

Anda sekarang dapat melihat semua tmuxjendela ( ) di setiap jendela (terminal), tetapi tampilan di masing-masing tidak tergantung dari yang lain.

Untuk beralih dari satu ke yang lain (tanpa menggunakan pintasan window manager Anda sendiri), Anda bisa menggunakan mis. xdotool .

xdotool search --name 'left:0:' windowactivate
xdotool search --name 'right:1:' windowactivate

Ini mengasumsikan bahwa Anda telah mengaktifkan tmux's set-titlespilihan, untuk memberikan terminal nama dicari; dan bahwa Anda hanya menggunakan satu tmuxjendela (set panel) di masing-masing.

JigglyNaga
sumber
Untuk menyelesaikan ini, saya memerlukan skrip yang andal menanyakan panel saat ini dan maju ke yang "berikutnya", menggunakan perintah "aktifkan jendela" bila perlu. Tetapi saya belum menemukan cara untuk melakukan itu - saya pikir itu akan membutuhkan beberapa penyimpanan data di luar dari apa yang tersedia tmux.
JigglyNaga
Catatan Anda mungkin perlu mengaktifkan ukuran agresif (setw -g agresif-ubah ukuran), jika tidak windows tidak akan cocok dengan layar penuh
dgmora
0

Tidak bisakah Anda melakukan metode berteknologi rendah untuk mengubah ukuran satu terminal (dengan menyeret tepi) untuk menutupi kedua monitor, sedemikian rupa sehingga pembagi tengah berada pada batas kedua monitor?

Walf
sumber
1
Ini tidak berfungsi jika kedua monitor memiliki ketinggian yang berbeda, atau jika Anda menggunakan OS X.
James
0

Anda akan ingin memulai tmuxsesi terpisah di setiap terminal, dan kemudian membagi tmuxjendela tunggal setiap sesi menjadi dua panel secara vertikal.

Jadi, di setiap terminal:

$ tmux new-session \; split-window -h

Atau lebih pendek, di setiap terminal:

$ tmux new \; splitw -h

Anda perlu dua sesi, karena dengan satu sesi, kedua terminal akan selalu disinkronkan dan menampilkan tmuxjendela yang sama .

Kemudian gunakan pintasan desktop Anda untuk bertukar di antara kedua terminal.

Secara pribadi, saya akan pergi dengan satu monitor tunggal, satu tmuxsesi dan dua (atau berapa banyak) split tmuxwindows "di belakang" satu sama lain, dan bertukar antara mereka dengan Ctrlb- n, tapi itu masalah selera.

$ tmux new \; splitw -h \; neww \; splitw -h
Kusalananda
sumber