A keyboard-first file manager for the pi suite,
built with GPUI Kit — a small,
native, theme-following file browser written for Raspberry Pi 5-class hardware
(and happy on any Linux desktop). Registered as the system handler for
inode/directory, so it can be the desktop's default file manager.
- Directory browsing with a places sidebar (Home, Desktop, Documents, Downloads, Music, Pictures, Videos, Root), file sizes and modification times in the list, hidden-file toggle, and refresh.
- File operations: rename, new folder, copy/cut/paste, move to trash,
and permanent delete. Cross-device moves fall back to copy; pastes land on
name (1)when the name is taken, and rename refuses to overwrite. - Open with the system:
Enterdescends into directories in-app and hands everything else togio open(falling back toxdg-open) on a background thread, so a slow launcher never freezes the window. - Aesthetic: keyboard-first, a status bar showing the current directory
and item count, and theming from the desktop palette (pimarchy/Omarchy
colors.tomlortheme.conf), re-tinting on theme changes.
It is a directory browser. It does not special-case piwrite, picalc, raven, or hearth.
User-local install from a tagged release (no root, Ed25519-verified, fail-closed):
curl -fsSL https://raw.githubusercontent.com/raythurman2386/pifile/main/scripts/netinstall.sh | bashOr build and install from source:
cargo build --release
./scripts/install.shUninstall with ./scripts/uninstall.sh. The netinstaller accepts a --prefix
directory, an optional version argument, and --force; the source install
honors PREFIX=DIR.
Tagged v* releases also build x86_64 + aarch64 tarballs on GitHub Actions
(glibc 2.39+ — e.g. Raspberry Pi OS / Debian 13). Unpack the one for your
architecture and run ./install.sh inside.
Releases are authenticated with Ed25519 signatures over checksums.txt; the
public key is committed as pifile-signing-key.pub and pinned in the
installer, which refuses anything it cannot verify.
| Keys | Action |
|---|---|
Backspace / Alt+Up |
Parent directory |
Enter |
Open (directory in-app; files via the system handler) |
Ctrl+Enter |
Open with the system handler |
Ctrl+Shift+N |
New folder · F2 rename |
Delete |
Move to trash · Shift+Delete permanent delete |
Ctrl+C / Ctrl+X / Ctrl+V |
Copy · cut · paste |
Ctrl+H |
Toggle hidden files |
F5 |
Refresh · Alt+Home go home |
Enter / Esc |
Confirm · cancel a prompt |
Ctrl+Q |
Quit |
First existing file wins, in this order:
$PIFILE_THEME_DIR(colors.tomlortheme.conf)~/.local/state/omarchy/current/theme~/.config/omarchy/current/theme~/.local/state/pimarchy/current/theme~/.config/pimarchy/current/theme- built-in fallback (
#101010background /#eeeeeeforeground /#5584aaaccent)
The whole window follows one tonal family: the file area paints with
background/foreground, panels (sidebar, toolbar, status bar) with
lighter_background, and secondary text with muted. Themes without those
keys get them derived from background/foreground. Selected rows and the
active place use a translucent accent wash, and selection (often a light
text-highlight color) is never used as a panel background.
cargo fmt --check # formatting
cargo clippy --all-targets -- -D warnings
cargo test # 6 tests
cargo run --release # browse
cargo run --release -- ~/ProjectsThe filesystem core (src/fs/) is pure Rust with inline unit tests; the
app layer only renders. CI runs fmt, clippy, and tests on every push; tagged
v* releases build x86_64 + aarch64 tarballs (glibc 2.39+) with an install
smoke test that runs pifile --version.
MIT — see LICENSE.