Membuka fzf di dalam popup tmux dengan --tmux serta floating pane Zellij dengan --popup, lengkap dengan kontrol posisi, ukuran, dan border. Termasuk skrip fzf-tmux untuk versi lama dan pola meminjam konteks tanpa meninggalkan alur kerja.

Di episode 11 kalian membangun pipeline pencarian yang cepat: fd untuk daftar file, ripgrep untuk menelusuri isi, keduanya menyumpan fzf. Hasilnya, mencari file dan memburu kode terasa seketika. Namun masih ada satu friksi yang tersisa: setiap kali fzf terbuka dalam mode penuh, ia menimpa seluruh layar — kalian kehilangan konteks editor, log yang sedang diikuti, atau output yang sedang dibaca.
Episode ini menghapus friksi itu dengan menaruh fzf di dalam popup — jendela melayang di atas terminal yang kecil, fokus, dan pergi setelah dipakai. Kita akan membahas opsi --tmux (yang sejak fzf 0.71 berganti nama menjadi --popup) untuk menampilkan fzf di popup tmux maupun floating pane Zellij, skrip fzf-tmux sebagai cara lama sebelum opsi itu ada, serta kontrol posisi, ukuran, dan border.
Analogikan perbedaannya begini: mode penuh itu seperti memindahkan seluruh meja kerja ke ruangan lain ketika kalian butuh mencari satu berkas. Popup itu seperti menempelkan post-it di tepi monitor — kalian melihatnya sebentar, mengambil isinya, lalu kembali bekerja tanpa beranjak.
fzf memang punya --height untuk menampilkan dirinya sebagai jendela kecil di bawah kursor — kita sudah bahas di episode 3. Namun --height tetap menempel pada layout terminal: ia mendorong prompt naik, dan di dalam tmux ia hanya menyusut di dalam pane yang sama. Popup melangkah lebih jauh: ia menjadi lapisan di atas semua pane, berpusat di layar, tanpa menggeser satu pun isi terminal di belakangnya.
Ini sesuai dengan mental model "pinjam konteks" yang kita kenal dari tmux: kadang kalian hanya butuh bertanya sesuatu secara singkat — nama file, nama session, PID — lalu kembali. Menjadikan itu fullscreen adalah seperti membangun ruang rapat setiap kali ingin bertanya jam berapa sekarang.
--tmux: fzf di Popup tmuxSejak fzf 0.49, opsi --tmux menampilkan fzf di dalam popup tmux. Persyaratannya sederhana: kalian harus berada di dalam sesi tmux, dan tmux kalian minimal versi 3.3. Di luar tmux, opsi ini diabaikan dengan tenang — tidak error, tidak memprotes.
Tanpa argumen, --tmux memakai default center,50%: popup di tengah layar, selebar dan setinggi setengah layar:
fzf --tmuxfzf --tmux center,50%
fzf --tmux left,40%,70%
fzf --tmux right,35%
fzf --tmux bottom,60%Syntax lengkapnya adalah [center|top|bottom|left|right][,LEBAR[%]][,TINGGI[%]]. Nilai yang tidak ditulis memakai default: posisi center, lebar dan tinggi 50%. Ukuran boleh angka mutlak (kolom/baris) atau persen:
| Bentuk | Posisi | Ukuran |
|---|---|---|
center,50% | Tengah | 50% lebar dan tinggi |
left,40% | Kiri | 40% lebar, tinggi default 50% |
top,80%,40% | Atas | 80% lebar, 40% tinggi |
bottom,60% | Bawah | 60% tinggi, lebar default 50% |
Note
--tmux baru aktif bila terdeteksi variabel lingkungan tmux. Karena itu pola yang aman untuk script yang dipakai di dalam dan luar tmux adalah menyebut --height terlebih dahulu, lalu --tmux: di luar tmux --tmux diabaikan dan --height yang bekerja; di dalam tmux --tmux menang.
fzf --height 70% --tmux 70%fzf-tmux: Skrip untuk Versi LamaSebelum --tmux lahir, cara menampilkan fzf di jendela kecil tmux adalah lewat skrip pembungkus fzf-tmux yang ikut terpasang bersama fzf. Skrip ini membuat split atau popup tmux, menjalankan fzf di dalamnya, lalu menunggu hasilnya. Ia masih berguna untuk tmux yang lebih tua dari 3.3:
fzf-tmux -p 70%,60% -- fzf --reverseBentuk -p LEBAR%,TINGGI% serupa dengan --tmux: popup di tengah. Untuk mesin modern, --tmux dan --popup adalah pilihan yang lebih bersih — satu opsi, tanpa skrip perantara — tetapi memahami fzf-tmux penting karena banyak tutorial lama dan dokumentasi plugin masih menunjukkannya.
--popup: Satu Nama untuk Tmux dan ZellijKeterbatasan --tmux adalah namanya yang terikat pada satu ekosistem. fzf 0.71 menyelesaikan ini dengan memperkenalkan --popup sebagai nama baru, dengan --tmux menjadi aliasnya. Nilai besarnya: --popup kini juga bekerja di dalam Zellij (Zellij 0.44 ke atas), membuka floating pane secara otomatis. Satu opsi, dua rumah.
fzf --popup center,60%fzf --popup bottom,40%Bagi tim yang memakai keduanya — sebagian anggota di tmux, sebagian di Zellij — --popup di konfigurasi bersama berarti kalian cukup menulis satu perintah yang bekerja di mana pun.
Satu detail yang sering membingungkan adalah border popup. Pada tmux 3.7 ke atas dan Zellij, --popup memakai border native — border asli dari floating pane — sehingga pane bisa digeser dan di-resize dengan mouse, dan tetap bisa di-zoom. Jika kalian menyebut --border secara eksplisit, fzf beralih menggambar border-nya sendiri. Kata kunci border-native memaksa fzf memakai border milik tmux atau Zellij:
fzf --popup border-nativefzf --popup --border-label ' fzf 'Tip
Kalau kalian sering membuka fzf di popup yang sama berulang kali, jangan ketik ulang — daftarkan di konfigurasi. Contohnya lewat FZF_CTRL_T_OPTS="--tmux center,50%" sehingga pencarian file Ctrl+T otomatis melayang di popup, tanpa perlu menyentuh skrip integrasi shell.
Sekarang kita satukan semuanya: popup + preview + aksi. Contoh klasik yang langsung terasa manfaatnya adalah session switcher tmux — daftar session, preview isi pane-nya, lalu pindah tanpa meninggalkan apa pun:
tmux list-sessions -F '#S' | fzf --tmux center,60% \
--preview 'tmux capture-pane -pt {} -S -20 2>/dev/null' \
--bind 'enter:execute(tmux switch-client -t {})+abort'Bacalah dari kiri: daftar session masuk ke fzf, fzf tampil sebagai popup, preview menampilkan 20 baris terakhir pane session yang sedang disorot, dan Enter memindahkan client. Jika kalian menekan Esc, tidak terjadi apa-apa — aman. Pola yang sama bisa dipakai untuk pilih file, pilih container Docker, atau pilih host — cukup ganti sumber daftar dan preview-nya.
| Kesalahan | Gejala | Solusi |
|---|---|---|
--tmux di luar tmux | Diabaikan, fzf membuka layar penuh | Gabung dengan --height sebagai fallback |
| tmux lebih tua dari 3.3 | Popup tidak muncul | Upgrade tmux, atau pakai skrip fzf-tmux |
| Ukuran tidak ditentukan | Popup terasa terlalu besar/kecil | Tulis format lengkap posisi,LEBAR%,TINGGI% |
Mengharapkan --tmux di Zellij | Popup tidak muncul | Gunakan --popup (0.71+) yang mendukung keduanya |
Lupa menambah --tmux di skrip | fzf menimpa layar saat di dalam tmux | Ekspor lewat FZF_CTRL_T_OPTS atau FZF_DEFAULT_OPTS |
Caution
Popup adalah alat meminjam konteks, bukan pengganti tata letak kerja. Untuk proses yang harus menetap — dev server, log tailing, editor — tetaplah gunakan pane dan window tmux biasa. Memakai popup untuk pekerjaan yang panjang justru menambah friksi karena popup tidak punya ruang untuk banyak konten dan hilang begitu ditutup.
Pada episode 12 ini kalian membawa fzf ke lapisan atas terminal: --tmux untuk popup tmux dengan kontrol penuh posisi dan ukuran (center,50%, left,40%,70%, bottom,60%), skrip fzf-tmux untuk versi lama, --popup sejak 0.71 yang menyatukan tmux dan Zellij dalam satu opsi, kontrol border native versus border yang digambar fzf, dan pola session switcher yang memadukan popup, preview, serta aksi execute.
Kunci yang harus dibawa pulang: fzf tidak lagi harus menguasai layar. Dengan --popup, ia menjadi asisten yang muncul saat diminta dan menghilang saat selesai — dan ini membuka pintu bagi skenario berikutnya.
Namun semua contoh sejauh ini masih berjalan di satu mesin. Di episode 13 kita membawa fzf ke dunia remote: remote development & SSH workflow — mencari file, menelusuri history, dan memilih proses langsung di server lewat SSH, operasi batch massal dengan fzf dan xargs, hingga mengelola lusinan host sekaligus. Karena server tidak pernah berjarak nol meter dari meja kalian, bukan?