Filename search for Linux. One Catalog: Rebuild from local disks, Query by name.
Indexing walks getdents64 in parallel and skips per-file stat (names first, Everything-style). The GTK window mmaps ~/.cache/qfind/catalog and opens before you type.
git clone https://github.com/DerpcatMusic/qfind.git
cd qfind
./packaging/install.shPrebuilt x86_64 binaries (GitHub Releases):
curl -L https://github.com/DerpcatMusic/qfind/releases/download/v0.1.0/qfind-0.1.0-x86_64.tar.zst | tar -C /tmp -x --zstd
sudo install -Dm755 /tmp/qfind /tmp/qfind-tui /tmp/qfind-gtk /tmp/qfind-qt -t /usr/local/bin
sudo install -Dm644 /tmp/qfind.desktop /usr/local/share/applications/qfind.desktopArch, from this tree (uses the GitHub release tarball):
cd packaging/aur/qfind-bin
makepkg -sipackaging/aur/qfind builds from the source tag instead. To publish either to the AUR: add an SSH key at https://aur.archlinux.org/account/ then ./packaging/aur/publish.sh qfind-bin.
That puts qfind, qfind-tui, and qfind-gtk in ~/.local/bin, plus the desktop launcher. If Qt6 is installed, you also get qfind-qt (Breeze).
qfind-gtk # GUI
qfind # TUI
qfind index # rebuild Catalog
qfind kick wav # print matching paths
qfind --folders --class image catPlugins without rebuilding the binaries:
./packaging/install-plugins.sh| After install | Use | |
|---|---|---|
| Nautilus / Files | nautilus -q, open Files |
Ctrl+F in a folder, or right-click → Search with Qfind |
| Vicinae | reopen Vicinae | command Qfind |
Nautilus needs nautilus-python (Arch) or python3-nautilus (Debian). Vicinae needs Node/npm. Full steps: docs/plugins.md.
Fuzzy by default (nucleo / fzf). Switch to substring or exact from the GTK search bar, CLI --match, or TUI Ctrl+M. *.wav is a glob; .wav with no star filters by extension. An empty query lists files.
Type a name. Enter or double-click opens the file; drag a row out. Right-click at the cursor for Open, Open With, Preview, Show in Files, or Copy path.
Hover a Hit and press Space for preview (GNOME Sushi DBus, else a built-in window). Esc or Space closes it. Settings can switch Space to the selected Hit.
Sort: Score, Name, Newest, Oldest, Largest, Smallest. Date and size stat the Hits, not the whole Catalog. Newest/Oldest are recency, not day/week buckets.
Ctrl+scroll zooms like File Pilot: tight list, roomy list, then a square grid.
Gear: extra exclude names, include Mounts, default Zoom, spacing, Reset. Stored at ~/.config/qfind/config.toml.
Tree is experimental. WeightMap at the bottom is a WizTree-style folder heatmap.
The list is a virtual GTK4 ListView/GridView: bind does not stat, scrollbars stay visible, and kinetic flick is on. GSK composites on the GPU. GTK stays GTK because Wayland drag needs it.
qfind (or qfind-tui):
| Key | Action |
|---|---|
F3 |
preview |
F4 |
tree |
F6 |
WeightMap |
Ctrl+scroll, + / - |
zoom |
Ctrl+O |
show in Files |
Ctrl+Y |
copy path |
Tab, F2, Ctrl+D |
drag (ripdrag) |