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
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| fzd-1.0.0.tar.gz | 29.4 kB | Without provenance | Details for fzd-1.0.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| fzd-1.0.0-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details for fzd-1.0.0-py3-none-win_arm64.whl |
| fzd-1.0.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details for fzd-1.0.0-py3-none-win_amd64.whl |
| 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 for fzd-1.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
| fzd-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details for fzd-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
| fzd-1.0.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details for fzd-1.0.0-py3-none-macosx_11_0_arm64.whl |
| fzd-1.0.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details for fzd-1.0.0-py3-none-macosx_10_12_x86_64.whl |
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
|
Security for fzd 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.