mengelola banyak session tanpa keluar dari workspace: session-manager untuk navigasi, rename, dan switch session; pola satu session per proyek; workflow paralel; serta integrasi fzf agar berpindah session secepat mengetik nama.

Di episode 17 kalian memberi Zellij memori jangka panjang lewat session resurrection. Sekarang saatnya memakai memori itu secara maksimal. Episode 18 membahas Session Manager & Multi-Session Workflow: bagaimana mengelola banyak session sekaligus, berpindah antar session dengan cepat, dan menjadikan session sebagai unit organisasi utama pekerjaan kalian.
Satu jebakan yang sering dialami pengguna Zellij pemula: mereka membuat satu session, lalu menumpuk semua pekerjaan ke dalamnya — beberapa proyek, beberapa konteks, semua campur aduk dalam tab yang tidak terhitung. Ini bekerja, tetapi seperti membuka sepuluh pekerjaan dalam satu jendela browser tanpa bookmark: semakin banyak tab, semakin sulit menemukan yang kalian cari. Pola yang jauh lebih sehat adalah satu session per konteks, dan episode ini akan membangun kebiasaan itu.
Kabar baiknya, Zellij sudah menyediakan infrastruktur untuk pola ini sejak lama. Session-manager hadir sebagai plugin bawaan yang terus disempurnakan, dan di versi 0.44 antarmukanya dirombak total menjadi satu layar dengan pencarian fuzzy. Berbekal session resurrection dari episode 17, setiap session sekarang memiliki identitas yang bertahan — namanya, layout-nya, bahkan perintah yang berjalan — sehingga mengelola banyak session terasa seperti mengelola sekumpulan aplikasi yang tersimpan rapi, bukan sekadar jendela terminal yang bertebaran.
Kita akan membahas empat hal: plugin session-manager sebagai pusat kendali, pola satu session per proyek, workflow paralel antar session, dan integrasi fzf untuk berpindah session secepat kedipan mata. Pada akhir episode, kalian akan melihat session seperti halnya "aplikasi" di sistem operasi: masing-masing punya nama, isi, dan siklus hidup sendiri, dan kalian tahu persis cara berpindah di antara mereka.
Session-manager adalah plugin bawaan Zellij yang menyediakan antarmuka untuk mengelola semua session di mesin kalian. Ia adalah versi interaktif dari zellij ls — tapi dengan kemampuan penuh: attach, switch, create, rename, resurrect, dan delete, semuanya dari satu layar, tanpa keluar dari session.
Untuk membukanya dari dalam session, tekan Ctrl+o lalu w. Sejak versi 0.44, antarmukanya disederhanakan menjadi satu layar tunggal: kalian mengetik nama session, dan Zellij menebak maksud kalian — jika session itu ada dan hidup, kalian attach; jika sudah keluar, session di-resurrect; jika belum ada, session baru dibuat. Pencariannya fuzzy, sehingga mengetik sebagian nama sudah cukup untuk menemukan session yang dituju.
Menariknya, session-manager dan welcome-screen adalah plugin yang sama — zellij:session-manager. Perbedaannya hanya konfigurasi welcome_screen true yang membuatnya muncul sebagai layar pembuka saat Zellij dimulai tanpa session tertentu:
plugins {
session-manager location="zellij:session-manager"
welcome-screen location="zellij:session-manager" {
welcome_screen true
}
}Dengan konfigurasi di atas, membuka terminal baru langsung menampilkan welcome-screen berisi daftar session — tempat yang sempurna untuk memulai hari kerja: pilih session yang ingin dilanjutkan, atau ketik nama baru untuk memulai proyek lain.
Begitu session-manager terbuka, kalian bekerja dengan daftar yang sudah familier dari episode 17: session hidup di satu bagian, session yang bisa di-resurrect di bagian lain. Berikut operasi inti yang paling sering dipakai:
| Operasi | Cara |
|---|---|
| Buka session-manager | Ctrl+o lalu w |
| Navigasi daftar | j / k atau panah atas / bawah |
| Attach / switch / resurrect | Enter pada session terpilih |
Toggle session EXITED | Tab |
| Rename session | Ctrl+r, ketik nama baru, lalu Enter |
| Buat session baru | n, ketik nama, lalu Enter |
Operasi rename adalah penyelamat yang sering terlupakan. Di tengah pekerjaan yang kacau, kalian mungkin lupa nama session yang sedang kalian geluti — atau session itu diberi nama random oleh Zellij. Dengan Ctrl+r, kalian bisa mengganti namanya menjadi sesuatu yang bermakna, dan karena session yang di-rename ikut tercatat dalam serialisasi, nama tersebut juga menjadi identitasnya ketika di-resurrect di episode 17.
Tip
Jika tombol default terasa tidak pas dengan kebiasaan kalian, session-manager bisa di-remap lewat blok keybinds di config.kdl. Default untuk membuka session-manager adalah Ctrl+o lalu w, tapi kalian bisa mengikatnya ke kombinasi yang lebih cepat. Sebagai contoh, banyak pengguna mengikatnya ke Ctrl+b (gaya tmux) atau Alt+tab pada mode normal. Kunci untuk remap ada di aksi LaunchOrFocusPlugin "zellij:session-manager" — aksi yang sama juga bisa dipanggil dari CLI dengan zellij action launch-or-focus-plugin "zellij:session-manager".
Pola paling efektif yang bisa kalian adopsi hari ini: satu session per proyek. Jika kalian mengerjakan lima proyek, miliki lima session — masing-masing dengan layout, tab, dan nama yang mencerminkan proyeknya. Keuntungannya langsung terasa: proses panjang satu proyek tidak mengganggu proyek lain, dan berpindah konteks cukup dengan berpindah session, bukan memutar-mutar tab dalam satu ruang yang penuh.
Mulai dengan nama yang konsisten. Gunakan nama proyek atau kombinasi proyek plus konteks — misalnya api, web, infra-deploy. Ketika memulai session baru, jangan lupa membawa layout yang sudah kalian siapkan di episode 10:
zellij -s web -l dev-web
zellij -s api -l dev-apiKedua perintah di atas menciptakan dua session terpisah dengan layout masing-masing. Perhatikan bahwa setiap layout bisa menetapkan cwd dan environment berbeda — pola yang kita bahas di episode 17 — sehingga setiap session langsung mendarat di konteks yang benar.
Important
Konsistensi nama adalah investasi kecil dengan return besar. Jika nama session tidak konsisten, session-manager dan fzf (yang akan kita bahas sebentar lagi) menjadi tidak berguna karena daftar penuh teka-teki. Tetapkan konvensi tim: nama proyek polos (web, api) untuk session aktif, dan tambahkan sufiks konteks (web-debug, api-migration) ketika session kedua untuk proyek yang sama dibutuhkan. Konvensi ini juga otomatis membuat daftar resurrect di zellij ls tetap mudah dibaca.
Kekuatan sesungguhnya dari multi-session muncul ketika beberapa session berjalan paralel. Misalnya session api menjalankan server backend dan tail log, sementara session web menjalankan frontend dev server dan editor. Keduanya hidup berdampingan, tidak saling memblokir, dan bisa diakses bergantian.
Berpindah di antara mereka dilakukan dengan zellij attach -c — flag -c berarti "attach atau create", sehingga perintah yang sama berfungsi untuk masuk ke session yang sudah ada maupun membangunnya pertama kali:
zellij attach -c api
zellij attach -c webUntuk melihat gambaran utuh session yang sedang berjalan, jalankan zellij list-sessions (atau zellij ls) dari shell mana pun. Output-nya menunjukkan nama dan status setiap session, dan karena serialisasi dari episode 17 aktif, session yang sudah keluar pun ikut tampil sebagai EXITED. Ini cara tercepat untuk memetakan kondisi workspace sebelum memutuskan ke mana harus berpindah:
zellij lsSession name Status
api RUNNING
web RUNNING
pipeline EXITED - attach to resurrectPerhatikan bahwa api dan web sama-sama berstatus RUNNING — keduanya hidup berdampingan di latar belakang, sementara pipeline menunggu untuk di-resurrect. Dari daftar seperti ini, keputusan berpindah konteks bisa diambil dalam sekali pandang, dan memori episode 17 bekerja persis seperti yang dijanjikan: apa pun yang keluar, bisa kembali.
Dari dalam session, berpindah bisa dilakukan lewat session-manager: buka dengan Ctrl+o lalu w, pilih session tujuan, dan tekan Enter. Saat berpindah, session yang ditinggalkan tetap berjalan penuh di latar belakang — proses di dalamnya tidak berhenti hanya karena kalian memindahkan fokus. Ini perilaku yang sama dengan detach (Ctrl+o lalu d), hanya saja lebih mulus karena tidak melewati shell.
Note
Perhatikan biaya sumber daya. Setiap session yang berjalan memegang proses di dalamnya — dev server, watcher, dan editor tidak gratis. Prinsip yang sehat: matikan session yang sudah tidak dipakai (kill-session dari CLI, atau hapus dari session-manager), dan biarkan hanya session yang benar-benar aktif. Ini terutama penting di mesin dengan RAM terbatas, di mana sepuluh session "lupa ditutup" bisa menggerus performa.
Untuk kelincahan maksimal, gabungkan Zellij dengan fzf, fuzzy finder yang sudah kalian kenali dari episode 13. Idenya sederhana: sebuah skrip menampilkan daftar proyek, kalian pilih dengan fzf, dan skrip otomatis membuat atau memasuki session Zellij untuk proyek tersebut. Ini adalah pola yang sangat populer di ekosistem multiplexer — versi tmux-nya dikenal sebagai sessionizer.
#!/usr/bin/env bash
set -euo pipefail
if [[ -n "${ZELLIJ:-}" ]]; then
zellij action launch-or-focus-plugin "zellij:session-manager"
exit 0
fi
selected=$(fd . ~/projects --min-depth 1 --max-depth 2 --type d | fzf)
if [[ -z "$selected" ]]; then
exit 0
fi
session_name=$(basename "$selected" | tr . _)
cd "$selected"
zellij attach "$session_name" -cBaca skrip di atas baris demi baris: jika kalian sudah berada di dalam Zellij, skrip cukup membuka session-manager — tidak ada gunanya membuat session bertumpuk dari dalam session. Jika di luar Zellij, fzf menampilkan daftar direktori di ~/projects, dan setelah pilihan diambil, skrip masuk ke direktori tersebut lalu attach (atau membuat, berkat -c) session dengan nama folder proyek.
Bagi kalian yang tidak memakai fd, varian dengan find bekerja sama baiknya:
selected=$(fd . ~/projects --min-depth 1 --max-depth 2 --type d | fzf)Terakhir, pasang skrip ke dalam PATH dan buat pemanggilan cepat. Di .zshrc, ikat ke Ctrl+t; di bash, gunakan alias:
bindkey -s '^t' 'zellij-sessionizer\n'alias zellij-sessionizer=~/bin/zellij-sessionizerUntuk memakai skrip ini, pastikan zellij-sessionizer dapat dieksekusi dan berada di dalam PATH: chmod +x ~/bin/zellij-sessionizer dan pastikan ~/bin terdaftar di PATH. Setelah itu, binding di atas akan bekerja dari direktori mana pun. Skrip ini juga bersifat idempotent — menjalankannya berulang kali untuk proyek yang sama hanya membawa kalian kembali ke session yang sudah ada, tidak menciptakan duplikat. Jika kalian memakai beberapa mesin, masukkan skrip ini ke dotfiles (pola yang akan kita bahas di episode 27) agar konsistensi tetap terjaga di mana pun.
Dengan setup ini, workflow kalian menjadi: tekan Ctrl+t, ketik tiga huruf proyek, Enter — dan kalian mendarat di session yang benar, dengan layout dan working directory yang tepat. Berpindah proyek tidak lagi memakan waktu lebih dari dua detik.
Tip
Kombinasikan sessionizer dengan pola satu session per proyek untuk hasil terbaik. Karena nama session diambil dari nama folder, konvensi nama terjaga otomatis tanpa perlu berpikir. Jika kalian memakai zoxide atau tool serupa, ganti fd pada baris pemilihan direktori dengan pemanggilan zoxide query -l — daftar proyek yang ditawarkan fzf akan berurut berdasarkan frekuensi kalian mengunjunginya.
Ctrl+r di session-manager, atau ciptakan nama sejak awal dengan zellij -s nama. Nama yang jelas membuat session-manager, fzf, dan daftar resurrect menjadi alat yang andal alih-alih sumber kebingungan.attach menciptakan session. zellij attach nama gagal jika session belum ada. Gunakan -c (attach or create) bila kalian menginginkan perilaku "ada atau buat". Skrip sessionizer yang kita tulis di atas otomatis memakai pola ini.EXITED yang tidak berguna menumpuk di zellij ls. Hapus dengan zellij delete-session agar daftar tetap fokus pada hal yang benar-benar relevan, dan jadikan pembersihan ini bagian rutin mingguan.Di episode 18 ini kalian telah mengubah Zellij dari sekadar multiplexer menjadi pengelola workspace yang terorganisasi. Kita memulai dari session-manager — pusat kendali untuk attach, switch, create, rename, resurrect, dan delete — lalu mengadopsi pola satu session per proyek agar setiap konteks memiliki rumah sendiri. Kalian juga melihat bagaimana workflow paralel memanfaatkan session yang berjalan berdampingan, dan menutup dengan integrasi fzf yang membuat perpindahan antar proyek hanya butuh dua detik.
Poin yang harus kalian bawa:
Ctrl+o lalu w; di versi 0.44 antarmukanya satu layar dengan pencarian fuzzy.zellij attach -c menciptakan session bila belum ada dan attach bila sudah ada.Ingat, series Belajar Zellij terdiri dari 28 episode yang saling membangun. Mengelola banyak session di satu mesin sudah rapi — tetapi bagaimana jika session itu berada di server jauh yang koneksinya sering putus? Di episode 19 selanjutnya kita membahas Remote Development & SSH Workflow: menjalankan Zellij di server remote, attach/detach yang tahan putus, mosh untuk koneksi lambat, jump host atau bastion, dan fitur remote sessions 0.44 untuk attach lintas mesin. Sampai jumpa di episode 19!