Menyulap status bar menjadi pusat informasi: status-left dan status-right dengan format variables, window status, warna 256 color/truecolor, serta membangun theme yang konsisten.

Di episode 8 sebelumnya kita mengelola banyak session dan menata workflow dengan pola satu session per project. Namun semua session itu masih tampil dengan status bar bawaan tmux yang polos. Pada episode ini kita mengubah status bar menjadi pusat informasi workspace kalian: nama session dan host, kapan window terakhir diubah, koneksi SSH, bahkan cuaca jika kalian suka — semuanya bisa ditampilkan dengan format strings dan styling.
Mengapa ini penting di dunia nyata? Status bar adalah antarmuka paling sering kalian lihat selama bekerja di tmux — ia selalu ada di bawah layar. Sebuah status bar yang baik menjawab pertanyaan-pertanyaan kecil tanpa perlu interaksi: "di session mana saya sekarang?", "window mana yang aktif?", "apakah ada proses yang berjalan?". Engineer yang menempuh waktu berjam-jam di terminal menghemat puluhan menit setiap hari hanya karena informasi tersedia tanpa mengetik apa pun. Episode ini juga menjadi fondasi untuk episode 10, di mana kita membedah format strings secara menyeluruh.
Status bar tmux terdiri dari tiga bagian besar: status-left (kiri), status-right (kanan), dan di tengahnya window list — daftar window pada session aktif. Bagian tengah ini adalah yang paling informatif: ia menunjukkan nomor, nama, dan status setiap window.
| Bagian | Option | Isi Default |
|---|---|---|
| Kiri | status-left | [#{session_name}] |
| Kanan | status-right | Tanggal & waktu |
| Tengah | window-status-format | Daftar window |
| Interval refresh | status-interval | 15 detik |
Status bar bukan sekadar dekorasi — ia adalah dashboard. Default tmux hanya menampilkan [0] di kiri (nomor session) dan jam di kanan. Dengan kustomisasi, kalian bisa mengubahnya menjadi dashboard yang menampilkan persis informasi yang relevan dengan pekerjaan.
Tmux menyediakan ratusan variabel yang bisa disisipkan ke dalam status bar dengan sintaks #{nama_variabel}. Beberapa yang paling sering dipakai:
set -g status-left "#[bg=#313244,bold]#{session_name} "
set -g status-left "#[fg=#cdd6f4]🞄 #{host_short}"
set -g status-right "#[fg=#89b4fa]#{pane_current_command} | %H:%M"
set -g status-right "#{session_created_string}"Perhatikan sintaks styling #[bg=...] dan #[fg=...]: ini adalah inline style yang mengubah warna teks di titik itu. Susunan kiri-menjadi kanan: status-left bisa memuat beberapa segmen yang masing-masing diwarnai berbeda, dan segmen kanan (status-right) mengisi informasi di sisi sebaliknya.
Note
Styling dengan #[...] dapat dipakai di dalam string status mana pun, tidak hanya status-left/status-right. Variabel seperti #{session_name}, #{host_short}, dan #{pane_current_command} dikenali saat status bar dirender ulang. Di episode 10 kita akan menjelajahi seluruh variabel yang tersedia serta cara membuat ekspresi bersyarat.
Status bar diperbarui setiap status-interval detik (default 15). Informasi yang cepat berubah — seperti waktu — otomatis ter-refresh; informasi yang jarang berubah — seperti nama session — tidak masalah.
Selain itu, tmux membedakan window aktif (current window) dan window non-aktif. Keduanya bisa di-styling berbeda agar mata langsung tertuju ke window yang sedang kalian gunakan.
set -g window-status-current-format "#[fg=black,bg=cyan,bold] #I:#W "
set -g window-status-format "#[fg=white,bg=#313244] #I:#W "
set -g window-status-separator " │ "
set -g window-status-current-style "bg=#89b4fa,fg=black"Tmux mendukung 256 warna dan true color (24-bit). Agar tema berfungsi penuh, tiga hal harus konsisten: terminal luar, nilai TERM, dan cara tmux dijalankan.
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",*:Tc"
set -g status-style "bg=#11111b,fg=#cdd6f4"Baris terminal-overrides ",*:Tc{:bash}" memberi tahu tmux bahwa terminal luar mendukung true color, sehingga warna 24-bit (format #rrggbb) dirender dengan benar. Tanpa ini, kode warna 24-bit sering direduksi ke 256 warna dan tampak "flat". Pastikan terminal kalian (Kitty, WezTerm, Ghostty, Alacritty) memang menyetel dukungan true color.
Tip
Untuk memilih palet yang konsisten, gunakan palet yang sudah matang seperti Catppuccin atau Tokyo Night — keduanya tersedia sebagai file .tmux yang tinggal di-source. Meniru palet yang sudah terbukti lebih baik daripada mencampur warna secara asal.
Selain status bar, tmux menampilkan border untuk setiap pane. Border aktif dan non-aktif bisa dibedakan dengan warna — ini membantu kalian langsung tahu pane mana yang sedang difokuskan, terutama di layout dengan banyak pane.
set -g pane-border-style "fg=#45475a"
set -g pane-active-border-style "fg=#89b4fa,bold"pane-active-border-style memakai warna biru untuk pane aktif, sedangkan pane-border-style memakai warna abu untuk pane non-aktif. Ini adalah salah satu pembeda visual paling efektif di layout multi-pane.
Status bar terasa jauh lebih informatif jika memakai ikon. Nerd Font menyediakan ribuan glyph (panah, awan, chip, dll.) yang bisa disisipkan langsung ke string status bar. Pastikan terminal memakai font Nerd Font (misal FiraCode Nerd Font), lalu sisipkan glyph:
set -g status-left "#[bg=#313244,bold] #S "
set -g status-right "#[fg=#a6e3a1] #(whoami) #[fg=#89b4fa]#{host_short} #[fg=#f38ba8]%H:%M "
set -g status-left "#[fg=#f9e2af] #{session_name} #[fg=#89b4fa]#{window_index}:#{window_name}"Important
Jika ikon tampil sebagai kotak □ atau karakter aneh, penyebabnya hampir selalu terminal yang tidak memakai Nerd Font — bukan masalah tmux. Set font terminal ke Nerd Font (bukan font biasa) di pengaturan terminal kalian.
Theme yang baik bukan kumpulan warna acak — ia punya palet (warna latar, foreground, aksen, border) yang dipakai konsisten di semua elemen. Contoh berikut membangun theme Catppuccin Mocha secara manual:
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",*:Tc"
set -g status-style "bg=#11111b,fg=#cdd6f4"
set -g status-left "#[bg=#89b4fa,fg=#11111b,bold] #S #[bg=#11111b,fg=#89b4fa]"
set -g status-right "#[fg=#a6e3a1] #(whoami) #[fg=#f9e2af]#{host_short} #[fg=#94e2d5]%H:%M "
set -g window-status-format "#[fg=#cdd6f4] #I:#W "
set -g window-status-current-format "#[fg=#11111b,bg=#89b4fa] #I:#W "
set -g window-status-separator ""
set -g pane-border-style "fg=#45475a"
set -g pane-active-border-style "fg=#89b4fa,bold"
set -g status-position bottom
set -g status-interval 5
set -g status-justify left
set -g status-bg default
set -g message-style "bg=#89b4fa,fg=#11111b"
set -g mode-style "bg=#313244,fg=#cdd6f4"Simpan dan reload dengan tmux source-file ~/.tmux.conf atau prefix + r. Hasilnya: status bar dengan aksen biru, window aktif menonjol, dan border yang memberi tahu pane mana yang aktif.
Tip
Pecah konfigurasi theme menjadi file terpisah (misal ~/.tmux/themes/catppuccin.conf) dan source-file dari ~/.tmux.conf. Dengan cara ini kalian bisa berganti theme hanya dengan mengubah satu baris — kita akan bahas konfigurasi modular lebih dalam di episode 17.
set -ag terminal-overrides ",*:Tc{:bash}" dan pastikan terminal luar mendukung true color.#{nama} dengan kurung kurawal. #{session_name} benar; #{session} tidak dikenali.~/.tmux.conf dibaca saat server pertama dibuat. Selalu tmux source-file ~/.tmux.conf atau prefix + r setelah edit.Episode ini mengubah status bar polos menjadi dashboard informasi: status-left dan status-right dengan variabel dan inline styling, window-status-format untuk daftar window, warna 256/true color yang konsisten, gaya border aktif/non-aktif, serta ikon Nerd Font. Kalian juga membangun theme yang konsisten dan memahami pentingnya terminal-overrides, status-interval, dan status-position.
Poin yang harus kalian bawa:
#[...] menyuntikkan styling inline ke string status.status-interval mengontrol frekuensi refresh.terminal-overrides.Semua format yang kita pakai di episode ini (#{session_name}, #{host_short}, dll.) baru permukaan dari kekuatan format strings tmux. Di episode 10 selanjutnya kita membedah format strings, variables & komputasi — seluruh variabel yang tersedia, ekspresi bersyarat #{==:...} dan #{?#...}, serta cara membuat variabel kustom dengan set-environment. Sampai jumpa di episode 10!