Tutorial

Tmux Workflow — Mengelola Session Terminal Seperti Mengatur Meja Kerja

Tmux Workflow — Mengelola Session Terminal Seperti Mengatur Meja Kerja

Ada masa-masa di mana layar terminalku terlihat seperti meja kerja yang ditinggal pasar: satu tab untuk build frontend, satu lagi untuk log server, satu lagi untuk editor, dan satu lagi lagi untuk SSH ke home server. Lalu, ketika aku harus berpindah ke laptop lain atau matiin komputer untuk istirahat, semuanya hilang. Seperti menyusun balok LEGO di lantai, lalu ada orang yang menyapu lantai.

Itu sebabnya aku akhirnya serius mempelajari Tmux. Singkatnya, Tmux adalah terminal multiplexer. Ia memungkinkanmu menjalankan banyak sesi terminal dalam satu jendela, membagi layar jadi beberapa bagian, dan yang paling penting — menyimpan pekerjaanmu meski koneksi SSH terputus atau laptop ditutup. Di artikel ini aku ingin berbagi workflow sehari-hari yang membuat terminalku jauh lebih rapi, tenang, dan produktif.

Apa Itu Tmux dan Kenapa Terminal Butuh "Ruang"

Bayangkan terminal biasa seperti kamar kos dengan satu meja. Kalau kita punya banyak tugas — mengerjakan tugas kuliah, memperbaiki motor, dan memasak — semuanya harus dikerjakan di meja yang sama. Barang-barang tercampur, dan setiap kali pindah tugas kita harus membersihkan meja dulu.

Tmux mengubah kamar kos itu jadi rumah dengan beberapa ruangan. Setiap ruangan punya meja sendiri, dan kita bisa berpindah dari satu ruangan ke ruangan lain tanpa harus merapikan yang sebelumnya. Ruangan itu disebut session. Meja di dalam ruangan disebut window. Dan meja yang dibagi jadi beberapa bagian kerja disebut pane.

Kenapa ini penting? Karena saat kita mengerjakan banyak hal sekaligus — menulis kode, menjalankan server, membaca log, menjalankan test — otak kita butuh struktur. Bukan karena kita bodoh, tapi karena konteks yang berbeda harus ditempatkan di ruang yang berbeda. Tmux memberi struktur itu dengan cara yang ringan dan tidak mengganggu.

Session, Window, dan Pane — Tiga Lapis Meja Kerja

Tmux punya hierarki yang sederhana tapi kuat. Memahami tiga komponen ini adalah kunci sebelum kita membahas workflow lebih lanjut.

  • Session adalah ruangan tertutup. Di dalamnya ada satu atau lebih window. Session bisa diberi nama, misalnya "blog", "server", atau "ai-project". Session bisa dilepaskan (detach) dan disambung lagi (attach) di lain waktu.
  • Window adalah tab di dalam session. Mirip tab di browser, tapi tidak menggantung di layar. Biasanya satu window untuk satu tugas besar, misalnya "frontend", "backend", atau "database".
  • Pane adalah pembagian window. Satu window bisa dibagi vertikal atau horizontal, sehingga kamu bisa melihat log di satu pane dan menjalankan perintah di pane lain secara bersamaan.

Sebagai contoh, saat aku menulis artikel ini, aku punya session bernama adammuiz. Di dalamnya ada window "editor" untuk Neovim, window "preview" untuk menjalankan server lokal, dan window "notes" untuk catatan. Window "editor" kubagi dua pane: kiri untuk kode, kanan untuk terminal perintah.

Workflow Sehari-hari yang Bisa Langsung Dipakai

Berikut adalah workflow yang sudah kupakai beberapa bulan terakhir. Ini bukan setup yang sempurna, tapi cukup untuk membuat hari-hari lebih teratur.

1. Buat Session per Proyek

Setiap proyek punya session sendiri. Jangan mencampur semuanya dalam satu session besar. Cara membuat session baru:

tmux new-session -s blog -d

Perintah di atas membuat session bernama blog tanpa langsung masuk ke dalamnya. Untuk langsung masuk:

tmux new -s blog

2. Buka Window untuk Tugas Terpisah

Dalam satu session, buat window untuk tugas yang berbeda. Contohnya:

tmux new-window -t blog: -n editor
 tmux new-window -t blog: -n server
 tmux new-window -t blog: -n test

Perintah di atas membuat tiga window di session blog: editor, server, dan test. Dengan begitu, aku bisa berpindah antar tugas tanpa harus menutup atau membuka terminal baru.

3. Pecah Window Jadi Pane

Untuk window yang butuh informasi berdampingan, aku membagi layar dengan pane. Di dalam Tmux, prefix key default adalah Ctrl + b. Tekan prefix, lalu:

  • % untuk membagi pane secara vertikal.
  • " untuk membagi pane secara horizontal.
  • arrow keys untuk berpindah antar pane.

Misalnya, di window "editor" aku biasa membagi layar: kiri untuk Neovim, kanan untuk menjalankan perintah git status atau npm run dev.

4. Simpan Pekerjaan dan Pindah Perangkat

Salah satu fitur favoritku adalah kemampuan Tmux untuk melepaskan session. Ketika aku harus menutup laptop, aku cukup tekan Ctrl + b lalu d. Session tetap berjalan di latar belakang. Saat kembali, aku sambung lagi dengan:

tmux attach -t blog

Server yang sedang berjalan, editor yang terbuka, dan log yang mengalir semuanya masih di sana. Seperti meninggalkan ruangan dengan lampu menyala, lalu kembali dan menemukan semuanya tetap seperti dulu.

5. List dan Pilih Session dengan Cepat

Kalau session sudah banyak, aku gunakan shortcut untuk melihat daftar:

tmux ls

Atau dari dalam Tmux, tekan Ctrl + b lalu s untuk melihat tree session dan window. Pilih dengan arrow keys, tekan Enter. Ini jauh lebih cepat daripada membuka terminal baru dan mengetik ulang semuanya.

Konfigurasi Minimal yang Mengubah Pengalaman

Secara default, Tmux sudah bisa dipakai. Tapi ada beberapa pengaturan yang membuat pengalaman jauh lebih nyaman. Aku menyimpan konfigurasi di ~/.tmux.conf.

# Ganti prefix key dari Ctrl+b ke Ctrl+a (mirip screen, lebih nyaman di jari)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# Bagi pane dengan shortcut yang lebih intuitif
bind | split-window -h
bind - split-window -v

# Aktifkan mouse untuk scrolling dan resize pane
set -g mouse on

# Mulai index window dari 1, bukan 0
set -g base-index 1
setw -g pane-base-index 1

# Warna yang lebih baik untuk terminal modern
set -g default-terminal "screen-256color"

# Reload config dengan prefix + r
bind r source-file ~/.tmux.conf \; display "Config reloaded!"

Konfigurasi di atas tidak aneh-aneh. Hanya perubahan kecil yang membuat navigasi lebih cepat. Misalnya, prefix Ctrl + a lebih dekat dengan tombol lain, jadi tanganku tidak harus menari di keyboard. Mouse diaktifkan bukan karena aku malas, tapi karena scroll log dengan mouse jauh lebih alami daripada menekan tombil berkali-kali.

Menyelamatkan Pekerjaan dengan Detach dan Attach

Salah satu cerita paling menyenangkan sejak pakai Tmux adalah saat aku menjalankan proses build yang memakan waktu lama di home server. Aku masuk lewat SSH, mulai build, lalu tiba-tiba koneksi WiFi rumah bermasalah. Kalau tanpa Tmux, proses itu mungkin mati dan aku harus mengulang dari awal.

Tapi karena aku menjalankan build di dalam Tmux session, proses tetap berjalan di server meski SSH terputus. Saat koneksi pulih, aku cukup attach lagi dan melihat progress yang sudah jauh melampaui titik terakhir yang kulihat.

Ini adalah kekuatan Tmux yang paling sering diremehkan: ia bukan hanya alat untuk membagi layar, tapi juga alat untuk menjaga kontinuitas pekerjaan. Di dunia yang serba terganggu notifikasi dan interupsi, kemampuan untuk "menyimpan keadaan" adalah hadiah kecil yang besar.

Resep Kecil untuk Mulai Hari Ini

Kalau kamu baru pertama kali mencoba Tmux, jangan langsung mengubah semua workflow. Mulai dari satu session untuk satu proyek. Gunakan tiga perintah ini:

tmux new -s proyekku
# di dalam Tmux, tekan Ctrl+b lalu d untuk detach

# kembali nanti
 tmux attach -t proyekku

Setelah nyaman, tambahkan window. Lalu tambahkan pane. Lalu tambahkan konfigurasi kecil. Tmux tidak meminta kamu menjadi ahli dalam semalam. Ia justru paling baik saat kamu menyesuaikannya perlahan dengan cara kerjamu sendiri.

Kesimpulan

Tmux bukanlah alat yang membuatmu menulis kode lebih cepat. Ia membuatmu lebih tenang saat bekerja. Dengan session, window, dan pane, kamu bisa memberi setiap tugas ruangnya sendiri. Dengan detach dan attach, kamu tidak perlu lagi takut kehilangan pekerjaan saat koneksi terputus atau laptop harus ditutup.

Buatku, Tmux seperti belajar merapikan meja kerja. Awalnya terasa ribet, tapi begitu terbiasa, sulit untuk kembali ke kekacauan semula. Kalau kamu sering berurusan dengan terminal, coba luangkan waktu 15 menit hari ini untuk membuat satu session. Siapa tahu, terminalmu akan terasa lebih luas dan lebih ramah daripada yang pernah kamu bayangkan.

Sudah pakai Tmux juga? Atau malah pakai screen, zellij, atau terminal multiplexer lain? Ceritakan di kolom komentar — aku ingin tahu workflow mana yang paling pas untuk gaya kerjamu.