Open-source project
thisisgm/flea avatar
thisisgm/flea

Flea: a keyboard-first file manager for Omarchy

A fast, keyboard-first file manager for Omarchy: Quickshell front end, Rust backend.

619 stars67 forksShellMIT

At a glance

What is it?
Flea pairs a Rust backend with a Quickshell front end and ships through the Omarchy package manager. It is fast on huge directories, but only if you already run Omarchy and Quickshell.
Who is it for?
Adopt Flea if you already run Omarchy with Quickshell 0.3.1 or newer and you want a file manager driven from the keyboard, with tabs, an undo journal and SMB, SFTP, WebDAV, NFS, Dropbox and Taildrop in the same window. Do not adopt it on another distribution, and do not choose it for scripting: the README states the terminal interface is not implemented yet.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Flea solves, and who it is aimed at

Most Linux file managers are pointer-first programs with a keyboard layer bolted on. Flea takes the opposite position: the README describes it as keyboard-first, and the default keymap is built around movement keys rather than menus. The intended user is someone on Omarchy who wants to browse a large directory, preview a file, rename it, and get back to the terminal without reaching for the mouse.

The scope is deliberately narrow. Flea is built for Omarchy, the Arch-based setup linked from the project homepage, and it is distributed through that distribution's package manager rather than through a general repository. If you are not on Omarchy, the README does not describe a supported path to install it. That is a real constraint, not a packaging oversight.

The feature list is broader than a minimal browser: copy, move, rename, trash, compress and extract with an undo journal; network shares over SMB, SFTP, FTPS, WebDAV, NFS, Dropbox and Taildrop; USB drives, phones and cameras over MTP, PTP and AFC; and desktop integration as the default file manager and portal file chooser.

Rust backend, Quickshell front end, and how rows load

The repository layout shows the split plainly. src/ holds the Rust code, ui/ holds the QML interface, and Cargo.toml declares a package with no dependencies at all. The README explains why the two parts exist separately: the window loads rows and requests thumbnails as you need them, which is what keeps a directory of 100,000 entries from blocking the interface.

The UI is not compiled into the binary. The build instructions tell you to point an environment variable at the QML directory before launching, which means the front end is loaded from disk at runtime. That is convenient during development and it also means a broken QML file shows up as a runtime failure rather than a compile error.

Quickshell is the dependency that makes this possible, and the README sets a floor of version 0.3.1 or newer. Because Quickshell is a Wayland shell toolkit, Flea inherits that target: the topics list Wayland and Hyprland, and the compositor registration time in the benchmark table is a Wayland concept. On X11 there is no stated story.

The benchmark table in the README is careful about what it does and does not measure. First window records compositor registration, and settled means 500 ms without process-tree CPU activity. The README states outright that neither measures input readiness, and that the 2,000-file run is not an equal-work comparison because the apps produced different amounts of thumbnail work. That honesty is worth noting, because it also means the numbers cannot be read as a general speed claim.

Installing Flea on Omarchy and opening a directory

Installation goes through the Omarchy package manager. The README gives a single command, and the package is MIT licensed, so nothing in the install path involves a licence prompt.

bash
omarchy pkg add flea

After that, the README offers two levels of desktop integration. The full option makes Flea the default file manager, the file chooser, and the application opened by Super+Shift+F. The xdg-desktop-portal service has to be restarted for the portal change to take effect.

bash
flea --default
systemctl --user restart xdg-desktop-portal

If you only want Flea in Open and Save dialogs, the README documents a narrower flag. This leaves your existing default file manager in place, which is the sensible choice if you are evaluating the project rather than switching to it.

bash
flea --picker
systemctl --user restart xdg-desktop-portal

For a first real use, the README shows how to open a specific location or reveal a single file. Passing a directory opens it, and --select takes a path and reveals that file inside its parent. Pressing Space in any view opens Quick Look, which handles images, PDFs, text, media and archive contents according to the README.

bash
flea --select <path>

Updates come through the same channel, and there is a rolling development package for people who want unreleased code.

bash
omarchy update
omarchy pkg aur add flea-git

The terminal interface is not implemented, and other boundaries

The README says it directly: the terminal interface is not implemented yet. The repository has a shelf/ directory and the benchmark documentation mentions TUI results, so there is groundwork, but the shipped product is the GUI. Anyone who wants to pipe a directory listing into another tool, or drive a file manager from a script, should look elsewhere.

The platform constraint is the second boundary. Flea is built for Omarchy and depends on Quickshell 0.3.1 or newer. There is no documented install path for Fedora, Debian or a plain Arch install, and the package manager commands in the README are Omarchy-specific. On a machine without Omarchy, the build section is the only route, and it assumes the runtime and optional dependencies listed in docs/install.md are already present.

Removal has its own caveat. The README warns that if you previously pinned another directory handler, you have to restore that handler explicitly after running the off flag. Desktop integration is not fully reversible by the package manager alone.

The device section carries a side effect worth reading twice. An iPhone lists once it has been unlocked and trusted on the machine, because AFC needs the pairing record. Pairing also puts the phone on its tethering USB configuration, so iOS shows Personal Hotspot as active while it is plugged in. Flea does not use that connection. If the machine should never route through the phone, the README says to tell NetworkManager with a conf.d drop-in carrying unmanaged-devices=driver:ipheth, and notes that this is the user's call rather than the package's.

How Flea differs from Dolphin, Nemo and Thunar

The obvious alternatives are the established desktop file managers, and the README's own benchmark table names several of them: Dolphin, Nemo, Thunar, PCManFM and Nautilus, plus Strata. The difference in approach is where the work happens. Those applications are general-purpose, tied to a desktop environment's toolkit, and designed to run on many distributions. Flea is tied to one distribution and one shell toolkit, and spends that constraint on rendering strategy: lazy row loading and on-demand thumbnails, with a separate backend process.

The benchmark numbers reflect that trade. On the 100,000-file run, the README reports Flea settling in 1.21 s with 88.0 MiB of window PSS and 0.89 s of process-tree CPU, against 5.43 s and 211.2 MiB for Dolphin and 22.23 s and 459.6 MiB for Nemo. PCManFM mapped its window first at 415 ms, so Flea does not win every column. The README also notes that Flea's separate backend used a median 5.3 MiB on the large listing, memory that the window PSS figure excludes.

The 2,000-file media run is where the comparison breaks down, and the README says so. Flea produced 36 thumbnails; Dolphin produced 552 and Nautilus 541. Settled time and CPU are therefore not ranked in that table. If your workload is a folder of photos rather than a folder of source files, the published numbers tell you much less.

A more architectural alternative is a terminal file manager paired with a previewer. That gives up the portal integration, the device mounting and the grid view, and it keeps the scripting story that Flea lacks. The two are not substitutes for the same job.

Maintenance, upgrades and the MIT licence

The repository is not archived, and the last push was on 2026-09-16. Three releases landed in the six days before that: 0.2.0 on 2026-09-10, 0.2.1 on 2026-09-11 and 0.3.0 on 2026-09-16. Cargo.toml carries version 0.3.0, matching the newest tag, so the manifest and the release are in step. The version number is still in the 0.x range, which usually signals that the maintainer reserves the right to change behaviour between releases.

Upgrade cost is low by design. The README routes updates through omarchy update, so the package manager handles the binary and the QML together. The rolling flea-git package exists for people who want unreleased code, and it carries the usual cost of tracking a branch: you get changes before they are tagged. Builds require Rust and set rust-version to 1.77 in Cargo.toml, with a comment explaining that src/vulkan.rs uses c"..." literals stabilised in that release. The release profile enables link-time optimisation and strips symbols, so a locally built binary is not the same artefact as the packaged one.

Licensing is MIT, stated in the repository and in the LICENSE file at the top level. MIT is permissive: it allows reuse and redistribution provided the copyright notice and permission notice are kept. That is a summary of what the licence is, not advice about your situation. If you plan to redistribute Flea inside a product, read LICENSE and any notices in packaging/ yourself.

Editorial conclusion

Adopt Flea if you already run Omarchy with Quickshell 0.3.1 or newer and you want a file manager driven from the keyboard, with tabs, an undo journal and SMB, SFTP, WebDAV, NFS, Dropbox and Taildrop in the same window. Do not adopt it on another distribution, and do not choose it for scripting: the README states the terminal interface is not implemented yet. Before committing, check the benchmark method in docs/benchmarks.md, since the published comparison was run on one machine with cold caches, and confirm your own Quickshell version.

Frequently asked questions

How do I install Flea?

The README gives one command for Omarchy: omarchy pkg add flea. A rolling development package is available as omarchy pkg aur add flea-git.

Does Flea have a terminal interface?

No. The README states that the terminal interface is not implemented yet, although the repository contains a shelf/ directory and the benchmark documentation mentions TUI results.

How do I make Flea my default file manager?

Run flea --default and then systemctl --user restart xdg-desktop-portal. To use Flea only for portal Open and Save dialogs, run flea --picker and restart the same service.

What dependencies does Flea need?

The README requires Omarchy, Quickshell 0.3.1 or newer, and Rust for building. Cargo.toml sets rust-version to 1.77, and docs/install.md lists runtime and optional dependencies.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. thisisgm/flea on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/thisisgm-flea.svg)](https://hysenlabs.com/projects/thisisgm-flea)