runa - rn
A fast, lightweight, and extremely customizable terminal file manager carved in Rust.
Full Configuration Guide • Installation Guide • Quick Start • General Settings • Theme Configuration • Key Bindings
- Rich File Actions: Move, filter, copy, rename, tabs, and more, all with the keyboard.
- Extremely Customizable: Tweak keybindings, colors, and layout via TOML.
- Blazing Fast: Instant navigation, even in huge directory trees.
- Minimal Dependencies: Only the essential crates; advanced features are opt-in.
- Cross-Platform: Works on Linux, macOS, and Windows.
- Keyboard-Driven: Every action accessible by keybindings. No mouse needed.
- Integrated Find (
fdrequired): Blazingly fast file search.
- Multi-threaded engine: Spawns 9 lightweight dedicated worker threads (with
crossbeam_channel) for I/O, preview, find, and file operations, so UI is never blocked. - Essential-only Rust crates: No external TUI frameworks or bloat.
- Direct terminal rendering: Uses ratatui & crossterm.
- Optional blazing-fast find: Integrates with fd for recursive fuzzy search.
- Blazingly lightweight: The
rnbinary is compact (typically 1.6-2 MB, depending on operating system and architecture). - Minimal memory footprint: Optimized for low RAM usage.
runa - rn is a minimalist terminal file manager focused on speed and simplicity.
It allows you to navigate directories, view file listings, and perform typical file browser actions.
runa is very customizable, checkout the Configuration docs for all the available options.
[!IMPORTANT] runa is a work in progress. It is being actively developed and features may change over time.
Changelog
For a detailed list of changes and release notes, see CHANGELOG.md.
Installation
Cargo:
Arch Linux (AUR)
You can install runa from the AUR using an AUR helper like paru or yay:
# or for binaries through the AUR
Homebrew
You can install runa via homebrew.
Scoop (Windows)
You can install runa via scoop.
Pre-compiled Binaries
If you'd like to download Pre-compiled binaries instead of installing runa as a crate in cargo or via the AUR, you can grab the latest binaries for Linux, Windows and macOS from the Release page.
After downloading, add the rn (Linux/macOS) or rn.exe (Windows) binary to your system PATH to use runa from your terminal.
[!TIP] Checksum & Attestation Check:
All releases starting with v0.5.11 are immutable.
Each release includes aRelease Attestationjson file that verifies that the release is immutable.You can verify the integrity of the release archives using the attestation verification with the GitHub CLI:
You can also verify the integrity of the release archives using the
SHA256SUMS.txtfile in the Release page.Unix
This checks all the checksums of the SHA256SUMS.txt. To check a specific release archive:
|Windows
Get-FileHash runa-windows-x86_64.zip -Algorithm SHA256Compare the output with the corresponding entry in
SHA256SUMS.txt.
Build from source
Clone the repo and build with Cargo:
Usage
After installation, start runa with: rn
[!TIP] Icons (for files, folders, etc.) are disabled by default, but can be enabled in your
runa.toml.
To display them correctly, use a Nerd Font or a patched font in your terminal.
Without a Nerd Font, icons may appear incorrectly and the UI may not render as intended.
Optional Enhancements
runa is designed to be lightweight and standalone. However, some advanced features leverage specialized external tools:
-
Fuzzy Search: To enable fast, recursive fuzzy finding, install fd.
- If
fdis detected in yourPATH, the search feature will be enabled automatically. - Without it,
runaremains a fully functional file manager but will notify you if you attempt a recursive search. - Also enables
move_fileauto-complete iffdis enabled.
- If
-
Preview Syntax coloring: To enable syntax coloring in the preview pane, install bat
- If
batis detected and installed, you can switch method in the runa.toml tomethod = "bat". - Without it,
runauses theinternalpreview method, which is a plain preview method useful for extra speed without syntax highlighting.
- If
Configuration
By default, runa checks for configuration in these locations, in order:
-
If the environment variable
RUNA_CONFIGis set, its value is used as the config path. -
If
XDG_CONFIG_HOMEis set, runa looks for: -
Otherwise, the fallback is:
(On Windows, this means inside the user's config folder.)
Overriding the config path
You can explicitly set a custom config location by setting the environment variable RUNA_CONFIG.
Example:
You can generate a default config using the --init or --init-full flag:
# For the whole configuration options runa.toml
# For help with all the configuration options.
This will generate a config in the default config path.
Roadmap
runa is in active development, with future releases focusing on expanding functionality while keeping it fast and lightweight.
Planned Features
- Image Previews: Support for Sixel/Kitty graphics protocols
Completed Features
- Tabs: Spawn and manage multiple tabs of runa
- Syntax Highlighting:
batintegration for the preview pane - Search & Discovery: Integrated fuzzy finding (
fdsupport) - File Operations: Copy, move, delete, and rename from within the UI
- Content Search: Text search and filtering
- Performance: Reactive rendering
- UI Customization: Pane-specific styling and Hex color support
- Navigation Context: Persistent Parent (Origin) and Preview panes
See CHANGELOG.md for version details and release history.
Support & Contribute
If you enjoy using runa, you can help the project grow:
- ⭐ Star the Repo: It helps more people discover runa :)
- 🐛 Report Bugs: Open an issue if something doesn't work as expected.
- 💡 Feature Requests: Suggest new ideas in the Discussions tab.
- 🦀 Contribute: Pull requests are always welcome! Checkout the CONTRIBUTING guide for more info.
Special Thanks
Many thanks to @lmartinez-mirror, the maintainer of runa-bin, for maintaining the binary AUR package.
Many thanks to @sharkdp for fd and bat, excellent CLI tools runa integrates with for fuzzy finding and syntax preview.
Credits & Ecosystem
runa stands on the shoulders of these incredible Rust crates:
- Terminal UI:
- Configuration:
- Concurrency:
- Crossbeam-channel: Multi-threaded communication (worker threads).
- Optional Integrations:
License
This project is dual licensed under the MIT OR Apache-2.0 license.
See the LICENSE-MIT and LICENSE-APACHE files for details.