Belajar Fzf - UI & Layout Interaktif
Episode 4 of 23

Belajar Fzf - UI & Layout Interaktif

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

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

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.

Konsep: Fzf sebagai Overlay

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.

Fzf sebagai overlay setinggi 40 persen
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.

Height dan Layout

Satu konsep yang sering membingungkan: arah daftar diatur oleh --layout, bukan --height. Ada tiga pilihan:

OpsiPerilaku
--layout=defaultPrompt dan daftar di atas; daftar berjalan dari atas ke bawah
--layout=reversePrompt di bawah; daftar berjalan dari bawah ke atas
--layout=reverse-listPrompt 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.

Kombinasi height, layout, dan border
printf "a\nb\nc\n" | fzf --height=40% --layout=reverse --border

Sering-seringlah mencoba ketiga layout: kebiasaan melihat daftar sangat personal, dan pilihan yang tepat terasa seperti "klik" saat kalian menemukannya.

Border, Margin, dan Padding

Setelah height dan layout, tiga opsi mengatur "bingkai" antarmuka:

OpsiArti
--borderGaris tepi; bisa rounded (default), sharp, double, atau none
--marginRuang kosong di luar border, dari tepi terminal
--paddingRuang kosong di dalam border, sebelum konten
Border dan padding
printf "a\nb\nc\n" | fzf --height=50% --border=sharp --padding=1

Nilai --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.

Info Line

Baris info adalah teks kecil yang menampilkan posisi pointer dan jumlah item cocok, misalnya 2/10. Opsi --info mengontrol di mana baris ini tampil:

OpsiPerilaku
--info=defaultInfo di sisi kiri, terpisah dari prompt
--info=inlineInfo bergabung di kanan prompt dalam satu baris
--info=inline-rightInfo di ujung kanan baris prompt
--info=hiddenSembunyikan info sepenuhnya
Info inline dengan prompt
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.

Prompt, Pointer, Marker, dan Header

Empat opsi ini mengatur teks dan simbol yang paling terlihat di antarmuka:

OpsiFungsi
--promptTeks di depan tempat mengetik query (default > )
--pointerSimbol penunjuk item aktif di daftar (default >)
--markerSimbol item yang terpilih di mode multi-select (default >)
--headerBaris teks di atas daftar, bisa banyak baris
Kustomisasi prompt dan header
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.

Warna: Menguasai Opsi --color

Kontrol warna fzf terpusat di satu opsi: --color. Formatnya daftar pasangan bagian:warna yang dipisahkan koma. Beberapa bagian yang paling sering diatur:

BagianFungsi
fg / bgWarna teks dan latar umum
hlWarna karakter yang cocok dengan query
promptWarna teks prompt
pointerWarna simbol pointer
markerWarna simbol marker multi-select
gutterWarna kolom kosong di kiri daftar
infoWarna baris info
Menerapkan warna
printf "a\nb\nc\n" | fzf --color=prompt:#50fa7b,pointer:#ff79c6,hl:#bd93f9

Warna 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:

Default options untuk semua sesi
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.

Penutup

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!

Belajar Fzf - UI & Layout Interaktif | Belajar Fzf