mengelola tata letak pane secara presisi: layout preset seperti even-horizontal, even-vertical, main-vertical, dan tiled, cycle dengan select-layout, break-pane dan join-pane antar window, hingga zoom.

Di episode 6 kita membangun fondasi konfigurasi dan mendapatkan ~/.tmux.conf yang terasa milik kalian sendiri. Sekarang saatnya menggunakan ruang itu secara maksimal. Episode ini adalah tentang tata letak: bagaimana tmux mengatur pane-pane di layar, dan bagaimana kalian mengendalikannya dengan presisi — bukan sekadar split lalu berdoa semuanya rapi.
Mengapa tata letak penting dalam dunia nyata? Karena sebagian besar sesi kerja engineer adalah teater multi-proses: editor, server dev yang mencetak log, htop, klien database, dan kadang docker compose logs sekaligus. Di monitor ultrawide, kalian bisa menampung semuanya; di laptop kecil, kalian harus pandai mengatur prioritas ruang. Layout yang buruk membuat kalian terus-menerus resize manual; layout yang baik membuat pekerjaan mengalir tanpa berpikir tentang jendela. Di tmux 3.7b (rilis stabil terbaru saat artikel ini ditulis), seluruh perangkat ini — layout preset, cycle, custom layout, swap, break, join — tersedia lengkap.
Peta episode ini: pertama kita kuasai layout preset dan cara berpindah antar layout dengan prefix + Space serta select-layout. Lalu kita pelajari cara membuat dan menyimpan layout custom untuk set monitor tertentu. Berikutnya resize presisi dan swap pane, dilanjutkan break-pane dan join-pane untuk memindahkan pane antar window — salah satu kekuatan paling diremehkan tmux. Terakhir, zoom dan display-panes untuk fokus dan lompat cepat.
Tmux menawarkan lima layout preset yang mengatur seluruh pane di window aktif sekaligus. Tekan prefix + Space sekali dan tmux mengganti tata letak ke layout berikutnya; tahan prefix dan tekan Space berulang untuk memutar semua varian sampai menemukan yang pas. Ini cara tercepat merapikan window yang sudah berantakan karena resize manual yang tak beraturan — satu tombol, seluruh layar beres.
Kelima layout itu bukan variasi kosmetik; masing-masing lahir untuk pola kerja tertentu. even-horizontal membagi layar menjadi satu baris pane dengan lebar sama — ideal untuk memantau beberapa log secara paralel. even-vertical membaliknya menjadi satu kolom pane setinggi sama — cocok untuk editor dan terminal yang ditumpuk. main-horizontal memberi satu pane besar di bagian atas dan baris pane kecil di bawahnya, sementara main-vertical memberi satu pane dominan di kiri — dua layout terakhir adalah pilihan favorit untuk editor utama yang mendominasi layar. Terakhir, tiled membagi layar menjadi grid persegi dengan ukuran seimbang — pas untuk memantau banyak proses sekaligus.
| Layout | Deskripsi | Pola Kerja yang Cocok |
|---|---|---|
even-horizontal | Satu baris, semua pane selebar sama | Memantau beberapa log paralel |
even-vertical | Satu kolom, semua pane setinggi sama | Editor dan terminal ditumpuk |
main-horizontal | Pane besar di atas, sisanya di bawah | Editor utama + terminal pendukung |
main-vertical | Pane besar di kiri, sisanya di kanan | Kode, output, dan log berdampingan |
tiled | Grid persegi, semua pane seimbang | Monitoring banyak proses |
Di balik prefix + Space ada perintah select-layout. Perintah ini adalah alat presisi yang sama dengan tombol pintasnya, tetapi dengan kendali lebih: tmux select-layout -p memilih layout sebelumnya (kebalikan dari cycle maju prefix + Space), -l memilih layout yang terakhir dipakai, dan -t menargetkan window lain. Kombinasi yang paling sering dipakai praktisi adalah -p: ketika kalian melewati layout yang diinginkan, satu select-layout -p membawa kalian kembali tanpa harus memutar satu lingkaran penuh.
tmux select-layout -p
tmux select-layout -t 2:1
tmux select-layout tiledBaris kedua menargetkan window 2 pane 1 di session aktif — layout bisa diatur dari luar, misalnya dari skrip yang sedang menyiapkan workspace. Baris ketiga memilih layout berdasarkan nama. Ketiganya menunjukkan prinsip yang sudah kita kenal: apa pun yang bisa ditekan di keyboard, bisa juga dijalankan sebagai perintah — dan perintah bisa diotomasi.
Layout preset memang praktis, tetapi untuk set monitor yang spesifik — misalnya ultrawide dengan pane editor besar di kiri — kalian ingin tata letak yang persis seperti yang kalian susun sekali, lalu dipakai terus. Tmux menyimpan representasi setiap tata letak sebagai layout string, dan string itu bisa ditangkap, disimpan, lalu diterapkan kembali.
Caranya: susun pane secara manual persis seperti yang diinginkan (split, resize, zoom sesuai kebutuhan), lalu tangkap layout string-nya. tmux display-message -p '#{window_layout}' mencetak string itu ke layar, dan tmux list-windows juga menampilkannya di dalam kurung. Simpan string tersebut — misalnya di catatan atau sebagai keybinding — lalu terapkan kapan saja dengan select-layout.
tmux display-message -p '#{window_layout}'
tmux list-windows
tmux select-layout "c92b,159x44,0,0{79x44,0,0,79x44,80,0}"String aneh seperti c92b,159x44,0,0{...} tidak perlu dihafal — perlakukan ia sebagai resep. Untuk membuatnya permanen, kalian bisa mengikatnya ke tombol di ~/.tmux.conf: bind L select-layout "c92b,...". Dengan begitu, satu keybinding memulihkan seluruh tata letak kerja kalian, persis seperti membuka template.
Satu catatan penting: layout string sangat bergantung pada ukuran window saat ditangkap. Resep yang dibuat di monitor ultrawide akan "diregangkan" ketika diterapkan di window laptop yang lebih kecil — pane besar tetap besar, hanya proporsinya yang menyesuaikan. Karena itu, untuk pekerjaan yang berpindah-pindah ukuran layar, layout preset seperti main-vertical sering lebih andal daripada custom string; simpan custom layout untuk set monitor yang benar-benar tetap.
Layout preset merapikan secara massal; tetapi kadang kalian hanya ingin menyentuh satu pane. Di sinilah resize dan swap bekerja.
prefix + Ctrl+panah menyesuaikan ukuran pane aktif satu sel ke arah panah — kecil, presisi, dan karena didaftarkan sebagai repeatable, kalian bisa menahan tombolnya untuk terus berjalan. prefix + Alt+panah melompat lima sel sekaligus untuk gerakan lebih besar. Aturan yang harus diingat: resize tmux mencuri ruang dari pane tetangga, bukan menarik batas kosong. Jika pane sebelah sudah mencapai ukuran minimum, resize berhenti diam-diam — perilaku normal, bukan bug. Pola praktisnya: Alt untuk memperlebar editor sebelum bekerja, Ctrl untuk penyetelan halus saat pane terasa sesak.
Resize juga bisa dilakukan non-interaktif lewat tmux resize-pane dari command prompt atau skrip — misalnya tmux resize-pane -R 10 memperlebar pane aktif sepuluh sel, dan resize-pane -t 0:1.2 -D 5 mengecilkan pane tertentu dari luar. Ini berguna ketika kalian menyiapkan workspace otomatis: alih-alih mengandalkan manusia menekan panah, skrip bisa memastikan editor selalu mendapat ruang yang cukup sebelum sesi dimulai. Prinsip yang sama berlaku di seluruh episode ini — semua manipulasi ruang memiliki bentuk perintah yang bisa diotomasi.
prefix + dan prefix + } memindahkan pane aktif satu posisi ke kiri atau ke kanan dalam urutan layout — misalnya menukar posisi editor dengan terminal agar letaknya sesuai kebiasaan. Ini berbeda dari resize: ukuran dan isi pane tetap, hanya posisinya yang bertukar.
| Keybinding | Aksi |
|---|---|
prefix + Space | Cycle ke layout berikutnya |
prefix + z | Zoom / unzoom pane aktif |
prefix + Ctrl+panah | Resize pane aktif 1 sel |
prefix + Alt+panah | Resize pane aktif 5 sel |
prefix + / } | Swap posisi pane ke kiri / kanan |
prefix + ! | Pisahkan pane menjadi window baru |
prefix + q | Tampilkan nomor semua pane |
prefix + % / " | Split vertikal / horizontal |
Sering terjadi: sebuah pane "nyangkut" di window yang salah. Contoh klasik — kalian sedang menjalankan log server di window proyek, lalu menyadari log itu sebaiknya pindah ke window monitoring yang sudah ada. Memindahkan pane antar window adalah operasi dua arah: break-pane mengeluarkan pane dari window-nya, dan join-pane memasukkannya ke window lain.
prefix + ! (default binding break-pane) memindahkan pane aktif keluar dan membungkusnya dalam window baru yang hanya berisi pane itu. Dari CLI, tmux break-pane -d melakukan hal yang sama tetapi window baru dibuat tanpa memindahkan fokus — kalian tetap bisa menyelesaikan pekerjaan di window asal. Sebaliknya, tmux join-pane -t 2 mengambil pane aktif dan menggabungkannya sebagai pane baru di window 2, dan tmux join-pane -s 3:1 -t 0 mengambil pane tertentu (window 3, pane 1) untuk digabungkan ke window 0.
tmux break-pane -d
tmux break-pane -t 4Contoh nyata di lapangan: saat sesi troubleshooting, kalian sering butuh mengisolasi satu proses — misalnya tcpdump yang sedang berjalan — ke window terpisah agar output-nya tidak mengotori layar utama. prefix + ! sekali ketuk sudah cukup. Sebaliknya, ketika sesi sudah selesai dan kalian ingin merapikan, join-pane -t 0 menggabungkan semua pane bekas ke window utama. Operasi ini membentuk fondasi workflow multi-window yang akan kita dalami di episode 8 — pane adalah unit yang bisa dipindah, bukan terpaku pada tempat lahirnya.
Note
break-pane dan join-pane tidak menghentikan proses di dalam pane. Proses yang berjalan (misalnya editor vim atau server dev) tetap hidup selama perpindahan — hanya wadahnya yang berubah. Inilah salah satu alasan tmux terasa aman untuk eksperimen: kalian bisa merombak tata letak sesuka hati tanpa takut menghentikan pekerjaan.
Dua keybinding terakhir melengkapi kendali ruang kalian. prefix + z melakukan zoom: pane aktif membesar memenuhi seluruh window dan pane lain disembunyikan sementara. Tekan lagi untuk mengembalikan tata letak. Zoom adalah jawaban atas layar yang sempit — daripada resize satu per satu, zoom memberi fokus penuh satu pane saat dibutuhkan, lalu kembali ke tata letak semula tanpa merusaknya. Saat zoom aktif, proses di pane lain tetap berjalan; ini bukan "minimize", melainkan "fokus".
prefix + q memanggil display-panes: tmux menampilkan nomor pada setiap pane selama beberapa detik. Tekan nomor yang tampil dan fokus langsung melompat ke pane itu. Ini adalah navigasi yang jauh lebih cepat daripada menekan panah berulang kali ketika window memiliki banyak pane, dan di episode-episode berikutnya nomor pane ini juga menjadi kunci untuk menargetkan perintah seperti capture-pane -t.
main-vertical dengan dua pane dan dengan lima pane menghasilkan bentuk yang sangat berbeda. Ekspektasikan hasil sesuai jumlah pane — jika tampak aneh, itu bukan bug, melainkan sifat layout yang menyesuaikan.prefix + z) sebagai jalan pintas.prefix + ! membuat window baru. break-pane menyembunyikan pane dari window asal dan membuat window baru. Jika tiba-tiba jumlah window bertambah, itu bukan kecelakaan — gunakan join-pane untuk menggabungkannya kembali.join-pane. join-pane -t 2 menggabungkan pane aktif ke window 2; pastikan nomor target benar dengan tmux list-windows sebelum mengeksekusi. Pane yang sudah pindah sulit "dikembalikan asal" secara otomatis.prefix + z) sebelum mengira sesuatu macet.bind L select-layout "string" di ~/.tmux.conf, atau simpan resepnya di catatan yang bisa diakses.Episode ini menutup bab penguasaan ruang di tmux. Kalian memahami lima layout preset — even-horizontal, even-vertical, main-horizontal, main-vertical, dan tiled — dan cara memutar antar layout dengan prefix + Space serta mengendalikannya presisi lewat select-layout -p, -l, dan -t. Kalian bisa menangkap layout string dengan display-message -p '#{window_layout}', menyimpannya, dan menerapkannya kembali sebagai layout custom. Kalian menguasai resize presisi (prefix + Ctrl/Alt+panah), swap posisi (prefix + / prefix + }), memindahkan pane antar window dengan break-pane dan join-pane, fokus penuh dengan zoom prefix + z, dan lompat cepat dengan display-panes prefix + q.
Poin yang harus kalian bawa:
prefix + Space memutar layout; select-layout -p memutar mundur, -l kembali ke yang terakhir.prefix + z saat butuh ruang penuh seketika.break-pane (prefix + !) dan join-pane memindahkan pane antar window tanpa menghentikan prosesnya.display-panes (prefix + q) mengubah nomor-nomor pane menjadi alat navigasi cepat.Dengan pane yang bisa ditata, dipindah, dan difokuskan sesuka hati, tmux kalian sudah berperilaku seperti editor ruang yang sesungguhnya. Di episode 8 kita melangkah keluar dari satu layar: multi-session workflow — bagaimana bekerja dengan banyak session sekaligus, memindahkan window antar session, dan memanfaatkan daftar session ketika satu terminal tidak lagi cukup. Sampai jumpa di episode 8!