Skip to content
vimkimPublic

About

A Rust terminal app for unified filesystem navigation, search, filtering, and previews.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Dirpick

Find files and text. Preview source. Open your editor.

A keyboard-driven terminal workbench for your filesystem, built in Rust. Runs on Linux and over SSH, with search and syntax highlighting built in.

Get started · Search · Keys · Nushell

Dirpick in Files mode: a fuzzy query for src, a path filter, matching Rust files, and a syntax-highlighted preview of src/main.rs.

Type to search, move through results, and read the source beside them. Query, path filters, and search scope stay visible while you work.

Get started

Build and install from source with Rust and Cargo:

git clone https://github.com/vimkim/dirpick.git
cd dirpick
cargo install --locked --path .
dirpick

Cargo installs into ~/.cargo/bin by default. Make sure that directory is on your PATH. To try the checkout without installing, run cargo run --locked. If you use Just, just sync installs into ~/.local/bin instead.

Launch inside a Git working tree to search its Project root. Outside Git, Dirpick starts at your launch directory. No external rg command or service is needed. Git is optional and used only to find the Project root.

Search files, directories, and contents

Start typing in Query. Press Esc for Normal mode, then f, d, or c to switch search modes. Query, filters, and settings carry across modes.

Mode Find Act on a result
Files Fuzzy path fragments, such as src main Enter opens the file in your editor
Directories Fuzzy directory paths Enter browses into the directory
Contents Literal text, or regex with Space r Enter opens the matching line in Vim or Neovim

Include and Exclude filter relative paths with regex. Uppercase characters make a query or filter case-sensitive. Use Space h to reveal hidden entries and Space i to include ignored paths. Both shortcuts work in Normal mode.

Read matches in context

Contents mode groups matching lines by file. Select a match to see the surrounding source, with syntax colors and matching spans highlighted.

Contents mode searching for cancelled in src: matching lines grouped by file on the left, with the selected line highlighted in a Rust source preview on the right.

PageUp and PageDown scroll the preview independently of the result list. Dirpick uses VISUAL, then EDITOR, then nvim. Opening a content match at its exact line requires Vim or Neovim.

Browse without leaving the search

Directories mode previews immediate children. Press Enter to browse inside, then use Left or H in Normal mode to move to the parent. Right browses one directory toward the selected result. Space b restores the previous scope and search.

Directories mode with src selected: directory results on the left and the Rust files and terminal subdirectory inside src on the right.

Ctrl-Y sends the selected absolute path through OSC 52 and keeps the search open. Clipboard support depends on your terminal and SSH client.

Keep your hands on the keyboard

Dirpick starts in Insert mode with Query focused. Type immediately, including spaces. Press Esc for Normal mode, then Space to discover shortcuts.

Key Action
Esc Return to Normal mode or close help
i or / in Normal Edit the focused field or Query
Tab / Shift-Tab Move between Query, Include, Exclude, and Scope
Ctrl-P / Ctrl-N or ↑ / ↓ Select a result in either input mode
j / k in Normal Select the next or previous result
← / → in Normal Browse to the parent or one directory toward the selected result
Enter Open a file or browse a directory
Space s in Normal Switch between Project root and launch CWD
Space ? in Normal Show keyboard help and full status details
Ctrl-C in either mode, or q in Normal Quit

The interface supports terminals of at least 70 columns × 18 rows. At 100 columns or more, Results and Preview sit side by side. In narrower terminals, Space p in Normal mode switches panes. Set NO_COLOR for terminal default colors.

See the complete key and search reference for field editing, scope history, filters, and terminal behavior.

Change directory in Nushell

Generate the bundled wrapper and load its dp command:

dirpick --print-nu-wrapper | save -f ~/.config/nushell/dirpick.nu
use ~/.config/nushell/dirpick.nu dp
dp

Select a directory and press Ctrl-G to change your invoking shell's directory and exit. Enter continues browsing inside Dirpick. Add the use line to your Nu config to keep dp available in future shells.

Dirpick does not edit shell configuration. See the Nushell reference for the JSON integration contract.

Reference and development

Search respects ignore files by default and reports partial results when it reaches a limit. Content search and previews support UTF-8 text files up to 2 MiB. Symlink entries are skipped during traversal.

Dependency notices describe third-party licenses. They do not select a license for Dirpick itself.

About

A Rust terminal app for unified filesystem navigation, search, filtering, and previews.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages