Arbor is an interactive, three-pane terminal-based file manager built using Rust. It leverages ratatui for the Terminal User Interface (TUI) and crossterm for event handling. It allows users to navigate directories, preview files, manage files and folders (create, rename, delete), and perform copy/paste operations.
- 📊 Three-Pane Layout: Displays Parent Directory, Current Directory, and a Preview pane (showing subdirectory contents or file previews).
- 📂 Navigate Directories: Seamlessly move between directories.
- 📄 File Preview: View contents of text files directly in the terminal. Detects binary files.(Lots of file format has to be added for better preview underdevelopment)
- 🔼🔽 Smooth Navigation: Use familiar keybindings (
j,k,h,l) to move through items and hierarchies. - 📝 File Management:
- Delete: Remove files or directories (with confirmation).
- Rename: Rename files or directories via an interactive prompt.
- Create: Create new files or directories (supports nested creation like
mkdir -p) via an interactive prompt.
- ✨ Selection Mode: Enter a visual selection mode (
v) to select multiple items for batch operations (like mass deletion). - 📋 Move/Copy & Paste: Move/Copy multiple files/directories and paste them into the current directory (recursive directory copy).
- 🚀 Interactive Popups: Handles confirmations, renaming, and creation through clean TUI popups.
Arbor operates primarily in Normal Mode. Some actions involve temporary popups or switching to Selection Mode.
| Key | Action |
|---|---|
j / ↓ |
Move focus down in the current directory list |
k / ↑ |
Move focus up in the current directory list |
h / ← |
Go to the parent directory |
l / → |
Enter the selected directory / Preview selected file |
d |
Initiate delete for the selected item (opens confirmation popup) |
r |
Initiate rename for the selected item (opens rename prompt) |
a |
Initiate create file/directory (opens creation prompt) |
y |
Copy (Yank) the selected file or directory |
x |
Move the selected file or directory |
p |
Paste the copied/cut item(s) into the current directory |
v |
Enter Selection Mode (visually select multiple items) |
q |
Quit the application |
| Key | Action |
|---|---|
j / ↓ |
Move down and toggle selection status of the item |
k / ↑ |
Move up and toggle selection status of the item |
d |
Initiate delete for all selected items (opens confirmation popup) |
Esc |
Exit Selection Mode and return to Normal Mode (clears selection) |
q |
Quit the application |
| Key | Action |
|---|---|
Enter |
Confirm action / Submit input |
Esc |
Cancel the action and close the popup |
y |
Confirm action (in Delete confirmation popup) |
n |
Deny action (in Delete confirmation popup) |
Backspace |
Delete the last character in the input field (Rename/Create) |
[Any Char] |
Type character into the input field (Rename/Create) |
This project is currently in its very early stages of development. Expect frequent and potentially breaking changes, as many important features are still under construction and stability improvements are ongoing.
Ensure you have Rust and Cargo installed. If not, install them using rustup:
curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs) | sh
# Follow the on-screen instructionsgit clone https://github.com/vishalkrkamat/Arbor.git
cd Arbor
cargo build --releasecargo run