membuka direktori konfigurasi zellij, menghasilkan config.kdl default, memahami blok keybinds, options, dan plugins, plus reload tanpa restart dan penyimpanan preferensi lewat session mode.

Selama tujuh episode, kalian menekan tombol yang semuanya sudah terpasang default. Namun kalian tidak akan pernah menjadi pengguna Zellij yang benar-benar produktif jika tidak mulai menulis konfigurasi. Setiap orang punya tangan, editor, dan kebiasaan yang berbeda — dan Zellij memahami itu. Hampir semua perilaku yang kalian pelajari sejauh ini — keybinding, ukuran scrollback, perilaku mouse, plugin yang tampil di bar — berasal dari satu file: config.kdl. Di episode ini, file itu menjadi milik kalian.
Mengapa konfigurasi penting? Karena Zellij dirancang agar kunci ke kebiasaan kalian, bukan sebaliknya. Pilihan default Zellij bagus, tetapi bukan untuk semua orang. Mungkin kalian ingin Ctrl+b bergaya tmux, atau ingin scrollback lebih besar dari 10000 baris, atau ingin menonaktifkan mouse. Semua itu adalah keputusan yang ditulis sekali di config.kdl, disimpan di dotfiles, dan dibawa ke mana pun — termasuk ke server produksi. Inilah awal dari Zellij yang "milik kalian".
Peta episode: pertama kita temukan dan pahami struktur direktori konfigurasi. Lalu hasilkan file default dengan zellij setup --dump-config. Berikutnya tiga blok inti: keybinds, options, dan plugins. Terakhir, dua keterampilan operasional: reload konfigurasi tanpa restart dan menyimpan preferensi lewat Session mode. Pada akhir episode ini, config.kdl tidak lagi terasa seperti file misterius, melainkan papan kontrol Zellij.
Ada satu prinsip yang menyatukan semuanya: konfigurasi adalah kode. config.kdl adalah teks biasa yang bisa di-commit ke Git, di-review, diuji, dan disinkronkan antar mesin. Di episode 27 kita akan membungkus seluruhnya ke dalam dotfiles yang bisa di-bootstrap dalam satu perintah. Untuk sekarang, mulai dari satu file dan satu direktori — karena fondasi yang rapi menentukan seberapa jauh kalian bisa pergi.
Zellij mencari konfigurasi dalam urutan prioritas: file yang diberikan lewat flag --config, nilai variabel environment ZELLIJ_CONFIG_FILE, lalu lokasi default. Lokasi default mengikuti konvensi sistem operasi masing-masing. Di Linux (yang mengikuti standar XDG) konfigurasi berada di ~/.config/zellij/, dan di macOS di direktori Application Support. Windows mengikuti jalur %APPDATA% yang setara.
~/.config/zellij/
├── config.kdl
├── layouts/
│ └── (file layout .kdl, dibahas episode 10)
├── themes/
│ └── (file theme .kdl, dibahas episode 11)Perhatikan dua hal. Pertama, bahasa konfigurasi Zellij adalah KDL — bukan YAML seperti tmux config klasik, bukan TOML. KDL terlihat seperti campuran XML dan bahasa pemrograman: node dipanggil dengan nama, diikuti kunci dan nilai. Strukturnya ringkas dan mudah dibaca. Kedua, folder layouts/ dan themes/ adalah direktori kerja Zellij: file .kdl di dalamnya akan dibahas di episode 10 (layouts) dan episode 11 (theme). Plugin WASM custom, sementara itu, dimuat dari lokasi mana pun yang kalian tunjuk dengan URL file:... — episode 15 akan membedahnya.
Bagi yang ingin fleksibilitas maksimal, ada ZELLIJ_CONFIG_DIR untuk mengganti direktori konfigurasi secara keseluruhan. Kombinasi ZELLIJ_CONFIG_FILE dan ZELLIJ_CONFIG_DIR membuat kalian bisa memiliki beberapa profil Zellij dan menukarnya sesuai konteks — satu untuk kerja lokal, satu untuk server.
Ketiga jalur penemuan konfigurasi — flag --config, environment, dan lokasi default — bekerja dalam urutan prioritas yang tegas. Flag menang atas segalanya, lalu ZELLIJ_CONFIG_FILE, lalu lokasi default. Ini sangat praktis untuk menguji: zellij --config /tmp/eksperimen.kdl menjalankan sesi dengan config sementara tanpa menyentuh config utama kalian. Begitu hasilnya cocok, salin ke tempat permanen dan jadikan bagian dari dotfiles.
zellij setup --dump-configDalam kebanyakan kasus, Zellij membuat config.kdl otomatis pada sesi pertama. Tetapi untuk memulai dengan fondasi yang lengkap — dan untuk mempelajari setiap opsi beserta komentarnya — cara terbaik adalah menghasilkan file default secara eksplisit.
mkdir -p ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdlzellij setup --dump-config menulis seluruh konfigurasi default ke stdout — ratusan baris, lengkap dengan komentar penjelasan di setiap opsi. Dengan redirect ke config.kdl, kalian mendapatkan salinan lengkap yang siap diedit. Buka dengan editor kalian dan pelan-pelan hapus komentarnya seiring kalian memahami tiap bagian.
keybinds {
normal { ... }
resize { ... }
pane { ... }
}
options { ... }
plugins { ... }File hasil dump sangat berharga sebagai dokumentasi hidup. Setiap opsi diikuti komentar yang menjelaskan fungsi, nilai default, dan apakah ia membutuhkan restart. Alih-alih mengingat seluruh API konfigurasi, simpan file ini dan baca bagian yang relevan saat butuh. Menurut pedoman Zellij 0.44.x, urutan konfigurasi yang paling umum adalah: keybinds, lalu options, lalu plugins.
Note
zellij setup --dump-config hanya mencetak ke stdout — ia tidak mengubah file apa pun. Aman dijalankan kapan saja. Untuk memeriksa kesehatan environment, ada zellij setup --check yang sudah kalian kenal dari episode 0. Dua perintah setup ini adalah jembatan antara instalasi dan konfigurasi.
keybinds: Mengendalikan Setiap ModeBlok keybinds adalah inti dari filosofi mode-based Zellij. Di dalamnya, setiap mode adalah sub-block, dan setiap baris bind menghubungkan satu atau lebih tombol dengan satu atau lebih aksi. Sintaksnya:
keybinds clear-defaults=true {
normal {
bind "Ctrl p" { SwitchToMode "Pane"; }
bind "Alt n" { NewPane; }
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
}
pane {
bind "x" { CloseFocus; SwitchToMode "Normal"; }
bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
}
}Dua hal kunci di sini. clear-defaults=true mengganti seluruh keybinding default dengan hanya apa yang kalian tulis — cara terbaik untuk memulai dari nol yang bersih. Tanpa flag itu, baris bind kalian menambah di atas default. Ada juga unbind untuk melepas tombol tertentu, dan unbind-all untuk mengosongkan satu mode. Masing-masing mode memiliki konteksnya sendiri: pane, tab, resize, move, scroll, session, tmux, dan locked.
Kekuatan tersembunyi ada di sintaks multi-key dan multi-action. bind "Alt h" "Alt Left" mengikat dua tombol sekaligus ke aksi yang sama — tidak perlu menulis dua baris. Dan satu tombol bisa memicu banyak aksi berurutan, seperti CloseFocus lalu SwitchToMode "Normal", persis seperti perilaku default saat menutup pane. Di episode 9 kalian akan membedah blok ini lebih dalam, termasuk menangani konflik antar keybinding.
Karena setiap mode punya block-nya sendiri, kalian bisa mengubah perilaku satu mode tanpa mengganggu yang lain. Ubah resize agar tombol h memperkecil alih-alih memperbesar? Cukup edit block resize — mode lain tidak tersentuh. Dan karena Zellij menampilkan hint keybinding di status-bar setiap kali kalian masuk mode, kalian bisa menguji keybind baru tanpa membuka manual. Siklus ubah-tes ini sangat singkat, terutama dengan reload otomatis yang dibahas di akhir episode ini.
options: Menyetel Perilaku GlobalJika keybinds menentukan tombol mana, options menentukan bagaimana Zellij berperilaku. Ini daftar opsi yang paling sering kalian ubah di awal:
| Opsi | Nilai default | Fungsi |
|---|---|---|
mouse_mode | true | Mengaktifkan interaksi mouse (pilih, scroll, resize) |
scroll_buffer_size | 10000 | Jumlah baris yang disimpan per pane di scrollback |
copy_command | (OSC 52) | Perintah untuk menyalin teks ke clipboard |
copy_on_select | true | Otomatis menyalin saat seleksi dilepas |
default_layout | default | Layout yang dimuat saat sesi dimulai |
theme | default | Tema warna antarmuka |
pane_frames | true | Menampilkan frames pembatas antar pane |
default_mode | normal | Mode yang aktif saat Zellij dimulai |
options {
scroll_buffer_size 50000
copy_command "wl-copy"
mouse_mode true
pane_frames true
}Perhatikan sintaks KDL di blok ini: nama opsi diikuti nilai, tanpa tanda sama dengan dan tanpa titik koma. scroll_buffer_size 50000 menaikkan memori scrollback dari 10000 menjadi 50000 baris per pane — berguna untuk log yang panjang, dengan harga memori yang lebih besar. copy_command "wl-copy" menggantikan protokol OSC 52 dengan perintah Wayland yang sudah kalian kenal di episode 6. pane_frames false menyembunyikan frames secara permanen — keputusan estetika yang juga bisa dilakukan sesaat lewat Ctrl+p lalu z.
Dua opsi yang paling sering menimbulkan kejutan. mouse_mode false menyelesaikan konflik salin-tempel di terminal tertentu (beberapa terminal kesulitan menyeleksi teks saat mode mouse aktif), tetapi kalian kehilangan resize via drag dan scroll mouse. Dan scroll_buffer_size bukan opsi yang "semakin besar semakin baik" tanpa biaya — setiap pane menyimpan buffer di memori, jadi ratusan ribu baris dikali puluhan pane bisa terasa. Mulai dari 50000 dan naikkan hanya jika perlu.
Tip
Cara terbaik belajar blok options: buka config.kdl hasil dump, dan baca bagian options sambil mencocokkan dengan perilaku yang kalian alami selama tujuh episode terakhir. mouse_mode, scroll_buffer_size, copy_command — semua ini pernah muncul di episode sebelumnya. Mengubahnya di sini berarti memindahkan kontrol dari sesi ke permanen.
plugins: Antarmuka yang Kalian Lihat Setiap HariBanyak yang tidak menyadari bahwa tab-bar di atas, status-bar di bawah, dan strider adalah plugin — modul WASM yang berjalan di dalam Zellij. Blok plugins menentukan plugin mana yang dimuat dan di mana. Ini bagian yang kalian lihat setiap detik, meskipun jarang kalian sentuh.
plugins {
tab-bar location="zellij:tab-bar"
status-bar location="zellij:status-bar"
strider location="zellij:strider"
compact-bar location="zellij:compact-bar"
}Empat plugin bawaan membentuk antarmuka: tab-bar (daftar tab di atas), status-bar (bar bawah dengan mode dan hint), strider (file explorer, episode 14), dan compact-bar (versi ringkas status-bar). URL zellij:... adalah alias untuk plugin bawaan; kalian bisa mengganti location dengan file:/path/to/plugin.wasm atau https://... untuk plugin custom — fondasi yang akan kalian bangun di episode 15 dan 16. Ada juga blok load_plugins untuk memuat plugin di latar belakang saat sesi dimulai.
Mengganti plugin bawaan adalah cara paling populer untuk mengubah tampilan Zellij tanpa menyentuh kode. Ingin status-bar yang lebih ringkas? Arahkan status-bar location ke plugin compact-bar atau custom. Ingin tab-bar dengan informasi tambahan? Ganti tab-bar location dengan plugin buatan komunitas. Karena Zellij memperlakukan antarmuka sebagai plugin, kalian mendapatkan tingkat kustomisasi yang tidak dimiliki multiplexer tradisional — dan episode 15 akan menunjukkan cara menulis plugin kalian sendiri.
Important
Perubahan pada blok plugins — terutama mengganti location plugin — umumnya membutuhkan restart sesi untuk berlaku, tidak seperti keybind yang langsung aktif. Komentar pada opsi-opsi di config.kdl selalu menandai ini. Sebelum mengutak-atik plugin, cek dulu apakah sesi berjalan yang sedang kalian pakai bisa di-restart tanpa kehilangan pekerjaan.
Salah satu fitur yang paling menyenangkan sejak Zellij 0.41: konfigurasi di-reload secara otomatis. Zellij memasang file-watcher pada config.kdl aktif. Ubah file, simpan, dan sebagian besar perubahan langsung diterapkan pada sesi yang berjalan — keybinding baru aktif dalam hitungan detik, tema berganti di depan mata. Tidak ada Ctrl+r, tidak ada restart, tidak ada detach-attach.
Reload otomatis bekerja lewat file-watcher yang memantau config.kdl setiap detik. Artinya, editor dengan auto-save akan memicu reload bahkan tanpa kalian menekan save secara eksplisit — dan file yang dihapus sementara akan ditunggu hingga muncul kembali. Satu catatan kecil: karena watcher bekerja pada file langsung, config yang berupa symlink (misalnya dari dotfiles manager seperti stow) bisa tidak terdeteksi pada versi tertentu — salin file secara fisik jika kalian mengalami hal ini.
Namun tidak semua opsi bisa di-reload dengan cara ini. Opsi yang memengaruhi arsitektur — misalnya default_mode, session_serialization, atau layout_dir — ditandai Requires restart di komentar config.kdl. Untuk opsi seperti itu, kalian harus memulai sesi baru (atau me-restart sesi lama). Kebiasaan yang benar: cek komentar opsi sebelum berharap perubahan langsung berlaku.
Cara kedua untuk mengubah preferensi adalah lewat Session mode. Tekan Ctrl+o, lalu c untuk membuka layar Configuration. Di sinilah kalian bisa mengganti preset keybinding (termasuk mode non-colliding), mengganti secondary modifier, dan menyetel opsi tanpa menyentuh file. Perubahan bisa diterapkan ke sesi berjalan atau disimpan ke config.kdl agar persisten — perbedaannya hanya satu langkah di layar itu. Sementara itu, Ctrl+o lalu w membuka session-manager untuk mengelola banyak sesi.
zellij action save-sessionZellij menyerialisasi sesi secara berkala untuk keperluan resurrection. zellij action save-session memicu serialisasi seketika — berguna ketika kalian baru saja merombak tata letak dan ingin memastikan state itu tersimpan sebelum menutup sesi. Detail resurrection akan dibahas di episode 17; untuk sekarang, ingat bahwa preferensi kalian punya jalur penyimpanan: config file untuk permanen, Session mode untuk interaktif.
Tip
Workflow yang paling efektif untuk eksperimen: jalankan Zellij, buka config.kdl di editor di satu pane, lalu ubah nilai dan simpan — perhatikan perubahan yang langsung berlaku di pane lain. Ketika puas, commit config ke dotfiles. Ini loop umpan balik tercepat yang Zellij tawarkan, dan menjadi alasan mengapa menyesuaikan Zellij terasa begitu adiktif.
key: value dan indentasi gaya YAML tidak berlaku. Sintaks KDL adalah node key=value tanpa titik dua. Mencampur keduanya membuat parser gagal — pelajari bentuk KDL sekali, dan selesai.clear-defaults=true. Tanpa flag ini, keybind custom kalian hanya menambah default — dan konflik tersembunyi bisa membuat tombol tidak berfungsi seperti harapan. Jika ingin kontrol penuh, mulai dengan keybinds clear-defaults=true.copy_command untuk platform yang salah. Konfigurasi yang berisi pbcopy di Linux tidak akan bekerja. Jaga config.kdl tetap portabel dengan menyesuaikan perintah clipboard per mesin, atau simpan profil terpisah via ZELLIJ_CONFIG_FILE.Ctrl+o lalu c tanpa menyentuh file. Ini cara tercepat untuk mengetes preset keybinding sebelum memutuskan menuliskannya permanen.Kalian kini memiliki kunci Zellij: tahu di mana config berada, cara menghasilkan versi default, dan cara membaca serta menulis tiga blok utamanya. keybinds mengendalikan tombol, options mengendalikan perilaku, plugins mengendalikan antarmuka. Ditambah kemampuan reload tanpa restart dan penyimpanan preferensi lewat Session mode, kalian tidak lagi bergantung pada pengaturan pabrik — Zellij mulai menyesuaikan diri dengan kalian, bukan sebaliknya.
Poin yang harus kalian bawa:
~/.config/zellij/config.kdl, bahasa KDL.zellij setup --dump-config > config.kdl.keybinds, options, plugins.Ctrl+o lalu c) untuk konfigurasi interaktif; save-session untuk serialisasi seketika.Di episode 9 berikutnya, kita menyelami blok keybinds lebih dalam: custom keybindings dan keybinding conflicts. Kalian akan belajar sintaks bind/unbind per mode, clear-defaults dan unbind-all, multi-action dalam satu keybind, hingga strategi menyelesaikan konflik antara Zellij, shell, dan editor kalian. Sampai jumpa di episode 9.