A terminal file browser with Miller columns, written in Rust.
Pre-built binaries support Windows and Linux. macOS (tested in CI on Apple Silicon) is supported when built from source.
Inspired by yazi, broot, and ranger.
- Miller columns — three-pane layout (parent / current / preview);
[and]toggle the left and right panes (session only; unchanged in saved config) - Column headers — labeled header row with separator line in all panes; adapts to visible columns and drive view
- Detail columns — file size and modification date with responsive column tiers; async directory sizes (gated per drive type)
- Drive navigation — browse drives on Windows, mounted volumes on macOS and mounted file systems on Linux with file system, free/total space, and percent-full bar columns; SSD/HDD detection
- File-type icons — Nerd Fonts v3 glyphs per extension, or emoji symbols per file category, or
ls -F-style ASCII markers (directories, links, executables) for fonts without Nerd Fonts;icons = nonehides them - Sort order — by name, date, size, or extension (
sto cycle,Sto reverse) - Filter —
/to narrow entries in real-time - Go-to-path —
Ctrl+Gwith Tab autocomplete - File finder —
Ctrl+Frecursive breadth-first search with fuzzy matching, exact-substring queries via a leading', and highlighted results. It also accepts fzf-style syntax: space-separated terms (all must match),^prefix,suffix$and!exclude, with smart case - Bookmarks —
bto open,Bto toggle; persists in MRU order - Tabs —
t/Ctrl+Topens a tab,{/}or1–9switch,wcloses; tab bar with click-to-switch once a second tab is open - Hidden files —
.to toggle; separate system files toggle on Windows
- File preview — text (with syntax highlighting), hex, git diff, archive contents (zip, tar, gzip), images (Sixel, kitty or iTerm2), PDF (via
pdftopng), MSI file listing, and Markdown (built-in renderer with YAML frontmatter support); a CSV/TSV table view (aligned columns, header row, right-aligned numbers;;/|separators detected); multiple modes per file switchable viap; CSS/SCSS/Sass previews show inline color swatches for hex literals - Expanded preview — Right/Enter expands to full width; scrollable
- Image preview — Sixel graphics (Windows Terminal 1.22+, WezTerm, etc.); also supports the kitty graphics protocol (kitty, Ghostty) and iTerm2 inline images (iTerm2, WezTerm), chosen with
image_protocol = auto|kitty|iterm|sixel; inside tmux withset -g allow-passthrough on - File metadata — structured metadata above preview and in properties overlay (
i); format-specific providers for images (EXIF), executables (PE/.NET), Office docs, NuGet packages, archives, PDF, media files, MSI installers, and Windows shortcuts (.lnk) - File properties —
ifor scrollable overlay with timestamps, attributes, git status, and extracted metadata
- Git status — color-coded files/dirs (modified, staged, untracked, conflict); status icons; branch name with ahead/behind counts in status bar
- Git actions — action palette (
Ctrl+P) offers diff preview, stage/unstage, commit, push, pull, fetch
- File actions — open, rename, delete (with confirmation), copy/cut/paste through the system clipboard (Windows, macOS, and Linux via wl-copy/xclip); multi-select supported
- Copy path —
yfor absolute path,Yfor git-relative path - Symlinks — visual distinction with target display; create from the action palette
- Junction points — detected and distinguished from symlinks with dedicated icon and "Junction" label (Windows)
- App execution aliases — MSIX/UWP packaged app aliases detected with resolved target path (Windows)
- Cloud files — auto-detected OneDrive/Dropbox placeholders shown with cloud icon (Windows)
- Mouse support — click, scroll, right-click context menu in all panes
- Action palette —
Ctrl+P/Ctrl+Ksearchable command list with submenus - In-app config —
,opens hierarchical settings dialog; the Icons row previews the icon set live as you cycle it - Status bar — path, git branch, item count, file type, encoding, line endings, size, sort mode
- Shell integration —
Topens terminal;wdwrapper for cd-on-exit (bash, zsh, fish, PowerShell) - Auto-refresh — watches the current directory for changes, with a 300ms debounce
- Terminal title — shows current directory; clears on exit
- Minimal rendering — raw VT/ANSI, double-buffered with dirty-row tracking
- A terminal with VT/ANSI support (Windows Terminal, ConPTY-based terminals, or Unix/WSL terminals)
scoop bucket add lucaspimentel https://github.com/lucaspimentel/scoop-bucket
scoop install wade./install-remote.ps1./install-remote.shOr as a one-liner:
irm https://raw.githubusercontent.com/lucaspimentel/wade/main/install-remote.ps1 | iexcurl -fsSL https://raw.githubusercontent.com/lucaspimentel/wade/main/install-remote.sh | shRelease binaries are published for Windows x64 and Linux x64; on other platforms, build from source.
Requires the Rust toolchain.
./install-local.ps1./install-local.shBoth scripts install to ~/.local/bin/wade. Ensure that directory is in your PATH.
wade # open in current directory
wade C:\Users # open in a specific directory~/.config/wade/config.toml
icons = nerd # nerd, emoji, ascii, none (replaces the old show_icons_enabled)
show_hidden_files = false
show_system_files = false # Windows only; requires show_hidden_files
sort_mode = name # name, modified, size, extension (default for directories without a saved sort)
sort_ascending = true
confirm_delete_enabled = true
parent_pane_enabled = true
preview_pane_enabled = true
size_column_enabled = true
date_column_enabled = true
column_headers_enabled = true
copy_symlinks_as_links_enabled = true
terminal_title_enabled = true
git_status_enabled = true
file_metadata_enabled = true
archive_metadata_enabled = true
dir_size_ssd_enabled = true
dir_size_hdd_enabled = false
dir_size_network_enabled = false
file_previews_enabled = true
image_previews_enabled = true
image_protocol = auto # auto, kitty, iterm, sixel
zip_preview_enabled = true
pdf_preview_enabled = true
pdf_metadata_enabled = true
markdown_preview_enabled = true
csv_preview_enabled = true # CSV/TSV table preview
ffprobe_enabled = true
mediainfo_enabled = true
preview_max_lines = 10000 # full-screen preview line limit (min 100)
preview_max_bytes = 4194304 # full-screen preview byte limit (min 65536)wade --version # print version and exit
wade --show-config # print current config as JSON and exit
wade --config-file=/path/to/config # use a custom config file
wade --help # print usage info and exit
wade -h # same as --helpWade can change your shell's working directory when you quit with q. Source the appropriate wrapper function in your shell config:
Bash / Zsh — add to ~/.bashrc or ~/.zshrc:
source /path/to/wade/shell/wd.shFish — copy to ~/.config/fish/functions/ or source in config.fish:
source /path/to/wade/shell/wd.fishPowerShell — add to your $PROFILE:
. /path/to/wade/shell/wd.ps1Then use wd instead of wade to browse. Press q to quit and cd to the last directory, or Q to quit without changing directory.
| Key | Action |
|---|---|
| Up / k | Move selection up |
| Down / j | Move selection down |
| Right / l / Enter | Open directory / expand preview |
| Left / h / Backspace | Go back / collapse preview |
| Page Up / Page Down | Scroll by page |
| Home / End | Jump to first / last item |
| Left Click | Select / Open |
| Right Click | Context menu |
| Scroll | Navigate up/down |
| Ctrl+R / Ctrl+L / F5 | Refresh |
| T | Open terminal here |
| . | Toggle hidden files |
| [ | Toggle left (parent) pane |
| ] | Toggle right (preview) pane |
| s | Cycle sort (name / time / size / ext) |
| S | Reverse sort direction |
| Ctrl+G | Go to path (Esc clears input, Up goes up a directory) |
| b | Open bookmarks dialog |
| B | Toggle current directory as bookmark |
| / | Filter |
| Esc | Clear marks, then the filter (shows "Press q to quit" when there is nothing to clear) |
| Space | Toggle mark (multi-select) |
| o | Open with default app |
| r / F2 | Rename |
| d / Del | Delete (Recycle Bin on Windows, Trash on macOS and Linux) |
| D / Shift+Del | Delete permanently |
| c | Copy |
| x | Cut |
| v | Paste |
| y | Copy absolute path to clipboard |
| Y | Copy git-relative path to clipboard |
| n | Create new file |
| N | Create new directory |
| p | Change preview (when multiple preview modes available) |
| i | Properties |
| , | Settings (Configuration) |
| Ctrl+F | Find files (Search) |
| Ctrl+P / Ctrl+K | Action palette |
| ? | Show help |
| q | Quit |
| Q | Quit without cd |
| t / Ctrl+T | New tab |
| { / } | Previous / next tab |
| 1–9 | Go to tab N |
| w | Close tab; quits on the last tab |
"Create symlink" is in the action palette (Ctrl+P).
s and S sort the current directory only. The sort is remembered for that directory in ~/.config/wade/sorts and shown with a * after the sort marker; "Reset sort for this directory" in the action palette goes back to the configured default.
Tabs keep their own directory, selection, marks and filter. The tab bar appears at the top once a second tab is open; click a tab to switch. Tabs are not saved between runs.
cargo build --release --locked --manifest-path src/wade-rs/Cargo.toml
cargo test --locked --manifest-path src/wade-rs/Cargo.tomlThis project is licensed under the MIT License.
This project was developed with Claude Code 🤖
