Anda Mungkin Tidak Benar-Benar Membutuhkan tmux: Cara Menggantikan tmux dalam Workflow Pengembangan
(bower.sh)- tmux telah digunakan dalam waktu lama, tetapi belakangan muncul keraguan terhadap kompleksitas dan keterbatasannya (kompatibilitas warna, scrollback, penyalinan dengan mouse, tidak mendukung protokol tertentu, dll.)
- Fitur utama tmux seperti persistensi sesi (detach/attach) atau pembagian/pengelolaan jendela tidak harus selalu diwujudkan dengan tmux
- Dengan memanfaatkan tool ringan berfilosofi Unix seperti dtach, abduco, shpool, kita bisa fokus pada pengelolaan sesi sambil tetap mendapatkan scrollback native dan kesederhanaan
- Khususnya, melalui kombinasi
shpool+ ssh, dimungkinkan membangun lingkungan untuk mengelola beberapa sesi remote langsung dengan window manager, sambil tetap memakai fitur native (notifikasi, scroll, title, dll.) apa adanya - Meski tidak sempurna, menurut penulis pendekatan ini sepenuhnya bisa menggantikan tmux, dan menghadirkan workflow yang sederhana serta mudah dirawat
Kelebihan dan Kekurangan tmux
- Fitur seperti mempertahankan sesi (detach/attach) dan pengelolaan jendela (tab, split) selama ini merupakan inti workflow yang disediakan tmux
- Namun, tanpa pengaturan
TERMyang benar, muncul masalah rendering warna, dan kompleksitas bertambah karena perlu mempertimbangkan interaksi antara terminal dan tmux - Penggunaan buffer scroll juga mengharuskan pengguna membiasakan diri dengan cara kerja tmux yang terpisah, dan penyalinan area dengan mouse juga terasa kurang nyaman di lingkungan splits
- Dukungan terhadap fitur terminal baru seperti kitty graphics protocol juga kurang memadai, termasuk masalah tidak didukungnya protokol eksperimental
- Ada juga kritik bahwa multiplexer, karena menafsirkan ulang escape code yang tumpang tindih serta menambahkan konsep sesi/jendela, menghambat perkembangan ekosistem terminal
Menjelajahi Cara Pengganti tmux
- Persistensi sesi:
- Solusi sederhana seperti
ctrl-z+fg,nohup,disownmemang ada, tetapi sulit menjadi pengganti penuh - Muncul berbagai tool yang memang bertujuan hanya mempertahankan sesi (
dtach, abduco, shpool)- Menghubungkan daemon dan klien melalui kombinasi fork() dan UNIX socket
- Berbeda dari tmux, tanpa split virtual sehingga mendukung scrollback native, dan sebagian juga menyediakan pemulihan buffer
- Dari pengalaman penggunaan, sebagian besar tool pengganti masih kurang matang karena bug dan masalah seperti keybind detach yang tidak berfungsi di dalam
nvim - Hanya shpool yang dinilai paling matang dari sisi perintah detach/attach dan kustomisasi keymap
- Solusi sederhana seperti
- Pengelolaan jendela:
- Di lokal, pembagian dan penataan dikelola oleh window manager
- Di lingkungan remote (SSH) pun, dengan menggabungkan ssh_config dan shpool, beberapa sesi dapat dipertahankan secara independen di jendela terpisah
- Dikombinasikan dengan autossh, sesi tetap terjaga bahkan di lingkungan yang memerlukan reconnect jaringan
Workflow Baru
- Secara pribadi, penulis mengelola jendela dengan ghostty (laptop) dan sway+foot (PC pribadi). Server berjalan di VM headless berbasis Proxmox, sehingga lingkungan pengembangan via SSH selalu aktif
- Beberapa sesi shpool dihubungkan otomatis melalui shortcut ssh, lalu dikendalikan secara independen dari window manager lokal
- Otomatisasi attach sesi shpool untuk tiap host di
ssh_config - Memungkinkan akses terpisah ke banyak sesi seperti IRC, pengelolaan dotfiles, dan lingkungan neovim yang berbeda untuk tiap terminal
- Otomatisasi attach sesi shpool untuk tiap host di
- Fitur-fitur yang didukung tmux secara kurang stabil, seperti scroll native, notifikasi, dan title terminal, justru bekerja lebih alami
- Tetap ada kekurangan: pemulihan status terminal saat reconnect ke vim bisa tertunda, dan ada masalah resize saat memakai
nvim- Tidak mendukung multiplayer (konflik sesi saat autossh aktif bersamaan dari beberapa klien)
- Namun, menurut standar pribadi penulis, ini merupakan keberhasilan penuh dalam menggantikan tmux
Kesimpulan
- Meski tidak sepenuhnya identik, ada kemungkinan beralih ke workflow pengelolaan sesi yang lebih sederhana dan fleksibel, lepas dari kompleksitas serta keterbatasan tmux
- Bergantung pada workflow masing-masing, tool alternatif seperti shpool layak dipertimbangkan
7 komentar
Sekarang orang-orang membuat hal seperti tmux dengan AI lalu langsung memakainya. Dengan Xterm.js + react + electron, dalam 3-4 jam saja bisa mencetak 100 hal seperti itu, lalu kalau perlu tinggal diperbaiki secara real-time sambil dipakai, rasanya seperti makan shabu-shabu? Tinggal masukkan apa yang ingin dimakan, lalu limpahkan banyak-banyak ke source.
Saya menggunakannya dengan nyaman menggunakan wezterm.
Screen paling mantap!
cargo install shpool...saya pakai tmux saja...setiap OS harus punya paket yang berbeda-beda!Ada pendatang baru yang luar biasa bernama Zellij. Sangat direkomendasikan.
Zellij - terminal untuk developer & ops
Ini juga ternyata pernah saya posting cukup lama yang lalu, haha
Komentar Hacker News
Tulisan ini memang ditujukan untuk pengguna Linux-on-the-Desktop, tetapi saya ingin menekankan bahwa tmux benar-benar bersinar saat dipakai bersama iTerm2 di MacBook
Berkat integrasi tmux di iTerm2, tmux menyatu sepenuhnya secara alami ke dalam alur kerja saya
Jika Anda menaruh konfigurasi seperti di bawah ini di
~/.ssh/config, Anda bisa dengan mudah mengakses server pengembangan jarak jauh melalui ssh tmux kapan saja, bahkan setelah menyalakan ulang MacBook atau berpindah jaringanBerkat integrasi iTerm2 dan tmux, tab tmux jarak jauh dan scroll buffer bekerja seperti tab lokal, dan sebenarnya Anda bahkan tidak perlu tahu perintah tmux untuk memakainya
Saya memakai Linux di semua perangkat pribadi saya, dan terutama memakai MacBook untuk bekerja, jadi tmux sangat berguna karena menghadirkan lingkungan yang sama secara lintas platform
Di Linux saya memakai Alacritty, tetapi di macOS selalu ada sesuatu yang tidak langsung berjalan karena pengaturan yang pas atau perbedaan terkait jendela/scroll
Saya tidak ingin menghabiskan waktu untuk perbedaan OS seperti ini, jadi kombinasi tmux dan iTerm2 bagus karena memberi pengalaman yang nyaris sama dengan Linux
Fakta bahwa scrollback dalam sesi disediakan sepenuhnya terpisah juga merupakan kelebihan bagi saya
Kritik terhadap tmux menurut saya justru lebih dekat ke isu para pengembang terminal
Jika dukungannya kurang, tinggal pindah ke terminal yang memberi dukungan lebih baik
Saya memakai kombinasi mosh dan screen
Bahkan jika server reboot, sesi bisa dipulihkan, dan saat berganti jaringan sesi tidak terputus
Referensi: Immortal SSH Sessions
Saya sudah mencoba tmux puluhan kali, tetapi kurang cocok, jadi selalu kembali ke screen
Namun setelah melihat tips ini, saya jadi ingin mencobanya sekali lagi
Dalam kombinasi vim, tmux, dan iTerm2, saya sering terbentur masalah warna dan font, dan akhirnya menyerah memakai tmux di lokal
Keuntungan yang didapat, meski bisa bertahan dari update dan menjaga sesi tetap hidup, tidak terlalu besar
Kalau masalah font saja bisa diatasi, saya bersedia mencobanya lagi, tetapi sekarang saya sedang kekurangan waktu
Saya penasaran apakah ada terminal Linux yang menyediakan integrasi dengan tmux seperti iTerm2
Saya masih memakai GNU Screen, tetapi bersedia mencoba tmux sekali lagi
Melihat tulisan blog ini membuat saya sadar lagi kenapa saya memakai tmux
Saat melihat orang harus melakukan banyak sekali pekerjaan untuk meniru alur kerja yang mirip tmux, rasanya jauh lebih baik langsung pakai tmux saja
Kadang copy-paste memang agak merepotkan, tetapi saya tidak terlalu peduli
Kritik bahwa 'multiplexer menimbulkan overhead yang tidak perlu' tidak perlu dipikirkan kecuali Anda adalah maintainer codebase
Masalah copy-paste bukan hanya masalah tmux
Semua aplikasi yang menggambar seluruh terminal sendiri, seperti vim, bisa mengalaminya
Ini bisa diselesaikan dengan mudah memakai terminal escape sequence OSC52
Jika memakai skrip Python sederhana di bawah, hasil grep dan sebagainya juga bisa langsung dikirim ke clipboard sistem
tmux dan nvim sudah mendukung OSC52, dan ini juga mudah dipakai di tempat lain
Sebagai catatan, saya pernah mengirim PR ke tmux, dan saya suka karena maintainer-nya, Nick Marriott, sangat enak diajak berkomunikasi
Kodenya juga tertata rapi, dan tmux pun menjadi lebih baik
Saya lelah dengan diskusi yang terkesan memaksakan masalah yang sebenarnya tidak ada
Alasan yang disampaikan penulis tidak terasa meyakinkan, dan malah membuat saya meragukan klaimnya tentang "pengalaman memakai tmux lebih dari 7 tahun"
Saya baru mengenal Tmux beberapa minggu lalu, dan langsung terpikat pada kemungkinan scripting untuk mengirim input tombol ke pane tertentu secara terprogram
Terinspirasi dari sebuah forum Jepang, saya mulai bertanya-tanya apakah Claude Code (selanjutnya disebut CC) bisa berinteraksi langsung dengan skrip CLI yang memerlukan interaksi, dan saya memastikan hal itu bisa diwujudkan dengan Tmux
Karena itu saya membuat alat kecil bernama claude-code-tools, agar agen CLI seperti CC bisa membuat pane Tmux, menjalankan skrip di dalamnya, dan bahkan berinteraksi secara real-time
Rasanya seperti versi terminal dari Playwright atau Puppeteer
Tautan GitHub claude-code-tools
Dengan cara ini, CC bisa dipakai untuk menguji otomatis skrip CLI yang memerlukan interaksi, atau menampilkan UI di pane lain lalu menguji lewat browser dengan Puppeteer MCP, mengaktifkan debugger dan memasang breakpoint, menghubungkan multi-agent, dan banyak penerapan lain
Saya penasaran apakah alat alternatif tmux juga bisa menghadirkan fleksibilitas seperti ini
Sebagai catatan, screen juga bisa mengirim input tombol ke pane secara terprogram lewat perintah "stuff"
Dengan pendekatan ini, Claude Code bisa mengendalikan berbagai instance CC seperti Gemini CLI dan OpenCode dalam mode interactive
Ini memungkinkan bentuk integrasi yang berbeda dari sub-agent tradisional
Saya penasaran apakah wrapper tmux-cli benar-benar membantu meningkatkan hasil
Saya cukup menyuruh Claude memakai perintah tmux yang sudah ada, dan itu bekerja dengan baik, jadi tanpa memakai Bash terpisah saya menjalankan semua perintah di dalam sesi tmux
Jika ingin melakukan hal seperti ini dengan lebih mudah di level terminal, fitur remote control milik Kitty juga keren
Pengenalan Kitty Remote Control
Terminal pada dasarnya hanyalah file descriptor, jadi alat serupa seperti script(1), expect(1), dan chat(8) sudah ada sejak era 80-an
Tidak harus tmux
Jika pengaturan TERM di tmux tidak dilakukan dengan benar, warna dan sebagainya memang tidak akan tampil sebagaimana mestinya, tetapi masalah yang sama juga terjadi di semua emulator/program terminal
Di sistem Unix dan Linux, konsep TERM dan terminfo/termcap itu sendiri memang mendasar, jadi pengaturan yang benar itu wajib
Ini bukan masalah yang khas tmux
Namun tetap disayangkan karena penulis menyalahkan tmux
Soal scroll juga saya ragu itu memang masalah tmux sendiri, dan tmux memakai alternate screen buffer, yang diperkenalkan agar garis dasar viewport jelas sehingga pergerakan kursor lebih mudah
Kebanyakan terminal modern mengizinkan scroll lokal bahkan saat alternate screen aktif, sehingga karakteristik ini tidak benar-benar dipatuhi
Kebanyakan program juga tidak akan berjalan sesuai maksud jika pengaturan default tidak benar
Dalam kasus tmux, alasan 'kenapa'-nya memang tidak langsung terlihat sehingga terasa merepotkan, tetapi solusi apa yang tepat juga tidak jelas (misalnya: apakah default-nya sebaiknya 256colors?)
Itu benar, tetapi saat memakai tmux ada satu lapisan tambahan yang harus diperhatikan
Di dalam tmux Anda harus memakai TERM khusus tmux, dan di luar tmux harus memakai TERM yang sesuai dengan terminal Anda sendiri
Bahkan dari FAQ tmux saja terlihat bahwa sebagian besar masalah tampilan berasal dari TERM yang tidak diatur
Kritik bahwa "multiplexer memberi overhead yang tidak perlu" justru adalah alasan saya menyukai tmux
Dalam situasi sekarang, ketika semakin banyak aplikasi meninggalkan dukungan termcap, keberadaan tmux membuat saya tetap bisa menjalankan aplikasi bahkan di terminal lama seperti VT520
Saya tidak terlalu peduli terminal developer mana pun yang membenci tmux
Pada akhirnya, dari sudut pandang pengguna, yang penting adalah semuanya bekerja dengan baik, bukan keanggunan arsitektur
Sebagai catatan pribadi, saya rasa alacritty lebih baik (meski saya paling sering memakai Konsole)
Saya hanya ingin bilang saya iri Anda punya VT520
Sudah lama saya mencari VT525, tetapi harganya mahal dan kebanyakan penjual ada di luar negeri
Saya selalu penasaran apakah nosh realizer berjalan baik di genuine VT525
Kalaupun tmux hilang, aplikasi dengan ketidakcocokan TERM yang halus masih bisa ditransliterasikan dengan cara lain
VT420 saya tidak mendukung hardware flow control, jadi saya harus memakai software flow control, dan metode ini kurang cocok dengan aplikasi terminal modern sekarang
GNU Screen menjadi solusi yang sangat baik, selain juga punya berbagai fitur lain
Saya banyak memakai tmux di emulator modern, tetapi di terminal lama sepertinya ia kurang pada fitur flow control penting ini
Saya setuju bahwa tmux berguna untuk menangani aplikasi yang tidak mendukung termcap/terminfo
Saya penasaran kenapa Anda merasa alacritty lebih baik
Di hardware lama startup-nya juga lambat, fitur praktis seperti tab pun kurang, dan bahkan hasil benchmark tertinggal dari kitty/ghostty/konsole/foot
Meski begitu, menarik juga bahwa tetap ada orang yang memakai alacritty karena suatu alasan
Saya masih akan terus memakai tmux
Saya menyukainya karena manajemen sesi antar banyak proyek dan pemulihan sesi setelah reboot jadi mudah
mouse copy/paste sama sekali tidak bermasalah berkat tmux-yank
Sudah bertahun-tahun saya memakai lingkungan yang sama
Dengan fitur send-keys di tmux, saat merapikan dotfile saya membuat otomatisasi untuk memperbarui alias atau file konfigurasi sekaligus di banyak pane/sesi dan juga me-restart nvim dengan mudah
Saya merangkum pengalaman ini di blog dan video
Bagi saya, "you might not need tmux" mirip dengan diskusi "you might not need browser tabs"
Jika sesi terminal atau halaman web Anda hanya satu atau dua, mungkin memang tidak perlu, tetapi begitu harus menangani lebih dari itu, manajemen jendela jadi terlalu merepotkan dan akhirnya Anda mengulang implementasi fungsi yang sama
Akhir-akhir ini saya justru berusaha memaksimalkan fitur manajemen jendela dari window manager yang saya pakai
Daripada browser tab, terminal tab, atau tmux, saya menyerahkan penataan jendela, manajemen tab, dan bookmark ke window manager, dan itu tidak terasa merepotkan
Saya makin merasa bahwa manajemen tab memang seharusnya menjadi urusan window manager, bukan aplikasi
Window manager saya bisa menata jendela dalam bentuk tile, atau mengelompokkan jendela yang bertumpuk menjadi tab
Tab-tab ini bisa dipakai tanpa peduli apakah aplikasinya sama atau berbeda
Browser tab bisa dengan mudah dipisah atau digabung menjadi jendela yang berbeda, tetapi tmux tab kurang fleksibel dalam hal ini
Dengan window manager yang baik, tab dan jendela bisa disusun ulang dengan bebas
Di konfigurasi tmux saya ada tab yang bisa diklik
Manajemen banyak jendela di MS Windows (Alt Tab, Win Tab, dll.) sangat bagus
Saya membedakan setiap terminal dengan ikon/warna latar yang berbeda, dan sistem operasi sendiri sudah menangani banyak hal dalam manajemen jendela
Saya juga pernah memakai Mac, tetapi dalam hal ini rasanya tidak sememuaskan Windows
Hal-hal yang dikeluhkan tentang tmux, seperti buffer scrollback dan sebagainya, justru menjadi alasan saya memakainya
Laptop kedua saya adalah terminal Debian lama khusus terminal, tanpa mouse, jadi copy/paste hanya bisa dilakukan lewat tmux
Bagi saya tmux tidak tergantikan
tmux capture-pane - | vim -kadang terasa lebih nyaman daripada scroll wheel mouseKubu suckless mengambil pendekatan yang justru berlawanan: saat merancang terminal, mereka sengaja tidak mengimplementasikan fungsi seperti tmux
Referensi: st.suckless.org/goals
Saya berharap Kitty sukses karena terasa bisa memimpin masa depan emulator terminal
Namun saya tidak bisa memakai Kitty untuk pekerjaan, dan tanpa tmux semua sesi, tata letak jendela, status, copy buffer, dan scrollback akan hilang, jadi saya benar-benar tidak bisa melepaskannya
Sampai ada pengganti yang memadai di Windows, saya akan tetap memakai tmux untuk pekerjaan, meskipun di samping itu saya memakai Kitty
Namun pada akhirnya saya kembali ke kombinasi tmux dan terminal bawaan
Karena bisa berjalan baik di mana saja, dan karena pendekatan menggabungkan beberapa alat cenderung lebih awet, tmux tetap yang terbaik bagi saya