Skip to content
lucaspimentelPublic

About

A command-line TUI file browser.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

wade

CI Release

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.

wade screenshot

Features

Layout & Navigation

  • 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 = none hides them
  • Sort order — by name, date, size, or extension (s to cycle, S to reverse)
  • Filter — / to narrow entries in real-time
  • Go-to-path — Ctrl+G with Tab autocomplete
  • File finder — Ctrl+F recursive 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 — b to open, B to toggle; persists in MRU order
  • Tabs — t/Ctrl+T opens a tab, {/} or 1–9 switch, w closes; tab bar with click-to-switch once a second tab is open
  • Hidden files — . to toggle; separate system files toggle on Windows

Preview & Metadata

  • 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 via p; 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 with set -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 — i for scrollable overlay with timestamps, attributes, git status, and extracted metadata

Git Integration

  • 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 Operations

  • 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 — y for absolute path, Y for 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)

Interface

  • Mouse support — click, scroll, right-click context menu in all panes
  • Action palette — Ctrl+P / Ctrl+K searchable 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 — T opens terminal; wd wrapper 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

Requirements

  • A terminal with VT/ANSI support (Windows Terminal, ConPTY-based terminals, or Unix/WSL terminals)

Installation

Scoop (Windows)

scoop bucket add lucaspimentel https://github.com/lucaspimentel/scoop-bucket
scoop install wade

From GitHub releases (no build tools needed)

./install-remote.ps1
./install-remote.sh

Or as a one-liner:

irm https://raw.githubusercontent.com/lucaspimentel/wade/main/install-remote.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/lucaspimentel/wade/main/install-remote.sh | sh

Release binaries are published for Windows x64 and Linux x64; on other platforms, build from source.

From source

Requires the Rust toolchain.

./install-local.ps1
./install-local.sh

Both scripts install to ~/.local/bin/wade. Ensure that directory is in your PATH.

Usage

wade              # open in current directory
wade C:\Users     # open in a specific directory

Configuration

Config file

~/.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)

CLI flags

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

Shell integration (cd on exit)

Wade 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.sh

Fish — copy to ~/.config/fish/functions/ or source in config.fish:

source /path/to/wade/shell/wd.fish

PowerShell — add to your $PROFILE:

. /path/to/wade/shell/wd.ps1

Then use wd instead of wade to browse. Press q to quit and cd to the last directory, or Q to quit without changing directory.

Keybindings

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.

Building

cargo build --release --locked --manifest-path src/wade-rs/Cargo.toml
cargo test --locked --manifest-path src/wade-rs/Cargo.toml

License

This project is licensed under the MIT License.

Development

This project was developed with Claude Code 🤖

About

A command-line TUI file browser.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages