File Minnow uses standard Linux interfaces only: inotify, XDG directories, GTK 3,
X11 or Wayland, and D-Bus desktop protocols. It has no hard dependency on a particular
distribution, init system or package manager. A .deb package is provided for
Debian-based systems; every other distribution can use the portable archive or build
from source.
You need a current stable Rust toolchain (rustup), a C compiler,
pkg-config and the GTK 3 development files:
| Distribution | Command |
|---|---|
| Debian, Ubuntu, Linux Mint, Pop!_OS | sudo apt install build-essential pkg-config libgtk-3-dev |
| Fedora | sudo dnf install gcc pkg-config gtk3-devel |
| Arch, Manjaro, EndeavourOS | sudo pacman -S --needed base-devel gtk3 |
| openSUSE | sudo zypper install gcc pkg-config gtk3-devel |
| Alpine (musl) | sudo apk add build-base pkgconf gtk+3.0-dev |
cargo build --release --locked
# Command-line tool and index daemon only, without GTK:
cargo build --release --locked --no-default-featuresThe binary is target/release/file-minnow.
install -Dm755 target/release/file-minnow ~/.local/bin/file-minnow
install -Dm644 packaging/file-minnow.desktop ~/.local/share/applications/org.fileminnow.FileMinnow.desktop
install -Dm644 packaging/file-minnow.svg ~/.local/share/icons/hicolor/scalable/apps/file-minnow.svg
for size in 16 22 24 32 48 64 128 256; do
install -Dm644 packaging/icons/file-minnow-$size.png ~/.local/share/icons/hicolor/${size}x${size}/apps/file-minnow.png
doneMake sure ~/.local/bin is on your PATH. Remove those files to uninstall. Your
settings (~/.config/file-minnow) and index (~/.cache/file-minnow) are kept until you
delete them.
cargo build --release --locked
python3 scripts/package.py --format deb
sudo apt install ./dist/file-minnow_*_amd64.debFor a package that also runs on older releases, build inside the provided Docker image (Ubuntu 22.04 baseline: glibc 2.35, GTK 3.24). The result runs on Linux Mint 21+, Ubuntu 22.04+, Debian 12+ and similar:
docker build --file packaging/Dockerfile --target export --output type=local,dest=dist/build .
python3 scripts/package.py --binary dist/build/file-minnowThe script reads the binary's architecture and required glibc version, and writes the
package, a portable archive and dist/manifest.json with checksums. Pass
--maintainer 'Name <email>' for a public release. Installing or removing the package
never starts the application, enables autostart, or deletes user settings and indexes.
Remove it with sudo apt remove file-minnow.
scripts/package.py --format tar produces file-minnow-<version>-linux-<arch>.tar.gz
with the same usr/ layout as the package. Run usr/bin/file-minnow directly, or copy
the files as in "Install for your user only". The runtime needs GTK 3 (normally
installed with any desktop), a user D-Bus session for the tray and portals, and
xdg-open.
A glibc build does not run on musl-based systems such as Alpine; build from source there.
snap/snapcraft.yaml builds a strictly confined snap (core22 base, GNOME extension).
.github/workflows/snap.yml builds it in a clean LXD container, installs it and runs a
search with it; a published GitHub release also uploads it to the Snap Store when the
repository has a SNAPCRAFT_STORE_CREDENTIALS secret. To build it yourself, run
snapcraft pack (it needs snapd and LXD or Multipass).
A confined snap works differently from the package:
- It can index your home folder, except hidden files and folders directly inside it
(
~/.config,~/.cache…). Drives under/media,/run/mediaand/mntneedsnap connect file-minnow:removable-media. Recognising network folders and drives being plugged in needssnap connect file-minnow:mount-observe. System folders such as/usror/etcbelong to the snap's own runtime, so indexing them is not useful. - Open, Open With, Open Containing Folder and Move to Trash go through the desktop
portal (
xdg-desktop-portal). Open in Terminal and the file manager's custom actions are not offered, because a snap cannot start the computer's other programs. Properties shows File Minnow's own summary. - Start at login works as usual; snapd starts the app with your session.
- Results in GNOME's overview and KRunner, and adding Search Here to file managers, are not available: a snap cannot install them.
- Thumbnails are made only for pictures, and kept in the snap's own cache.
- The index is kept in
~/snap/file-minnow/common/.cache/file-minnowand the settings in~/snap/file-minnow/current/.config/file-minnow, separate from a package install.
Choose one of these, or neither:
- Window in the tray at login. Tick Options → Interface → Start File Minnow at login.
This writes
~/.config/autostart/file-minnow.desktop, which startsfile-minnow gui --hidden; without a working tray the window stays visible. Untick it to remove the entry. - Background index service. The package installs a systemd user unit but does not
enable it. Enable it with
systemctl --user enable --now file-minnow.service; the window attaches to it when opened. Without systemd, startfile-minnow daemonwith your session's autostart mechanism.
Enabling both is only useful if you want the index to keep running after the window quits.
The package installs a Search Here with File Minnow entry for folders in Nemo
(/usr/share/nemo/actions) and Dolphin (/usr/share/kio/servicemenus). GNOME Files
(Nautilus), Caja and Thunar keep such entries per user: add it for your account in
Options → Interface, which also covers Nemo and Dolphin for a portable or per-user
install. It writes a script to ~/.local/share/nautilus/scripts or
~/.config/caja/scripts, a custom action to ~/.config/Thunar/uca.xml (keeping your
other actions), or an action or service menu under ~/.local/share, and removes it again
from the same place.
The package installs a GNOME Shell search provider
(/usr/share/gnome-shell/search-providers/org.fileminnow.FileMinnow.search-provider.ini),
a KRunner plugin (/usr/share/krunner/dbusplugins/file-minnow.desktop) and the D-Bus
service that starts file-minnow search-provider when the desktop searches
(/usr/share/dbus-1/services/org.fileminnow.FileMinnow.SearchProvider.service). Nothing
runs until you search, and the provider exits a minute after the last search. Turn the
results off in GNOME Settings → Search or in KDE's KRunner settings.
GNOME Shell reads search providers only from the system data folders, so a per-user
install cannot offer them there. KRunner and D-Bus also read per-user folders: copy
packaging/file-minnow-krunner.desktop to ~/.local/share/krunner/dbusplugins/ and
packaging/org.fileminnow.FileMinnow.SearchProvider.service to
~/.local/share/dbus-1/services/, changing its Exec= line to where file-minnow is.
- Global shortcut. On X11 File Minnow registers the shortcut directly. On Wayland it uses
the GlobalShortcuts portal where the compositor provides one; the desktop may ask
you to confirm. You can also bind
file-minnow toggleto a key in your desktop's keyboard settings. - Tray icon. Uses StatusNotifierItem, as on Cinnamon, KDE Plasma, Xfce (with its status notifier plugin), MATE and Budgie. GNOME needs the AppIndicator extension. Without a tray, the window stays available and closing it quits.
- Wayland window behaviour. Showing and hiding the window from the shortcut is fully verified on X11. On Wayland the compositor decides about focus, and behaviour can vary.