A dual-pane TUI file manager built in Rust. Vim-style navigation, built-in text editor with syntax highlighting, git integration, SSH remote browsing, system monitoring, and smart terminal tab spawning — all in one terminal interface.
- Dual-Pane File Manager — Navigate two directories side-by-side with drag & drop, batch operations, hidden file toggle, column sorting
- Marquee Selection — Drag-select multiple files at once; Ctrl+drag toggles selection; Escape cancels. Drag from Name column for marquee, from other columns for file drag.
- Cross-Pane Drag & Drop — Drag files between panes, including drop on empty space to move/copy to the target directory
- Undo Close Tab — Ctrl+Shift+T reopens recently closed tabs (up to 10)
- Built-in Text Editor — Syntax highlighting via syntect, unlimited undo/redo, multi-selection, live search, right-click context menu, line movement (Alt+Up/Down), duplicate (Ctrl+D), kill line (Ctrl+K/U)
- Smart Terminal Spawning — Commands open in a new tab in your current terminal window (Konsole via D-Bus, Kitty, Wezterm) instead of a new window
- Run Files — Ctrl+R runs scripts (shebang), Cargo projects, and extension-mapped executables
- Git Integration — Commit history viewer, staged/unstaged diffs, branch info, ahead/behind tracking
- Remote SSH — Browse remote filesystems via SSH, SFTP-style file operations, auto-import from
~/.ssh/config - System Monitor — CPU/memory/disk/network stats with sparklines, process list with kill support
- Sidebar — Folder tree, Favorites, Recent folders, Storage devices, SSH remotes. Toggle sections in Settings.
- 14 Theme Presets — Legacy Red (default), Cyberpunk, Ocean Deep, Solarized, Gruvbox, Dracula, Tokyo Night, Nord, Catppuccin, Rose Pine, One Dark, Monokai, Paper, and Terminal. All WCAG-compliant.
- Path Input — Click the breadcrumb bar to edit the path directly
- Keyboard-first — Vim-style navigation, command palette (
:), context menus
| Key | Files View | Editor View |
|---|---|---|
Space |
Open file in editor (text) or do nothing (binary/image) | — |
Enter |
Enter directory / open file with xdg-open |
— |
Ctrl+R |
— | Run current file |
F2 |
Rename | Find & Replace |
Ctrl+D |
System monitor | Duplicate current line |
Ctrl+E |
— | Switch to editor |
Shortcuts are context-sensitive. The same key does different things depending on which view is active.
| Key | Action |
|---|---|
h/j/k/l or arrows |
Navigate |
Enter |
Open file with xdg-open / enter directory |
Space |
Open text file in editor (binary/image files: no-op) |
Backspace |
Go to parent directory |
Tab |
Switch panes / focus sidebar |
Ctrl+H |
Toggle hidden files |
Ctrl+Shift+T |
Undo close tab |
: |
Command palette |
| Key | Action |
|---|---|
Tab |
Focus sidebar / return to file pane |
Up/Down |
Navigate sidebar items |
Enter |
Navigate to folder (expand if collapsed) |
Space |
Toggle expand/collapse folder |
Shift+C |
Collapse all folders |
Esc |
Exit sidebar focus |
| Key | Action |
|---|---|
Ctrl+E |
Editor view |
Ctrl+R |
Run current file |
F2 |
Find & Replace |
Alt+Up / Alt+Down |
Move current line up/down |
Ctrl+D |
Duplicate current line |
Ctrl+K |
Kill to end of line |
Ctrl+U |
Kill to start of line |
Ctrl+A |
Select all |
Ctrl+Home |
Jump to document start |
Ctrl+End |
Jump to document end |
Right-click |
Open context menu |
| Key | Action |
|---|---|
Ctrl+G |
Git history view |
Ctrl+L |
Edit current path |
q |
Quit |
cargo install tiles-tui-file-managerThe binary is installed as tiles:
tilesgit clone https://github.com/DraconDev/tiles-tui-file-manager
cd tiles-tui-file-manager
cargo build --release
./target/release/tilesOr use the build script (auto-detects install path):
./scripts/build.shDownload from GitHub Releases.
Tiles detects your terminal and spawns commands as new tabs in the current window when possible:
| Terminal | Tab Spawning Method |
|---|---|
| Konsole | D-Bus org.kde.KDBusService.CommandLine (falls back to --new-tab CLI flag) |
| Kitty | kitty @ launch --type=tab |
| Wezterm | wezterm cli spawn --new-window=false |
| Others | Per-terminal CLI flags (--new-tab, --tab, etc.) |
Konsole note:
qdbuscrashes on some NixOS/Konsole versions (SIGSEGV exit 139). Tiles usesdbus-sendinstead, which works reliably. The blockedrunCommandD-Bus API is bypassed viaKDBusService.CommandLine.
For drag & drop support (dragging files from Tiles to other apps):
Tiles auto-detects these tools and adds a "Drag" option to the context menu.
Settings are stored in ~/.config/tiles/settings.toml. Toggle sidebar sections, theme, and other preferences from within the app via the Settings modal.
This project is dual-licensed:
- AGPL-3.0-only — See LICENSE for the full text. This is the default license for open source use.
- Commercial License — For organizations that prefer not to comply with AGPLv3's source disclosure requirements. See COMMERCIAL-LICENSE.md for details.
By contributing to this project, you agree to the terms in CLA.md.
