Mengenal Tmux Plugin Manager (TPM): instalasi, struktur direktori, deklarasi plugin di ~/.tmux.conf, alur install/update via prefix key, serta plugin wajib untuk workflow engineering yang siap produksi.

Di episode 15 sebelumnya kita membahas hooks dan event-driven automation — cara tmux menjalankan perintah secara otomatis ketika peristiwa tertentu terjadi, mulai dari client-attached hingga pane-exited. Kalian melihat bagaimana satu server tmux bisa berperilaku adaptif tanpa intervensi manual. Pada episode ini kita naik satu level lagi: alih-alih menulis setiap perilaku dengan tangan, kita memanfaatkan ekosistem plugin yang sudah matang melalui Tmux Plugin Manager (TPM).
Tidak ada engineer yang menulis editor sendiri hanya untuk mendapat syntax highlighting. Begitu pula dengan tmux: masalah yang sudah terpecahkan dengan baik — sane defaults, integrasi clipboard, persistence session, widget status bar — tidak perlu dipecahkan ulang. Yang perlu kalian kuasai adalah memilih plugin yang tepat, mendeklarasikannya dengan benar, dan menjaga konfigurasi tetap reproducible di semua mesin. Itulah yang kita bangun di episode ini, dan hasilnya adalah ~/.tmux.conf yang bisa dibawa dari mesin kerja hingga server produksi.
Semua contoh dalam episode ini merujuk pada tmux 3.7b sebagai versi stabil terbaru. Mari mulai dari alasan paling mendasar: kenapa plugin menjadi kebutuhan nyata, bukan sekadar gaya-gayaan.
Tmux sengaja dirancang sebagai inti yang minimal. Fitur seperti pane, session, dan window sudah sangat solid sejak lahir, tetapi masalah-masalah di sekitarnya — clipboard, persistence, monitoring — memang tidak masuk ke filosofi inti. Di sinilah analogi kernel vs userland berlaku: tmux adalah kernel yang stabil, dan plugin adalah userland yang tumbuh mengikuti kebutuhan komunitas.
Tanpa plugin, kalian harus menyelesaikan setiap masalah secara manual setiap kali. Ingin clipboard terhubung ke sistem? Tulis script run-shell. Ingin session bertahan setelah reboot? Rangkai sendiri kombinasi script dan cron. Masalahnya, setiap orang menyelesaikannya dengan cara berbeda, konfigurasi jadi sulit dibandingkan, dan kolaborasi antar mesin menjadi mimpi buruk. TPM menyatukan semua itu dalam satu alur deklaratif.
| Masalah di Dunia Nyata | Solusi Manual (Tanpa Plugin) | Solusi dengan Plugin |
|---|---|---|
| Default tmux terasa kaku | Setel puluhan option sendiri | tmux-sensible |
| Copy tidak sampai ke clipboard sistem | Script OSC 52 / run-shell | tmux-yank |
| Server restart, session hilang | Catat layout manual | tmux-resurrect + tmux-continuum |
| Memantau beban server | Cron + script widget | tmux-cpu / tmux-net-speed |
| Pindah antar banyak session | Ketik nama session berulang | t-smart-tmux-session-manager |
Perhatikan polanya: plugin bukan pengganti pemahaman tmux, melainkan pemerkaya. Kalian tetap harus paham set -g, run-shell, dan format strings — yang sudah kita pelajari di episode 6 dan 9 — agar plugin berfungsi optimal.
TPM adalah plugin manager untuk tmux, terinspirasi oleh Vundle di ekosistem Vim. Ia bekerja dengan satu prinsip deklaratif: kalian mendaftarkan plugin lewat option khusus, dan TPM mengurus instalasi, update, dan loading. Deklarasi dilakukan dengan perintah set -g @plugin 'user/repo' — perhatikan awalan @ yang menandakan ini adalah tmux user option, bukan option bawaan.
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'Setiap plugin yang dideklarasikan akan di-clone ke dalam ~/.tmux/plugins/ — satu folder per plugin, persis seperti ~/.vim/bundle/ di ekosistem Vim. Struktur ini sederhana dan mudah diinspeksi: kalian bisa membuka folder plugin kapan saja untuk membaca kode, melihat versi git, atau menghapusnya manual ketika tidak diperlukan.
TPM di-bootstrap dengan satu baris run yang harus diletakkan di bagian paling bawah konfigurasi. Baris ini yang mengeksekusi script TPM setiap kali konfigurasi dimuat, sehingga TPM bisa memproses daftar plugin yang sudah dideklarasikan di atasnya.
Langkah pertama adalah meng-clone repository TPM ke direktori plugin. Perintah berikut memasang TPM ke lokasi default:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmSetelah clone selesai, struktur direktori ~/.tmux/plugins/ akan tampak seperti ini:
~/.tmux/plugins/
tpm/
tmux-sensible/
tmux-yank/
tmux-resurrect/
tmux-continuum/
tmux-cpu/
tmux-net-speed/
t-smart-tmux-session-manager/Tip
Jika kalian memindahkan konfigurasi ke lokasi berbasis XDG seperti ~/.config/tmux/tmux.conf (didukung penuh di tmux 3.7b), TPM otomatis memakai ~/.config/tmux/plugins/. Jangan mencampur dua lokasi sekaligus — pilih salah satu dan konsisten, karena konfigurasi yang bercabang hanya akan membingungkan saat debugging.
Selanjutnya, tambahkan baris bootstrap ke ~/.tmux.conf. Berikut pola minimal yang benar:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
run '~/.tmux/plugins/tpm/tpm'Perhatikan urutannya: deklarasi @plugin berada di atas, dan run di baris paling akhir. Ini bukan sekadar konvensi — TPM membaca seluruh daftar plugin yang sudah ada saat baris run dieksekusi, sehingga meletakkan run sebelum deklarasi sama saja dengan meminta TPM bekerja sebelum tahu plugin apa saja yang harus diproses.
Setelah konfigurasi siap, reload terlebih dahulu agar perubahan dibaca oleh server tmux. Kalian bisa menekan prefix + r jika sudah mengikat reload di episode 11, atau menjalankan perintah berikut dari shell:
tmux source-file ~/.tmux.confLangkah berikutnya adalah instalasi. Tekan prefix + I — huruf kapital — dan TPM akan meng-clone setiap plugin yang belum ada di ~/.tmux/plugins/, lalu memuatnya. Output instalasi muncul sebentar di bagian bawah layar; perhatikan baris mana yang berhasil dan mana yang gagal.
Untuk update, tekan prefix + U. TPM akan menjalankan git pull pada setiap plugin dan melaporkan versi sebelum dan sesudah. Ini adalah alur yang bisa kalian jalankan rutin, misalnya sekali seminggu, agar plugin tetap sinkron dengan perbaikan bug dan fitur baru di hulu.
Important
Update plugin bukan operasi tanpa risiko. Plugin yang dideklarasikan tanpa pin ke versi tertentu akan mengikuti master, sehingga perilaku bisa berubah setelah update. Sebelum update massal di mesin yang dipakai untuk produksi, baca dulu changelog masing-masing plugin — atau pin ke tag tertentu dengan set -g @plugin 'tmux-plugins/tmux-resurrect#v2.6.0'.
tmux-sensible adalah plugin paling sederhana namun paling sering diabaikan. Ia menyetel kumpulan default yang "masuk akal": mouse support, mode copy navigasi ala vi, history yang lebih besar, dan perbaikan kompatibilitas terminal. Daripada menulis puluhan baris option secara manual di setiap mesin baru — yang rawan salah ketik dan tidak konsisten — cukup deklarasikan satu plugin ini dan biarkan ia menormalkan dasar-dasarnya.
Kekuatan tmux-sensible terletak pada konsistensi: seluruh anggota tim yang memakai plugin yang sama akan mendapat pengalaman dasar yang identik, sehingga troubleshooting keybinding antar mesin jadi jauh lebih mudah.
Default tmux hanya menyalin teks ke buffer internal, yang tidak bisa diakses aplikasi lain. tmux-yank menutup celah ini dengan meneruskan hasil yank ke clipboard sistem: pbcopy di macOS, xclip/xsel di X11, dan wl-copy di Wayland. Setelah plugin terpasang, yank dalam copy mode langsung tersedia untuk paste di browser, editor, atau chat.
set -g @plugin 'tmux-plugins/tmux-yank'Perlu diingat, tmux-yank hanya menjadi jembatan — ia tetap membutuhkan tool clipboard yang terpasang di sistem. Kami akan membahas kebutuhan prasyarat ini lebih jauh di bagian Kesalahan Umum.
Kombinasi ini adalah pasangan paling berharga di ekosistem tmux. tmux-resurrect menyimpan state session — window, pane, layout, bahkan perintah yang sedang berjalan — ke file, dan bisa memulihkannya kembali. tmux-continuum melengkapi dengan otomatisasi: menyimpan state secara berkala dan memulihkan otomatis ketika server tmux baru dimulai.
Anggap saja seperti save/load di game: tmux-resurrect adalah tombol save manual, sedangkan tmux-continuum adalah autosave. Ketika server reboot di tengah pekerjaan, kalian tidak mulai dari nol — cukup buka tmux dan semua session kembali seperti sebelum reboot.
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'
set -g @resurrect-capture-pane-contents 'on'Baris pertama menyetel interval autosave setiap 15 menit, baris kedua mengaktifkan restore otomatis, dan baris ketiga membuat resurrect ikut menyimpan isi layar pane sehingga konteks pekerjaan tidak hilang.
Untuk engineer yang sering memantau mesin dari dalam terminal, tmux-cpu dan tmux-net-speed menyediakan format variable yang bisa disisipkan langsung ke status bar. Format variable seperti #{cpu_percentage}, #{cpu_bg_color}, dan #{net_speed} diisi otomatis oleh plugin.
set -g @tmux_cpu_interval '2'
set -g status-right '#[fg=green]#{cpu_percentage}#[default] #[fg=blue]#{net_speed}#[default]'Kelebihan pendekatan ini dibanding menulis widget sendiri: sudah dioptimalkan untuk pembaruan berkala tanpa membebani CPU, dan mudah dipindahkan antar mesin. Pada episode 17 nanti kita akan membangun versi ringan buatan sendiri untuk kasus yang tidak tertutup plugin.
Semakin banyak session yang kalian buka, semakin lambat menyaringnya secara manual. t-smart-tmux-session-manager menyelesaikan ini dengan fuzzy finder: tekan prefix + T dan sebuah popup fzf muncul berisi daftar session serta direktori yang sering dikunjungi, dan kalian cukup mengetik beberapa huruf untuk berpindah.
Plugin ini membutuhkan fzf dan zoxide sebagai prasyarat, dan tersedia juga sebagai perintah t yang bisa dipanggil dari shell. Perlu kalian ketahui bahwa proyek ini sudah diarsipkan oleh penulisnya demi digantikan sesh yang lebih cepat — tetapi deklarasi plugin-nya tetap valid dan bekerja stabil untuk penggunaan sehari-hari.
Sekarang mari satukan semuanya. Berikut contoh ~/.tmux.conf lengkap yang siap dipakai, berisi bootstrap TPM dan deklarasi semua plugin yang sudah kita bahas:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'tmux-plugins/tmux-net-speed'
set -g @plugin 'tmux-plugins/t-smart-tmux-session-manager'
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'
set -g @resurrect-capture-pane-contents 'on'
set -g @tmux_cpu_interval '2'
set -g status-right '#[fg=green]#{cpu_percentage}#[default] #[fg=blue]#{net_speed}#[default]'
run '~/.tmux/plugins/tpm/tpm'Alur penggunaannya adalah sebagai berikut:
~/.tmux.conf.tmux source-file ~/.tmux.conf.prefix + I untuk menginstall semua plugin sekaligus.prefix + U secara berkala untuk memperbarui plugin.prefix + : lalu set -g status-right untuk memeriksa widget, atau cukup amati status bar langsung.Setelah langkah ini, kalian punya fondasi tmux yang produktif: clipboard tersambung, session bertahan dari reboot, widget memantau infrastruktur, dan perpindahan session terasa cepat. Yang tersisa adalah kebiasaan buruk yang sering merusak setup ini.
run sebelum deklarasi @plugin. TPM mengeksekusi urutan file dari atas ke bawah; jika run muncul lebih dulu, daftar plugin belum lengkap dibaca dan sebagian plugin tidak akan terinstall. Selalu jadikan run sebagai baris terakhir.prefix + I. TPM membaca daftar plugin dari state server yang sedang berjalan. Jika kalian mengedit ~/.tmux.conf tapi tidak menjalankan tmux source-file ~/.tmux.conf, tombol prefix + I tidak akan mengenali plugin baru.tmux-yank gagal diam-diam jika tool seperti xclip, wl-copy, atau pbcopy tidak ada. Periksa dengan menjalankan tool-nya langsung dari terminal sebelum menyalahkan plugin.tmux-cpu dan tmux-net-speed tidak menampilkan apa pun secara otomatis — kalian harus menyisipkan #{cpu_percentage} atau #{net_speed} ke status-right atau status-left.~/.tmux/plugins/ secara manual. TPM menganggap folder yang sudah ada sebagai plugin terpasang. Menghapusnya tidak akan mencabut plugin dari deklarasi, sehingga prefix + I akan meng-clone ulang. Cabut lewat konfigurasi, bukan lewat filesystem.~/.tmux.conf di repo dotfiles — kita akan bahas struktur modular dan versioning secara mendalam di episode 17.Episode ini menutup fondasi konfigurasi tmux yang lengkap. Kalian sekarang mengenal TPM sebagai pengelola plugin deklaratif, memahami struktur ~/.tmux/plugins/, menguasai alur instalasi dengan prefix + I dan update dengan prefix + U, serta bisa memilih plugin yang tepat: tmux-sensible untuk default yang waras, tmux-yank untuk clipboard, tmux-resurrect dan tmux-continuum untuk persistence, tmux-cpu dan tmux-net-speed untuk widget status, dan t-smart-tmux-session-manager untuk navigasi session yang cepat.
Poin yang harus kalian bawa:
set -g @plugin 'user/repo' lalu bootstrap dengan run di baris terbawah.prefix + I menginstall, prefix + U mengupdate, dan konfigurasi harus di-reload sebelum keduanya.Sekarang kalian tahu cara memakai plugin orang lain. Di episode 17 selanjutnya kita akan membahas custom script, plugin ringan, dan status widget — membangun helper sendiri, memecah konfigurasi menjadi modul-modul dengan source-file, memakai tmuxp untuk layout, dan menyimpan semua konfigurasi agar reproducible lewat versioning. Sampai jumpa di episode 17!