Sebelum masuk lebih dalam ke tmux, ada beberapa skill dasar dan tools yang perlu kalian siapkan terlebih dahulu: navigasi CLI, job control, dan SSH, hingga instalasi tmux 3.7b, terminal modern, dan Nerd Font.

Selamat datang di series Belajar Tmux! Series ini akan mengajak kalian menguasai tmux dari nol hingga level siap produksi, dengan total 28 episode: mulai dari prasyarat & setup environment, sejarah & arsitektur client-server, session/window/pane lifecycle, prefix key & keybindings, copy mode & clipboard, konfigurasi ~/.tmux.conf, pane layout, multi-session workflow, status bar & theme, format strings & variables, custom keybindings & command mode, options & environment, persistence & session restore, scripting & otomasi CLI, hooks, plugin ecosystem TPM, remote development & SSH, multi-server & shared session, security & hardening, nested tmux, popups & fitur terbaru, hingga production-ready setup.
Sebelum menekan tombol apapun, pahami dulu posisi tmux dalam stack. tmux bukan pengganti terminal — ia berjalan di atas terminal, biasanya di dalam shell. Kalian membuka terminal, masuk ke tmux, dan semua yang tampil di layar adalah output dari proses-proses yang hidup di dalamnya. Setiap pane tmux memetakan ke sebuah PTY (pseudo-terminal), tempat sebuah proses shell berjalan. Ketika kalian detach, tmux melepas client dari server, tetapi proses di dalam pane tetap berjalan karena mereka tidak menerima SIGHUP. Inilah mengapa sesi tmux bertahan meski koneksi SSH terputus — dan inilah alasan utama seri ini ada.
Episode 0 ini adalah peta jalan: skill fundamental yang wajib dimiliki, perangkat lunak yang disiapkan (tmux 3.7b, terminal modern, Nerd Font, tooling pendukung), dan verifikasi bahwa semuanya bekerja.
tmux adalah wadah untuk proses, dan sebagian besar proses yang kalian jalankan berurusan dengan file dan layanan. Tanpa skill berikut, setup tools secanggih apapun tidak akan berguna.
Kalian harus nyaman berpindah direktori, melihat isi, membuat, menyalin, memindahkan, dan menghapus file:
ls -la
cd ~/proyek
mkdir -p ~/lab/tmux
cp config.tmux backup.config.tmuxTambahkan mv untuk memindahkan atau menamai ulang file, dan rm untuk menghapus — kemampuan yang akan kalian pakai setiap hari, termasuk saat mengelola file konfigurasi tmux di episode 8.
Sebelum multiplexer populer, developer mengandalkan job control shell untuk menjalankan beberapa hal dalam satu terminal — trik yang canggung dan mudah kacau. Pahami input berikut:
| Input | Fungsi |
|---|---|
perintah & | Jalankan perintah di background |
Ctrl+C | Kirim SIGINT, hentikan proses foreground |
Ctrl+Z | Kirim SIGTSTP, suspend proses foreground |
jobs | Tampilkan daftar job shell |
fg | Kembalikan job terakhir ke foreground |
bg | Lanjutkan job yang di-suspend di background |
Job control penting untuk dua alasan: pertama, memahami bagaimana proses hidup dan mati di terminal memudahkan kalian memahami konsep detach tmux; kedua, job control tetap berguna di dalam pane.
Mayoritas penggunaan tmux di dunia nyata terjadi di atas SSH, untuk mengelola server produksi. Ingat aturan ini: SSH adalah sesi terminal remote. Ketika koneksi terputus, terminal remote menutup dan semua proses di dalamnya menerima SIGHUP — kecuali proses itu dilindungi oleh tmux.
ssh devnull@203.0.113.42
ssh -i ~/.ssh/deploy-key devnull@203.0.113.42Untuk sesi panjang di jaringan yang tidak stabil, konfigurasi ~/.ssh/config berikut membuat koneksi lebih tahan banting:
Host server-prod
HostName 203.0.113.42
User devnull
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ServerAliveInterval 30
ServerAliveCountMax 3ControlMaster auto memungkinkan multiplexing koneksi (koneksi kedua tidak perlu handshake ulang), ServerAliveInterval 30 mengirim paket keepalive tiap 30 detik, dan ServerAliveCountMax 3 menutup koneksi setelah tiga keepalive gagal. Kalian tidak perlu hafal flag ini — yang penting paham konsepnya: koneksi yang stabil adalah prasyarat terbaik untuk bekerja dengan tmux jarak jauh.
tmux mewarisi environment dari shell yang meluncurkannya. Kalian harus paham $PATH, $HOME, dan di mana konfigurasi shell kalian disimpan (~/.bashrc atau ~/.zshrc), karena di episode 8 kita akan menambahkan baris untuk memuat konfigurasi tmux dari file eksternal.
echo $PATH
echo $HOMEWarning
Jika tmux menghasilkan error command not found, kemungkinan besar binary-nya tidak ada di $PATH. Ini salah satu kesalahan paling umum di episode ini — dan biasanya cukup diperbaiki dengan menambahkan direktori install ke shell config, lalu membuka terminal baru.
| No | Tool | Type | Level | Keterangan |
|---|---|---|---|---|
| 1. | Laptop / PC | Hardware | Wajib | Mesin utama; spesifikasi standar sudah cukup |
| 2. | tmux 3.7b | Software | Wajib | Terminal multiplexer utama; rilis stabil terbaru |
| 3. | Terminal modern | Software | Wajib | Dengan dukungan true color (Kitty, WezTerm, Ghostty, Alacritty, iTerm2) |
| 4. | Nerd Font | Font | Wajib | Menampilkan icon status bar dengan benar (FiraCode/JetBrainsMono) |
| 5. | Git | Software | Wajib | Version control & basis plugin manager (TPM) |
| 6. | fzf | Software | Direkomendasikan | Fuzzy finder untuk preview windows & navigasi cepat |
| 7. | Build tools (make, gcc) | Software | Kondisional | Hanya dibutuhkan jika build tmux dari source |
Versi yang kita pakai di seluruh series ini adalah tmux 3.7b — rilis stabil terbaru. Beberapa fitur yang kita bahas (popup, floating pane, line selection di copy mode) hanya tersedia di versi 3.5 ke atas, jadi pastikan versi kalian benar.
sudo apt update && sudo apt install -y tmuxWarning
Repositori distro stable (terutama Debian) sering menyediakan versi tmux yang jauh lebih tua, misalnya 3.2 atau 3.3. Fitur seperti popup (3.5), pane scrollbar (3.6), dan floating pane (3.7) tidak akan tersedia. Jika tmux -V menunjukkan versi tua, gunakan metode build dari source di bawah.
brew update
brew install tmuxJika paket distro terlalu tua, build dari source dengan tag versi spesifik:
sudo apt install -y libevent-dev libncurses-dev build-essential
git clone --depth 1 --branch 3.7b https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
sudo make installSetelah terpasang, verifikasi versinya — output harus menunjukkan tmux 3.7b (atau minimal 3.7.x):
tmux -Vtmux merender grid sel layar di atas terminal, jadi kualitas tampilannya bergantung pada terminal yang kalian pakai. Terminal modern dengan true color (24-bit) akan membuat tema status bar tampil halus; terminal lama yang hanya 256 warna membuat warna terlihat pudar.
| Terminal | Platform | Keunggulan |
|---|---|---|
| Kitty | macOS & Linux | GPU-accelerated, fitur lengkap |
| WezTerm | Semua platform | Konfigurasi Lua, multiplexer bawaan |
| Ghostty | macOS & Linux | Cepat, minimal, GPU-accelerated |
| Alacritty | Semua platform | GPU-accelerated, sangat ringan |
| iTerm2 | macOS | Default terbaik di macOS |
| Windows Terminal | Windows | Default terbaik di Windows |
Tip
Aturan emasnya: dukung true color dan gunakan background gelap. Warna status bar tmux (dan tema yang akan kita bangun di episode 10) bergantung pada hal ini. Terminal bawaan yang kuno seperti cmd.exe sebaiknya ditinggalkan.
Nerd Font adalah font yang dipatch dengan ribuan glyph/icon yang dibutuhkan status bar modern — misalnya segitiga, folder, dan git symbol. Tanpa Nerd Font, icon tersebut tampil sebagai kotak kosong (tofu).
Rekomendasi: FiraCode Nerd Font atau JetBrainsMono Nerd Font.
mkdir -p ~/.local/share/fonts
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.zip
unzip JetBrainsMono.zip -d ~/.local/share/fonts
fc-cache -fv ~/.local/share/fontsWarning
Font harus diatur di terminal, bukan di tmux. Banyak pemula memasang Nerd Font lalu bingung karena icon tetap kotak — itu karena terminal mereka masih memakai font lama. Ganti font di settings terminal, lalu tutup dan buka kembali terminal agar perubahan berlaku.
| Tool | Fungsi | Kenapa Dibutuhkan |
|---|---|---|
git | Version control | Plugin manager (TPM) meng-clone plugin dari GitHub |
fzf | Fuzzy finder | Preview windows & navigasi cepat dalam workflow tmux |
make / gcc | Build tools | Diperlukan saat membangun tmux dari source |
sudo apt install -y git fzf build-essentialSetelah semuanya siap, saatnya uji coba pertama:
tmux
tmux new -s labKalian akan masuk ke sesi tmux dengan satu window berisi satu pane — prompt shell seperti biasa, tapi sekarang dengan status bar di bagian bawah. Untuk membuktikan tmux hidup:
Ctrl+B lalu ? — muncul daftar keybinding. Tekan q untuk menutup.Ctrl+B lalu d — kalian detach kembali ke prompt shell biasa. Proses di dalam tmux tetap berjalan.tmux attach -t lab.Important
Detach bukan keluar. Saat kalian menekan Ctrl+B lalu d, kalian tidak menutup sesi — kalian hanya melepas client. Sesi dan semua proses di dalamnya terus berjalan, seperti proses sleep 300 & yang berjalan di background. Inilah perbedaan fundamental dengan menekan exit atau Ctrl+D.
command not found: tmux. Binary tidak ditemukan di $PATH. Solusi: cek lokasi install, tambahkan ke shell config (~/.bashrc/~/.zshrc), lalu buka terminal baru.ServerAliveInterval dan ServerAliveCountMax di ~/.ssh/config, lalu lindungi pekerjaan kalian dengan tmux agar tidak hilang saat koneksi putus.exit di pane terakhir. Menutup semua pane/window menutup sesi dan mematikan proses. Jika ingin kembali nanti, gunakan detach (Ctrl+B lalu d) — bukan exit.Di episode 0 ini kita sudah menyiapkan pijakan yang kokoh: menguasai skill fundamental (navigasi CLI, job control, SSH, dan environment variable), menginstall tmux 3.7b, menyiapkan terminal modern dengan true color, memasang Nerd Font, dan melengkapi tooling pendukung (git, fzf). Kita juga sudah memverifikasi sesi pertama berjalan dan prefix Ctrl+B merespons.
Poin penting yang harus kalian bawa:
Pastikan seluruh tools di atas sudah siap, karena episode berikutnya akan membahas konsep. Di episode 1 selanjutnya, kita akan membahas sejarah, latar belakang, dan mengapa dunia butuh tmux — mulai dari masalah sebelum multiplexer modern, GNU Screen (1987), kelahiran tmux oleh Nicholas Marriott (2007), hingga peta versi 3.x yang membawa fitur-fitur modern. Pastikan tetap semangat, karena perjalanan belajar tmux baru saja dimulai!