cd-surfer is a replacement for the endless cd ls cd ls ... cycle on linux shells. It is meant to be a simple and fast TUI file manager.
Some features:
- No dependencies, single binary
- Fast navigation, less keytrokes than cd / ls
- Easy in-folder search (just start typing)
- Should be easy to integrate with any shell (currently it only supports bash)
- Run
wget -q -O - https://raw.githubusercontent.com/andriykrefer/cdsurfer/master/install.sh | bash- Restart the terminal to apply the config
- Download a pre-build binary in the releases section or compile it yourself with with
cd cmd/cd-surfer/ && go build . - Move to /bin/cd-surfer with 755 permission
- Add the following lines to your
~/.bashrc:
function cds {
eval "$(/bin/cd-surfer "$@")"
}- Restart the terminal to apply
Type cds and Enter
Arrow keys,PageUp,PageDown,HomeandEndto navigateEnterandTabto enter directoryAlt+Backspaceto go to the parent folder- Just start typing (
a-z, lowercase) to search inside folder. The search is case-insensitive. Ctrt+corEscto quit WITHOUT changing directory on the parent shellCtrt+Enterto quit CHANGING directory on the parent shell/to go to root directory~to go to home directoryCtrl+uto clear the input (same as bash)
Unfortunately, there is easy way to directly change directories of the parent shell of a spawned process. The way cd-surfer works is outputting the cd command as a string, so the parent shell can evaluate it and change the directory.
This project is in Alpha stage, therefore everything may be subjected to change. Mainly keybindings and overall behavior.
Despite that it is still lacking a lot o features I want in the, for a weekend projectec it is good enought to use in my daily routine. Besides, I do not want to make it a bloated software, so I will keep it simple, focusing on its core features.
Below is a list of its "roadmap":
Basic functions (cd and ls replacement)✔Search✔Finish detailed file view✔Handle Symlinks✔- Better README.md
- Add help/info and tips in the software
- File operations
- Copy
- Move
- Delete
- Rename
- Create folder
- Open Editor when select a file
- Create a config file for customizations
- Easy permissions editor
- Handle errors gracefully. For instance when a user tries to access a folder he does not have permissions
- Support for other shells besides bash
- Support for Windows and Mac
- Tabs

