fzd
Interactive terminal directory explorer that cd's your shell.
fzd opens a fuzzy, keyboard-driven TUI for browsing directories. It draws its
UI to stderr and prints only the chosen absolute path to stdout, so a
tiny shell wrapper can capture that path and run the real cd in your current
shell.
Install
Pick whichever ecosystem you already live in — every channel ships the same binary.
| Channel | Command |
|---|---|
| Cargo | cargo install fzd |
| npm | npm install -g fzd |
| PyPI | pip install fzd |
| Script | curl -fsSL https://raw.githubusercontent.com/ervan0707/fzd/main/install.sh | bash |
| Nix | nix profile install github:ervan0707/fzd |
Shell integration
Because a child process can't change its parent shell's directory, fzd prints
the picked path and a wrapper does the cd. For fish, source the bundled
function:
source /path/to/shell/fzd.fish
Then:
fzd # browse from the current directory
fzd ~/code # browse starting somewhere else
fzd --jump # jump straight to frecent / bookmarked dirs
fzd -j # short form
Usage
fzd [OPTIONS] [PATH]
Arguments:
[PATH] Directory to start in (defaults to the current directory)
Options:
-j, --jump Start directly in jump mode (frecent + bookmarked dirs)
-a, --all Show hidden (dot) files from the start
--print-only Do not record the accepted directory in the frecency store
--check-update Check GitHub for a newer release, then exit
--update Download the latest GitHub release and replace this binary
--force With --update, replace a package-manager-managed binary
-h, --help Print help
-V, --version Print version
Updating
fzd --check-update compares your installed version against the latest GitHub
release and prints whether you're current, without opening the TUI.
fzd --update goes further: it downloads the release binary for your platform
and swaps it in over the running executable. This is meant for the raw-binary
install (the curl | bash script or a manual download). If fzd was installed
through a package manager, --update stops and points you at the right command
(cargo install fzd --force, npm update -g fzd, brew upgrade fzd, and so
on). Pass --force to self-replace anyway.
Development
This repo ships a Nix flake and a pinned Rust toolchain:
nix develop # enter the dev shell (or `direnv allow` with the .envrc)
cargo run # run locally
cargo build --release
Releasing
Releases are fully automated from Conventional Commits
via semantic-release in GitHub Actions. A feat:/fix:/feat!: commit on
main computes the next version, builds binaries for six platforms, and
publishes to crates.io, npm, PyPI, and GitHub Releases in one run. See
.github/workflows/release.yml.
License
MIT
Release files for fzd 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fzd-1.0.0.tar.gz | 29.4 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| fzd-1.0.0-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details |
| fzd-1.0.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| fzd-1.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| fzd-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| fzd-1.0.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| fzd-1.0.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 9.4 MB
Release files / fzd-1.0.0.tar.gz
| Download URL | fzd-1.0.0.tar.gz |
|---|---|
| Size | 29.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b2c3b4eb6e0ffa7ea6fa5417f219e6e2654c013f8488b55bdb0720c93a4d33d
|
|
BLAKE2b-256 checksum How to use checksums |
68da94eee317e3dbd6706ebac8f643a6645a393c6825c97b02c90f32a91386d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / fzd-1.0.0-py3-none-win_arm64.whl
| Download URL | fzd-1.0.0-py3-none-win_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
03c20a65d9726698654a3edaaf31ad5c98d07a84097263c1ca0f6cf34ee410ea
|
|
BLAKE2b-256 checksum How to use checksums |
aec4162864a26b736b02a38cc8aef66a10d157bd3025270eba63860d7b814b3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / fzd-1.0.0-py3-none-win_amd64.whl
| Download URL | fzd-1.0.0-py3-none-win_amd64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3d5b7a2461c040531268202d2f0e3003160a4ee178b42040ad8e6718a89959f7
|
|
BLAKE2b-256 checksum How to use checksums |
93a38d6a22a6555c12c5ad8dee21d9f6d4c1084fc51809943ce6899c767d19cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / fzd-1.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fzd-1.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
9193033de6f895621e4d85a2eeb739eb67b80948a310f576221a045341ce0ca0
|
|
BLAKE2b-256 checksum How to use checksums |
7be1f93143f86ccd6af111b649af5676903d35e2e934f3609b9be23b7f2dd28f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / fzd-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | fzd-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
c0ec585ebcd2ab9f6ec6b3d6d649dcb431957c534b854a4b0d4a9583a52ef0aa
|
|
BLAKE2b-256 checksum How to use checksums |
23ddce8f11f7a867478dea044d4e6f7c885d098a2a704563327ac8d958d47be4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / fzd-1.0.0-py3-none-macosx_11_0_arm64.whl
| Download URL | fzd-1.0.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
085afc452bd215fb30277ff51eeda8eff6b543f71fa5564c4152806ef3e2a350
|
|
BLAKE2b-256 checksum How to use checksums |
80b5e1d2709831a973d0fb496abc1fedee17805cca0e8544f5d676e464ce680c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / fzd-1.0.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | fzd-1.0.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
d2d3e29969dd75275ba4b3c925c3d9fd7ab161f7b43c1c3f9a6248114bef21de
|
|
BLAKE2b-256 checksum How to use checksums |
dc90e3f02174ace616ed99b61ca82d7033a2b039bf2db96738a2052b663d0529
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|