Skip to content
rgcsekaraaPublic

About

Cross-platform instant terminal file searcher

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

xes

xes is a fast terminal file searcher for macOS, Linux, and Windows.

It indexes files in parallel, skips noisy directories before traversal enters them, filters results live while you type, and lets you open or reveal the selected result directly from the terminal UI.

GitHub: https://github.com/rgcsekaraa/xes

Features

  • Parallel filesystem indexing
  • Live fuzzy search and literal substring search
  • Early directory exclusion for large repos and project trees
  • Keyboard and mouse support
  • Cross-platform open behavior
  • Scriptable non-interactive output with --print

Platform Behavior

  • macOS
    • --action reveal reveals the selected file in Finder
  • Windows
    • --action reveal reveals the selected file in Explorer
  • Linux
    • --action reveal opens the parent directory with xdg-open

Linux does not have a single universal desktop API for “reveal this exact file in the file manager”, so xes falls back to opening the containing folder there.

Install

One-Line Install

macOS and Linux:

curl -fsSL https://raw.githubusercontent.com/rgcsekaraa/xes/main/scripts/install-unix.sh | sh

Windows PowerShell:

irm https://raw.githubusercontent.com/rgcsekaraa/xes/main/scripts/install.ps1 | iex

Local Build Install

If you want to install from source:

cargo install --path . --locked

That installs xes into Cargo's bin directory.

Requirements

End users do not need Rust or Cargo when installing from release binaries.

Runtime requirements:

  • macOS or Linux
    • curl
    • tar
  • Windows
    • PowerShell
  • GUI open support
    • macOS: open
    • Windows: explorer
    • Linux: xdg-open

Most desktop systems already include these tools. On minimal Linux systems, xdg-open may need to be installed separately.

Usage

Search the current directory:

xes .

Search a specific path:

xes ~/Projects

Skip directories immediately:

xes ~/Projects --exclude node_modules,.git,dist,build

Start with a query:

xes ~/Projects --query Cargo

Literal substring matching:

xes ~/Projects --literal --query config

Case-sensitive matching:

xes ~/Projects --case-sensitive --query Makefile

Print matches without launching the TUI:

xes ~/Projects --print --query Cargo --max-results 20

Include hidden files and directories:

xes ~/Projects --hidden

Restrict results to files only:

xes ~/Projects --files-only

Open the file itself instead of revealing it:

xes ~/Projects --action file

Open the parent directory instead:

xes ~/Projects --action parent

CLI Reference

Arguments

  • ROOT
    • Root path to search. Defaults to the current directory.

Main Options

  • -e, --exclude
    • Comma-separated directory names to skip before traversal enters them.
  • --no-default-excludes
    • Disable built-in excludes such as .git, node_modules, target, dist, .cache, and virtual environment folders.
  • --hidden
    • Include hidden files and directories.
  • --follow-links
    • Follow symlinks.
  • --no-ignore-files
    • Ignore .gitignore, .ignore, and related parent ignore files.
  • --files-only
    • Exclude directories from results.
  • --max-results
    • Maximum number of results to display or print.
  • --threads
    • Override the indexing worker count.
  • --batch-size
    • Tune how many indexed paths are pushed per UI update.
  • --query
    • Start with a pre-filled query.
  • --literal
    • Use substring matching instead of fuzzy matching.
  • --case-sensitive
    • Disable smart case matching.
  • --print
    • Print matches and exit instead of launching the interactive UI.
  • --action
    • Action for Enter or mouse click: reveal, parent, file, or none.

Controls

  • Type to filter
  • Up / Down to move
  • PageUp / PageDown to move faster
  • Home / End to jump
  • F2 or Ctrl+L to toggle literal matching
  • F3 or Ctrl+S to toggle case sensitivity
  • F4 or Ctrl+D to toggle deep content search
  • Tab or Ctrl+A to cycle open action
  • ? or Ctrl+H to toggle help
  • Enter to run the configured action on the selected result
  • Left mouse click to run the configured action on a result
  • Esc or Ctrl+C to quit

In terminal apps, the modifier is Ctrl on both macOS and Windows. Cmd is usually not delivered to terminal TUIs.

Default Excludes

By default, xes skips these directory names before traversing into them:

  • .git
  • node_modules
  • target
  • .idea
  • .vscode
  • dist
  • build
  • .next
  • .turbo
  • .cache
  • __pycache__
  • .venv
  • venv

This is name-based exclusion and is intentionally optimized for fast project searches.

Installation Path

The Unix installer places xes in:

  • /usr/local/bin if writable
  • otherwise ~/.local/bin

The Windows installer places xes.exe in:

  • %LOCALAPPDATA%\Programs\xes\bin

Release Process

This repo includes .github/workflows/release.yml, which builds release archives for:

  • macOS x86_64
  • macOS aarch64
  • Linux x86_64
  • Linux aarch64
  • Windows x86_64

To publish a release:

git tag v0.1.0
git push origin v0.1.0

The workflow builds the binaries and attaches them to the GitHub release.

Development

Build:

cargo build

Run:

cargo run -- .

Run help:

cargo run -- --help

Install locally:

cargo install --path . --locked --force

Notes

  • xes is optimized for fast local filesystem search, not full-text file contents search.
  • Large trees still need to be indexed once per run; the UI remains searchable while indexing continues.
  • On Linux, file reveal is implemented as opening the parent directory because desktop file manager support is inconsistent across environments.

About

Cross-platform instant terminal file searcher

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages