Next-generation terminal fuzzy finder, in-process file manager, media & markdown viewer, and tmux session orchestrator.
Features β’ Lineage & Inspirations β’ Workflow Ecosystem β’ Presets Suite β’ Installation β’ Configuration β’ CLI & Subcommands β’ Library
Waymaker (wm) is a blazing-fast, keyboard-anchored, and infinitely composable TUI fuzzy searcher, file navigator, and workflow engine written in Rust. It takes terminal productivity beyond traditional fuzzy finders by unifying multi-column data filtering, in-process filesystem crawling, native media/markdown rendering, Tmux session management, and extensible TOML presets into a single sub-perceptual latency experience (
Waymaker is an evolutionary, feature-rich fork of matchmaker (mm), designed to expand its core matching capabilities into a comprehensive terminal control plane inspired by state-of-the-art terminal tools:
- π― matchmaker: The foundational DNA β Nucleo SIMD matching algorithm, hierarchical TOML partial-merge configuration, dynamic CLI overrides, multi-column tab splitting, and interactive preview layouts.
- πΊ television: Fast TUI engine architecture, preview channel pipelines, and multi-channel inspection β modern Rust design, sub-millisecond source switching, smart sorting thresholds, multi-threaded SIMD matching, and instant responsive previews.
- π zoxide: Advanced frecency algorithm (frequency + recency) and adaptive directory navigation β learning historical directory habits, intelligent query scoring, and keyboard-anchored muscle memory (
j/zi). Waymaker builds upon zoxide's principles by embedding a persistentredbKV store in-process, unifying frecency ranking directly into interactive multi-column pickers and file manager overlays. - πΌοΈ mcat: State-of-the-art terminal Markdown and media inspection β native CommonMark/GFM rendering, syntax-highlighted code fences, inline Kitty Unicode Placeholders (
\u{10EEEE}) for Mermaid diagrams, and modal zoomable diagram inspection with dynamic theme synchronization. - β‘ sesh: First-class Tmux session orchestration β deterministic session derivation,
session.tomlandsesh.tomlwildcard patterns, directory auto-detection, startup commands, and seamless session switching viawm session/wm connect. - ποΈ yazi: Asynchronous non-blocking architecture β zero-fork in-process parallel filesystem walker (
ignore), off-thread media previews (ratatui-image), embedded file manager operations withUndoStack(fm.rs), and instant responsiveness.
- Nucleo SIMD Fuzzy Matcher: Multi-threaded, cache-conscious fuzzy filtering powered by nucleo with path depth penalty (
depth_penalty = 15), directory-first weighting, and typo tolerance. - Headless Filter Mode (
wm -f <query>): Filter stdin streams or local directories instantly without initializing the TUI β perfect for ultra-fast shell scripts and Zsh ZLE widgets. - Multi-Column Filtering & Regex Captures: Split tabular input with delimiters or regex capture groups; filter individually per column (
%col query), hide helper columns, and colorize active fields. - Tri-Modal Data Source Cycling (
@reloadnext): Seamlessly cycle between Local Workspace (native crawler), Global Frecency (wm list --dirs), and Starred Bookmarks (wm list --bookmarks) with a single keypress.
-
Native In-Process Parallel Walker: Multi-threaded, git-aware directory tree scanner using Rust's
ignorecrate, completely eliminatingfork+execsubprocess overhead. -
Persistent Root Directory Cache: Embedded redb key-value store (
~/.local/state/waymaker/dir_cache.redb) delivering < 5ms instant warm-starts on repeated invocations in large monorepos. -
Zero-Friction Home Row Anchoring (
$H = 0$ ): Complete keyboard navigation engineered for vim motions (hjkl), modal Nav mode, and dual-function CapsLock (Esctap /Ctrlhold) without awkwardAlt/Optionchords.
- Native Terminal Media: High-performance graphic rendering for Images (
.png,.jpg,.webp,.gif), Videos (thumbnails viaffmpegthumbnailer), and PDFs (viapdftoppm) using Kitty graphics protocol, Sixel, and iTerm2 viaratatui-image. - In-Terminal Markdown & Mermaid Diagrams: Built-in CommonMark parser with syntax-highlighted code fences, inline Mermaid diagram rasterization (
\u{10EEEE}), and interactive modal viewer (ToggleDiagram/s/Ctrl+S) with zoom (+/-/0) and pan controls. - Native Directory Tree: Instant colored directory tree view with file sizes, permissions, and Nerd Font icons (
wm tree), eliminating the need for externalezaortreeprocesses. - Dynamic Layout Engine: Drag-to-resize dividers, sticky header lines, responsive horizontal/vertical splits, auto-scrolling line synchronization, and multiple layout toggles (
Ctrl+/).
- Embedded File Operations (
fm.rs): In-place file creation (a), rename (r), trash (d), archive compression (z/Z), and clipboard yanking (y/x/p/P) with recursive drill-down (l) and parent ascension (h). - Transactional Undo Stack (
u): Dedicated@undoaction to safely reverse accidental file operations and restore clipboard states. - Ancestor Hierarchy Jump (
Ctrl+U): Instantly jump up multi-level folder hierarchies directly to the repository or filesystem root.
Waymaker is engineered as an ultra-low-latency control plane for keyboard-driven terminal environments. Here is how seamless, zero-friction workflows are orchestrated across Tmux, Zsh, and Neovim:
flowchart TD
subgraph InputTriggers ["Ergonomic Triggers (H = 0)"]
CAPS["keyd Dual-Function CapsLock<br/>Hold: Ctrl | Tap: Esc (120ms)"]
REFLEX["j + Enter Neural Reflex<br/>Bilateral Inward Roll <100ms → cd ~"]
SMART_TAB["Zsh Smart Tab (_smart_tab)<br/>Tab on empty buffer → wm -o jump"]
TMUX_POP["Tmux Golden Ratio Popups (75% Γ 60%)<br/>Prefix + e (files) | Prefix + / (rg) | Prefix + y (yank)"]
end
subgraph WaymakerEngine ["Waymaker Core Engine (wm)"]
WALKER["Async Parallel Walker<br/>(ignore crate / 0-fork)"]
CACHE["Persistent redb KV Store<br/>(<5ms Warm-Start)"]
MATCHER["Nucleo SIMD Matcher<br/>(dir-first / depth-penalty)"]
PREVIEWS["Native Preview Pipeline<br/>Markdown • Mermaid • Media • Trees"]
end
subgraph ActionsOutput ["Productivity Actions"]
BUFFER["Object-First Zsh Buffer<br/>BUFFER=' <paths>' & CURSOR=0"]
NVIM["Golden Ratio Neovim Split<br/>62% × 38% pane beside AI session"]
SESH["Tmux Session Connect<br/>wm session / session.toml"]
TRANSFERS["Frecency Transfers<br/>pt / ptg / ptl / mt / mtg / mtl"]
end
CAPS --> TMUX_POP
SMART_TAB --> WaymakerEngine
TMUX_POP --> WaymakerEngine
REFLEX --> BUFFER
WaymakerEngine --> WALKER
WaymakerEngine --> CACHE
WaymakerEngine --> MATCHER
WaymakerEngine --> PREVIEWS
WaymakerEngine --> BUFFER
WaymakerEngine --> NVIM
WaymakerEngine --> SESH
WaymakerEngine --> TRANSFERS
-
Zero Hand Homing (
$T_H = 0\text{ ms}$ ): Hands stay permanently anchored to the Home Row (ASDF / JKL;). -
Kernel Modifiers (
keyd): Dual-functionCapsLockacts asCtrlwhen held andEscwhen tapped. -
No
Alt/OptionChords: Eliminates thumb adduction and ulnar wrist deviation; all primary actions trigger via home-row taps, inward rolls (CapsLock + J/K,CapsLock + Space), or single-key navigation mode. -
The Sacred
j + EnterReflex: Bilateral inward roll (jwith right index,Enterwith right pinky) executes in$<100\text{ ms}$ to navigate straight to$HOME(cd ~).
Modal pickers launch in centered Tmux popups sized to the Golden Ratio
Prefix + e/Prefix + C-e: Workspace Files (wm -o workspace) β browse files, markdown, and Mermaid diagrams.Prefix + /: Live Ripgrep (wm -o rg) β full-text search with line-synchronized preview.Prefix + y/Prefix + C-y: Scrollback Extractor (wm -o yank) β extrakto-style regex token and URL extractor.Prefix + P: GitHub Pull Request Review (wm -o pr) β interactive PR inspection and diff viewer.Prefix + ?: Keybindings HUD (wm -o keybindings) β searchable workflow cheat sheet.
- Empty Buffer +
Tab: Instantly launches_jump_widget(wm --no-read -o jump) β jump anywhere without typing verbs (cd,z). - Ghost Text Suggestion +
Tab: Accepts the suggestion (autosuggest-accept). - Buffer with Text +
Tab: Invokes context-aware argument completion viawm-ftb(wm -o ftb). - Object-First Buffer Ergonomics: Selecting a directory jumps immediately; selecting files formats their paths and injects them into the Zsh buffer with a leading space and
CURSOR = 0(BUFFER=" <paths>"), allowing immediate typing of verbs (nvim,bat,git add).
-
pt [files]: Interactive paste to a directory picked viawm -o jump. -
ptg [files]: Paste and immediately navigate (cd) to destination. -
ptl [files]: Paste directly to the last selected target directory (_MM_LAST_TARGET), bypassing the UI entirely ($T = 220\text{ ms}$ ). -
mt,mtg,mtl: Equivalent zero-friction move operations.
Waymaker presets are modular, reusable TOML configurations stored in ~/.config/waymaker/presets/<name>.toml, invoked cleanly via wm -o <name>:
| Preset | Invocation | Description | Key Ergonomic Actions |
|---|---|---|---|
jump |
wm -o jump |
Flagship frecency directory navigator, file manager, and tree inspector. |
Enter: cd to pathe / Ctrl+E: Open in Neoviml: Drill into directoryh: Jump to parentu: @undo file actionCtrl+U: Ancestor hierarchy jumpy / x / p: Yank, Cut, Paste |
workspace |
wm -o workspace |
Workspace file inspector for code, markdown, and Mermaid diagrams. |
Enter: Toggle 60% / 100% fullscreen previewTab: Cycle sources (Local s / Ctrl+S: Modal diagram viewerCtrl+V: Insert path into origin panee: Open in Neovim |
rg |
wm -o rg |
Live workspace full-text search with ripgrep and line-synced bat preview. |
Enter: Open at line (nvim +{line} {file})Ctrl+S: Toggle Case Sensitivity ([Aa])Ctrl+W: Toggle Whole Word ([W])Ctrl+/: Cycle preview layouts |
yank |
wm -o yank |
Extrakto-style regex token, path, URL, and git hash extractor from scrollback. |
Enter: Copy to clipboardCtrl+V: Insert into origin paneTab: Cycle filter tabs (all cmd path url sha)b: Open URL in browser |
session-picker |
wm session / wm -o session-picker
|
High-performance Tmux session switcher with live pane previews and icon badges. |
Enter: Connect to session (wm connect)d: Terminate sessionTab: Filter active vs configured sessions |
ftb |
wm -o ftb |
Tab completion backend for Zsh fzf-tab with multi-column Nucleo fuzzy matching. |
Tab: Select itemShift-Tab: PreviousCtrl+P: Toggle preview |
kill |
wm -o kill |
Interactive TCP listening port and process terminator with live connection telemetry. |
Enter: Send SIGTERM (15)Ctrl+X: Force SIGKILL (-9) |
keybindings |
wm -o keybindings |
Interactive workflow HUD and shortcut cheat sheet across Tmux, Zsh, Hyprland, and Neovim. |
Enter: Execute workflowTab: Cycle categoriesy: Copy keybinding |
wt |
wm -o wt |
Interactive Git worktree switcher integrated with worktrunk and status preview. |
Enter: Checkout worktree |
memory |
wm -o memory |
AI agent memory, instructions, skills, and rules explorer. |
Enter: Open file in editor |
pr |
wm -o pr |
GitHub Pull Request review modal with diff inspection. |
Enter: Open PR in browserd: View full diff |
borders |
wm -o borders |
Live Hyprland window border gradient switcher. |
j / k: Live preview on windowEnter: Persist style |
animations |
wm -o animations |
Live Hyprland window animation curve switcher. |
j / k: Live preview curveEnter: Persist animation |
Waymaker includes an all-in-one installation script that installs the binary and automatically deploys all .toml configuration files and presets to the correct system directories.
curl -fsSL https://raw.githubusercontent.com/fcmiranda/waymaker/main/install.sh | shClone the repository and run install.sh:
git clone https://github.com/fcmiranda/waymaker.git
cd waymaker
# Build release binary and deploy all .toml configs and presets
./install.shOr using just:
# Builds release workspace and installs binary to ~/.local/bin/wm
just install
# Deploy .toml configurations and presets
./install.sh --configs-onlyThe install.sh script provides dedicated options for managing binaries and configuration files:
# Deploy or update .toml configs and presets only (leaves binary untouched)
./install.sh --configs-only
# Install or update the 'wm' binary only
./install.sh --binary-only
# Overwrite existing configs without generating timestamped .bak backups
./install.sh --force
# View installer help
./install.sh --helpThe installer deploys configuration assets directly into standard XDG locations:
~/.local/bin/
βββ wm # Executable binary
~/.config/waymaker/
βββ config.toml # Master configuration file
βββ session.toml # Session & wildcard orchestration config
βββ presets/ # Specialized workflow presets
βββ jump.toml # Frecency directory navigator
βββ workspace.toml # Workspace file & diagram inspector
βββ rg.toml # Live ripgrep searcher
βββ yank.toml # Tmux scrollback token extractor
βββ session-picker.toml # Tmux session manager
βββ ftb.toml # Zsh tab completion backend
βββ kill.toml # Process & port terminator
βββ keybindings.toml # Interactive workflow HUD
βββ ... # Domain-specific presets
Waymaker configuration files are strictly type-checked TOML files.
Dump the active default configuration at any time:
wm --dump-configExample ~/.config/waymaker/config.toml:
[tui]
percentage = 60
min = 10
max = 120
[ui]
border = { type = "Rounded" }
[preview]
show = true
wrap = true
markdown = true # Native CommonMark & syntax highlighting
media = true # Native Kitty / Sixel image & video previews
diagrams = true # Native Mermaid diagram rasterization
inline_diagrams = true # Kitty Unicode Placeholders (\u{10EEEE})
diagram_theme = "auto" # Auto-sync with terminal dark/light palette
diagram_background = "transparent" # Borderless diagram flow
[[preview.layout]]
side = "right"
percentage = 60
min = 30
[matcher]
sort = "smart" # Natural order on empty query, fuzzy sort on typing
depth_penalty = 15 # SIMD-accelerated root file priority
dir_first = true # Prioritize directories in file pickersCompatible with both Waymaker and Sesh session definitions (~/.config/waymaker/session.toml or ~/.config/sesh/sesh.toml):
# Wildcard auto-session definitions
[[wildcard]]
pattern = "~/dev/github/**"
startup_command = "nvim"
[[wildcard]]
pattern = "~/projects/**"
startup_command = "nvim"
# Explicit pinned sessions
[[session]]
name = "ο Downloads"
path = "~/Downloads"
startup_command = "wm -o jump"Waymaker features a compact, expressive override syntax allowing on-the-fly customization:
# Override preview command, layout percentage, and remove single quotes
wm p.l "cmd=echo {}|||p=50|||max=20" cmd "ls" o "{=}"
# Start directly in Nav mode with plain borders
wm ui.nav_mode=true ui.border.type=PlainWaymaker includes specialized standalone subcommands for high-speed terminal inspection without shell overhead:
# 1. Fuzzy Picker & Presets
wm # Interactive search on current directory
find . | wm # Filter piped input
wm -o jump # Launch jump preset
wm -o workspace # Launch workspace preset
# 2. Headless Filtering (no TUI)
wm -f "search_term" # Headless directory filter to stdout
echo -e "apple\nbanana" | wm -f "ban" # Headless stdin stream filter
# 3. Session Management (sesh compatible)
wm session # Interactive Tmux session picker
wm session list --icons # List active and configured sessions
wm connect <session-name> # Connect or attach to session
wm last # Switch to previous Tmux session
# 4. In-Terminal Markdown & Mermaid Viewer
wm md README.md # Render markdown with syntax highlighting & diagrams
wm md README.md --watch # Live auto-reloading markdown preview
wm mermaid diagram.mmd # Render standalone Mermaid diagram in terminal
# 5. Native Directory Tree
wm tree . # Render colored git-aware directory tree
# 6. Frecency Management
wm add ~/dev/project # Asynchronously record directory visit
wm list --dirs # Output ranked frecency directory list
wm list --bookmarks # Output starred bookmarksWaymaker can be embedded directly into your Rust applications as an ultra-fast picker engine:
[dependencies]
waymaker = "0.1"
tokio = { version = "1", features = ["full"] }use waymaker::nucleo::{Indexed, Worker};
use waymaker::{MatchError, Result, Selector, Waymaker};
#[tokio::main]
async fn main() -> Result<()> {
let items = vec!["alpha", "beta", "gamma", "delta"];
let worker = Worker::new_single_column();
worker.append(items);
let selector = Selector::new(Indexed::identifier);
let wm = Waymaker::new(worker, selector);
match wm.pick_default().await {
Ok(selected) => println!("Selected: {}", selected[0]),
Err(MatchError::Abort(_)) => eprintln!("Cancelled"),
Err(err) => eprintln!("Error: {err}"),
}
Ok(())
}See ARCHITECTURE.md for core event flow and internals.
Waymaker stands on the shoulders of remarkable terminal software:
- matchmaker by Squirreljetpack β the upstream foundation.
- television by Alex Pasmantier β inspiring modern Rust TUI engine design and multi-channel previewing.
- zoxide by Ajeet D'Souza β the gold standard for smart directory frecency jumping.
- mcat by Skardyy β inspiring in-terminal Markdown and Mermaid rendering.
- sesh by Josh Medeski β defining modern Tmux session workflow ergonomics.
- yazi by sxyazi β pioneering async, non-blocking terminal file management.
- fzf by Junegunn Choi β setting the standard for command-line fuzzy finding.
- nucleo by Helix Editor β low-latency SIMD matcher engine.
- ratatui β modern Rust terminal user interface library.
Waymaker is open-source software licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details.
