Merancang tampilan antarmuka fzf: height dan layout, border, margin, padding, info line, hingga kustomisasi prompt, pointer, marker, header, dan warna dengan opsi color.

Setelah di episode 3 kalian menguasai bahasa pola pencarian — fuzzy, exact, prefix, suffix, invert, dan OR — sekarang saatnya mengubah penampilan. Episode ini membahas UI & layout interaktif fzf: bagaimana mengatur ukuran dan posisi jendela, bentuk border, ruang kosong, baris info, hingga warna dan teks yang menyapa kalian setiap kali fzf dibuka.
Mengapa tampilan penting? Karena kalian akan melihat antarmuka ini ratusan kali sehari. Antarmuka yang nyaman — tinggi yang pas, prompt yang jelas, warna yang tidak menyilaukan — membuat fzf terasa seperti bagian alami dari workflow, bukan popup yang mengganggu. Dan di balik semua opsi tampilan, tersembunyi satu konsep penting yang akan kita pahami lebih dulu.
Secara default, fzf berjalan full-screen — ia menutup seluruh layar terminal selama berjalan. Untuk daftar yang pendek atau penggunaan singkat, ini terasa berat. Opsi --height mengubah fzf menjadi overlay: jendela kecil yang menempel di bagian bawah terminal, sementara konten di atasnya tetap terlihat.
printf "a\nb\nc\nd\ne\n" | fzf --height=40%Nilai --height bisa berupa persentase (40%) atau jumlah baris (10). Saat dipakai sebagai overlay, fzf bahkan tidak akan menggulir konten terminal — ia menimpa bagian bawah layar dan mengembalikannya setelah selesai. Inilah alasan utama kenapa banyak pengguna fzf memakai --height=40% di konfigurasi default mereka.
Satu konsep yang sering membingungkan: arah daftar diatur oleh --layout, bukan --height. Ada tiga pilihan:
| Opsi | Perilaku |
|---|---|
--layout=default | Prompt dan daftar di atas; daftar berjalan dari atas ke bawah |
--layout=reverse | Prompt di bawah; daftar berjalan dari bawah ke atas |
--layout=reverse-list | Prompt di atas, tapi daftar berjalan dari bawah ke atas |
reverse adalah favorit banyak orang karena dua alasan: item terbaik selalu muncul paling dekat dengan prompt (tidak perlu menekan j berkali-kali), dan posisinya meniru perilaku menu modern. reverse-list memberi prompt di atas sambil tetap menaruh hasil terbaik di bagian bawah layar — kompromi yang cocok untuk layar sempit.
printf "a\nb\nc\n" | fzf --height=40% --layout=reverse --borderSering-seringlah mencoba ketiga layout: kebiasaan melihat daftar sangat personal, dan pilihan yang tepat terasa seperti "klik" saat kalian menemukannya.
Setelah height dan layout, tiga opsi mengatur "bingkai" antarmuka:
| Opsi | Arti |
|---|---|
--border | Garis tepi; bisa rounded (default), sharp, double, atau none |
--margin | Ruang kosong di luar border, dari tepi terminal |
--padding | Ruang kosong di dalam border, sebelum konten |
printf "a\nb\nc\n" | fzf --height=50% --border=sharp --padding=1Nilai --margin dan --padding bisa berupa satu angka (semua sisi), dua (atas,bawah) atau empat (atas,kanan,bawah,kiri). Margin sangat berguna di terminal dengan beberapa panel — kalian bisa menyisihkan ruang agar fzf tidak menutupi informasi penting — sementara padding memberi "napas" pada konten di dalam border.
Baris info adalah teks kecil yang menampilkan posisi pointer dan jumlah item cocok, misalnya 2/10. Opsi --info mengontrol di mana baris ini tampil:
| Opsi | Perilaku |
|---|---|
--info=default | Info di sisi kiri, terpisah dari prompt |
--info=inline | Info bergabung di kanan prompt dalam satu baris |
--info=inline-right | Info di ujung kanan baris prompt |
--info=hidden | Sembunyikan info sepenuhnya |
printf "a\nb\nc\n" | fzf --height=30% --info=inline --prompt="pilih: "Gaya inline dan inline-right membuat antarmuka terasa lebih rapi karena menggabungkan prompt dan info dalam satu baris — tanpa garis terpisah yang memakan ruang.
Empat opsi ini mengatur teks dan simbol yang paling terlihat di antarmuka:
| Opsi | Fungsi |
|---|---|
--prompt | Teks di depan tempat mengetik query (default > ) |
--pointer | Simbol penunjuk item aktif di daftar (default >) |
--marker | Simbol item yang terpilih di mode multi-select (default >) |
--header | Baris teks di atas daftar, bisa banyak baris |
printf "a\nb\nc\n" | fzf --prompt="cari: " --pointer="->" --header="Tekan enter untuk memilih"Prompt yang deskriptif sangat membantu ketika fzf dipakai untuk daftar yang berbeda — misalnya cari file: untuk file dan cari branch: untuk git. Header bisa dipakai untuk menampilkan petunjuk singkat, seperti --header="Tekan tab untuk multi-select", sehingga kalian tidak perlu menghafal keybindings.
Kontrol warna fzf terpusat di satu opsi: --color. Formatnya daftar pasangan bagian:warna yang dipisahkan koma. Beberapa bagian yang paling sering diatur:
| Bagian | Fungsi |
|---|---|
fg / bg | Warna teks dan latar umum |
hl | Warna karakter yang cocok dengan query |
prompt | Warna teks prompt |
pointer | Warna simbol pointer |
marker | Warna simbol marker multi-select |
gutter | Warna kolom kosong di kiri daftar |
info | Warna baris info |
printf "a\nb\nc\n" | fzf --color=prompt:#50fa7b,pointer:#ff79c6,hl:#bd93f9Warna bisa berupa nama (green, red), angka, atau kode hex seperti di atas. Perhatikan gutter — bagian yang sering dilupakan padahal menentukan apakah kolom kiri (tempat pointer) terlihat seperti satu kesatuan dengan daftar atau seperti bilah terpisah. Untuk penggunaan harian, gabungkan semua preferensi ini dalam FZF_DEFAULT_OPTS:
export FZF_DEFAULT_OPTS="--height=40% --layout=reverse --border --info=inline --prompt='> ' --pointer='>' --color=prompt:#50fa7b,pointer:#ff79c6,hl:#bd93f9"Export di atas — yang bisa kalian taruh di ~/.bashrc seperti kita bahas di episode 0 — akan membuat semua fzf di sistem memakai tampilan yang sama. Ganti warna sesuai tema terminal kalian, dan jangan takut bereksperimen: opsi ini tidak akan merusak apa pun.
Pada episode 4 ini, kalian telah merancang tampilan antarmuka fzf: konsep overlay dengan --height, tiga arah daftar dengan --layout, bingkai dengan --border, ruang dengan --margin dan --padding, baris info dengan --info, teks dan simbol dengan --prompt, --pointer, --marker, dan --header, serta warna dengan --color.
Inti yang harus dibawa pulang:
--height=40% mengubah fzf menjadi overlay yang tidak menutup layar penuh.--layout=default/reverse/reverse-list mengatur arah daftar — coba dan pilih favorit kalian.--border, --margin, --padding mengatur bingkai; --info mengatur baris info.--prompt, --pointer, --marker, --header mengatur teks dan simbol.--color=bagian:warna mengontrol warna; kumpulkan semua preferensi di FZF_DEFAULT_OPTS.Di episode 5 selanjutnya, kita akan belajar bergerak cepat di dalam fzf: navigasi & keybindings dasar — vim-style keys dan jump mode untuk daftar item, shortcut readline untuk mengedit query, hingga cara memilih dan keluar termasuk multi-select. Sampai jumpa di episode 5!