The fastest GUI file manager on Linux.
Keyboard-first. Built for Omarchy.
Install · Views · Performance · Keyboard · Releases
Flea combines a Rust backend with a Quickshell interface that follows your Omarchy theme. Large directories stay responsive: the window loads rows and requests thumbnails as you need them.
- Three views. List, columns and grid, with tabs and natural filename sorting.
- Quick Look. Press Space for images, PDFs, text, media and archive contents, and CSV, TSV, Excel and OpenDocument spreadsheets as a table.
- File operations. Copy, move, rename, trash, compress and extract, with an undo journal.
- Network and sharing. SMB, SFTP, FTPS, WebDAV, NFS, Dropbox and Taildrop.
- Devices. USB drives, phones and cameras over MTP, PTP and AFC, mounted from the rail.
- Desktop integration. Default file manager, “Show in folder” and Open/Save dialogs.
- Your settings. Omarchy text sizes and configurable menus.
- Marks and palettes. Per-filetype marks and colours, and 95 bundled palettes beside your theme.
An iPhone lists once it has been unlocked and trusted on this machine: AFC needs the pairing record
that leaves behind, not an unlocked screen every time. Pairing also puts the phone on its tethering
USB configuration, so iOS shows Personal Hotspot as active while it is plugged in, and Flea never
uses it. If this machine should never route through the phone, tell NetworkManager so with a
conf.d drop-in carrying unmanaged-devices=driver:ipheth; that is your call, not the package's.
omarchy pkg add fleaMake Flea your default file manager, file chooser and the app opened by Super+Shift+F:
flea --default
systemctl --user restart xdg-desktop-portalUpdate through Omarchy:
omarchy updateFile chooser only, development package and removal
Use Flea for portal Open/Save dialogs without changing your default file manager:
flea --picker
systemctl --user restart xdg-desktop-portalFor the rolling development build:
omarchy pkg aur add flea-gitBefore removing Flea, undo its desktop integration:
flea --default off
omarchy pkg drop fleaIf you previously pinned another directory handler, restore that handler explicitly. Installation details cover dependencies, desktop integration and removal.
List for file details. Grid for photos and clips. Columns for browsing folders with a preview beside them.
Connect to a server with the + beside NETWORK in the sidebar: pick SMB, SFTP, FTPS, WebDAV
or NFS, fill in the host, the share or path and your username and password, and the dialog shows the
exact URI it will hand to gio mount before it does. The place is saved to the same
~/.config/gtk-3.0/bookmarks Nautilus reads, so both file managers list it. The first connection to an SSH server shows you its
fingerprint and waits: the button becomes Connect anyway, and a key that has changed since you
last connected says that first, because a rebuilt server and an impostor look identical from here.
A password is used for
that one connection and nothing is stored, unless you switch on Settings → Places → Remember
passwords, which hands it to the login keyring — the store GNOME and Nautilus already use — and the
next connection then needs no password at all.
Right-click the column header, or open Settings → View → Columns, to switch a column on: Mode, Size, Items — how many children a folder holds — Modified and Kind. The count comes from the same walk the Size column reads, so a folder answers both at once.
Turn on File type marks and colours in Settings → Display and a row's mark and ink come from its
name rather than from its MIME class, so .json, .toml and .md stop sharing one document mark.
The marks are Flea's own lucide set; the colours are yazi's table, which is
nvim-web-devicons'. Settings → Theme carries 95
bundled palettes from Strata, with following your Omarchy theme
the default and what a fresh install does. See vendor/ for what is imported
and under which licence.
Settings → File types says which application an ending opens in, which the desktop's own
default cannot: a sniffer reads brain.nii and brain.nii.gz as one NIfTI volume and one gzip
stream, so nothing keyed on the file type can send the pair to the same viewer without claiming
every other .gz on the box with it. A rule is one ending and one installed application, the
longest ending wins, and everything with no rule opens exactly the way it did before. Enter obeys
the rule too, including on an ending Flea would otherwise have shown in its own archive view.
→ opens Quick Look on the row under the cursor, from any view, and Space marks that row instead: selection is what the listing's own Space does, and Ctrl+A marks the whole folder. Hold Space and move to paint a run: every row the cursor reaches is marked until the key comes back up, and starting on a row that is already marked clears the run instead. Every kind behaves the same way in the preview: ↑ and ↓ move to the next file with the preview following, Space fills the window and Space again brings the inset surface back, and ← leaves. Once it fills the window the arrows move the content instead: a PDF's pages, a media file's playhead, a text file's or an archive listing's own scroll. Page through a PDF, play media or inspect an archive.
The shelf lives in the Omarchy bar: send files there from any menu, drag them out into any app, pin the ones you keep coming back to. Phones are Devices rows over MTP, AFC and PTP.
Measured on 8 September 2026, using the source tree released as 0.1.6. Cold caches, three runs per app, medians below. Seven GUI apps on the same Omarchy machine.
Flea led this run in settled time, window memory and process-tree CPU. PCManFM mapped its window sooner.
| File manager | First window | Settled | Window PSS | CPU |
|---|---|---|---|---|
| Flea | 749 ms | 1.21 s | 88.0 MiB | 0.89 s |
| Strata | 632 ms | 1.67 s | 93.9 MiB | 1.39 s |
| Dolphin | 699 ms | 5.43 s | 211.2 MiB | 8.97 s |
| Nemo | 780 ms | 22.23 s | 459.6 MiB | 25.34 s |
| Thunar | 534 ms | 22.72 s | 346.0 MiB | 22.33 s |
| PCManFM | 415 ms | 35.76 s | 109.9 MiB | 24.77 s |
| Nautilus | 798 ms | 79.83 s | 335.1 MiB | 18.61 s |
The apps produced different amounts of thumbnail work, so settled time and CPU are not ranked. These are observations, not an equal-work speed comparison.
| File manager | First window | Settled | Window PSS | CPU | Thumbnails |
|---|---|---|---|---|---|
| Flea | 794 ms | 2.49 s | 102.9 MiB | 1.23 s | 36 |
| Dolphin | 682 ms | 14.28 s | 98.8 MiB | 68.18 s | 552 |
| Nautilus | 857 ms | 16.95 s | 172.4 MiB | 12.54 s | 541 |
| Nemo | 788 ms | 3.36 s | 53.7 MiB | 5.25 s | 60 |
| PCManFM | 389 ms | Timed out | 38.9 MiB | 90.19 s | 604 |
| Strata | 610 ms | 7.83 s | 87.2 MiB | 2.31 s | 205 |
| Thunar | 534 ms | 12.88 s | 41.1 MiB | 7.22 s | 221 |
“First window” records compositor registration. “Settled” means 500 ms without process-tree CPU activity; neither measures input readiness. PSS covers the window process, excluding helpers and GPU memory. Flea's separate backend used a median 5.3 MiB on the large listing and 2.1 MiB on media. CPU includes the process tree; shared libraries affect PSS. PCManFM did not settle in any media run. Results describe this machine and workload.
Method · Run details and TUI results · Scale CSV · Media CSV
Press ? for the full keymap, or , to change settings.
| Action | Keys |
|---|---|
| Move / parent / browse in | ↓ ↑ / ← / → |
| Open with the default app | Enter |
| Select the row / a run of rows / the whole folder | Space / hold Space and move / Ctrl+A |
| Quick Look / fill the window / leave it | → / Space / ← or Esc |
| Copy / cut / paste | Ctrl+C / Ctrl+X / Ctrl+V |
| Copy the file's path | Ctrl+B |
| Rename / trash / undo | F2 / Delete / Ctrl+Z |
| Reload this folder | F5 |
| New folder / new file | Ctrl+N / Ctrl+M |
| Show or hide hidden files | Ctrl+H |
| Search this folder / this folder and its subfolders | Ctrl+F / Ctrl+Shift+F (Tab on the line flips it) |
| Sort by name (A→Z) / size (biggest first) / modified (latest first); again to reverse | Ctrl+J / Ctrl+K / Ctrl+L |
| Show or hide the sidebar | Ctrl+G |
| Split the window in two, or join it | Ctrl+T (the new pane takes the keyboard) |
| Context menu | m, Menu or Shift+F10 |
| Settings / keymap sheet | , / ? |
| Move focus between the sidebar and the list | Tab |
| Open a sidebar place, and go into it | Enter / → |
That is the whole keyboard: the four arrows, the Ctrl chords and a handful of named keys. Nothing else is bound, and there is one preset rather than four. Everything the old bare letters reached — the views, tabs, sort, filter, the path bar, hidden files, the terminal, text size, select all — is on the context menu, the chrome and the settings panel instead. See the full key table for every binding and the pointer actions.
Requires Omarchy, Quickshell 0.3.1 or newer, and Rust. See installation details for runtime and optional dependencies.
cargo build --release
FLEA_UI="$PWD/ui" ./target/release/flea --guiPass a directory to open it, or --select <path> to reveal a file. The terminal interface
is not implemented yet.
./tests/run-all.shThe headless runner builds both profiles and reports suites that need a display, credentials or a package. The test suites cover file operations, previews, persistence and input; the protocol guide documents the backend.
If this saved you an afternoon, you can sponsor me on GitHub or buy me a coffee.
MIT. Flea also redistributes three third-party works, each under its own licence and
each recorded in vendor/: the filetype colour table (nvim-web-devicons, MIT,
by way of yazi), the palette catalog
(Strata, MIT) and the mark geometry
(lucide, ISC).





