Skip to content
raythurman2386Public

About

A keyboard-first file manager built with GPUI Kit

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Pifile

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.

Features

  • 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: Enter descends into directories in-app and hands everything else to gio open (falling back to xdg-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.toml or theme.conf), re-tinting on theme changes.

It is a directory browser. It does not special-case piwrite, picalc, raven, or hearth.

Install

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 | bash

Or build and install from source:

cargo build --release
./scripts/install.sh

Uninstall 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.

Keyboard

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

State and theming

First existing file wins, in this order:

  1. $PIFILE_THEME_DIR (colors.toml or theme.conf)
  2. ~/.local/state/omarchy/current/theme
  3. ~/.config/omarchy/current/theme
  4. ~/.local/state/pimarchy/current/theme
  5. ~/.config/pimarchy/current/theme
  6. built-in fallback (#101010 background / #eeeeee foreground / #5584aa accent)

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.

Development

cargo fmt --check          # formatting
cargo clippy --all-targets -- -D warnings
cargo test                 # 6 tests
cargo run --release        # browse
cargo run --release -- ~/Projects

The 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.

License

MIT — see LICENSE.

About

A keyboard-first file manager built with GPUI Kit

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages