# Tiny DC
Tiny DC (which stands for Tiny Directory Changer), is a tiny TUI aimed to make
changing directories as efficient as possible.
https://github.com/user-attachments/assets/9db48319-101c-4cdb-ac79-113cc2b78b77
Tiny DC is inspired by [tere](https://github.com/mgunyho/tere) and
[z](https://github.com/rupa/z). It's faster than doing `cd` + `ls` and more
convenient than using a GUI file explorer if you spend your time in the
terminal. It also combines the functionality of `z` to quickly jump to
directories that you've visited before. It's designed to be minimal and fast,
with a focus on usability and performance.
Tiny DC is not a "file manager", it can only be used to browse and change
directories. It doesn't have any manipulation features like copying, moving, or
deleting files/directories.
__NOTE:__ This was only tested on Linux, but it should work on MacOS and WSL as
well. Windows support is still work in progress (PRs are welcome).
## Features
- Fast and responsive TUI interface
- Quickly jump to frequently visited directories (similar to `z`)
- Search for directories by name
- Quickly and efficiently navigate through directories
- vim-like keybindings + arrow keys
- dynamic shortcuts for each listed directory (simply press the highlighted
key/key combination on the right side of the directory name and you will
be taken to that directory)
## Setup
In order to use `tiny-dc`, you need to install it and then integrate it with your shell.
### Step 1: Install `tiny-dc`
Install from cargo:
```bash
cargo install tiny-dc
```
### Step 2: Then to integrate it with your shell
For `bash` or `zsh`, add the following to your `~/.bashrc` or `~/.zshrc`:
```bash
# Change dc to whatever you want to use
dc() {
local result=$(command tiny-dc "$@")
[ -n "$result" ] && cd -- "$result"
}
# Change z to whatever you want to use
# This will allow you to use z as a shortcut for tiny-dc
# It will take you to the most "frecent" directory that you've visited before
z() {
local result=$(command tiny-dc z "$@")
[ -n "$result" ] && cd -- "$result"
}
# This is needed for the `z` command to work
# Every time you change directories, it will push the current directory to the
# tiny-dc index
cd() {
builtin cd "$@" && tiny-dc push "$PWD"
}
```
After adding the above lines, run `source ~/.bashrc` or `source ~/.zshrc` to
reload your shell configuration.
### Step 3: Profit
Now you can use `dc` to open the TUI and navigate through your directories. You can
also use `z` to quickly jump to the most "frecent" directory.
## Keybindings
At any given time when using `tiny-dc`, you can press `?` to see the help menu,
which will show you the keybindings that are available.
Here is a list of keybindings that you can use in the TUI:
| `h` or `←` | Go to the parent directory |
| `l` or `→` or `Enter` | Go to the selected directory |
| `j` or `↓` | Move down one line |
| `k` or `↑` | Move up one line |
| `gg` or `Home` | Go to the top of the list |
| `G` or `End` | Go to the bottom of the list |
| `?` | Show help menu |
| `q` or `Esc` | Quit |
| `/` | Search for a directory |
| `_` | Clear search |
| `Ctrl + f` | Switch to frecent category |
| `Ctrl + d` | Switch to directories category |