Fast, small, hackable TUI file manager with no dependency
patches | ||
.gitignore | ||
ccc.1 | ||
ccc.c | ||
config.h | ||
file.c | ||
file.h | ||
icons.c | ||
icons.h | ||
LICENSE | ||
Makefile | ||
README.md | ||
util.c | ||
util.h |
ccc
Soft fork of fff in C aiming for size and speed with no dependency, hackable with patches and configurable via config.h
The fact that it is written in C makes it more versatile and rapid, enabling us to add features that were previously ruled out due to time complexity.
Features
Consider this project incomplete and WIP!
Feature of fff | Ported | Dropped |
---|---|---|
Standard movement | X | |
Advanced movement (jumps) | X | |
File details | X | |
File icons! | X | |
Searching for files | ||
Sorting | X | |
Marking and marking operations | ||
Image previews | X | |
Help | X | |
History | ||
Bookmarks | ||
Bulk rename |
Features added that are not in fff:
- File preview
Usage
ccc -p dir # File picker
ccc dir
h: go to parent dir
j: scroll down
k: scroll up
l: go to child dir
left: go to parent dir
down: scroll down
up: scroll up
right: go to child dir
enter: go to child dir/open file
backspace: go to parent dir
gg: go to top
G: go to bottom
ctrl+u: jump up
ctrl+d: jump down
t: go to trash dir
~: go to home dir
-: go to previous dir
z: refresh current dir
:: go to a directory by typing
u: sort files
.: toggle hidden files
i: toggle file details
X: toggle executable
A: show directory disk usage/block size
f: new file
n: new dir
r: rename
space: mark file
a: mark all files in directory
d: trash
?: show help
q: exit with last dir written to file
ctrl+c exit without writing last dir
TO BE DONE:
o: open file with
O: open file with a GUI program detached from file manager
/: search
!: open shell in current dir
x: view file/dir attributes
e: show history
y: copy filename to clipboard
c: copy
m: move
s: symbolic link
b: bulk rename
p: execute paste/move/delete/bulk_rename
[1-9]: favourites/bookmarks (see customization)
Dependencies
- Any Nerd Font for file icons (optional, but turned on by default)
- libsixel (Optional)
Building
You will need to run these with elevated privilages.
$ make
# make install
Customizing
CD on Exit for POSIX Shell
# Add this to your .bashrc, .zshrc or equivalent.
# Run 'ccc' with 'c' or whatever you decide to name the function.
c() {
ccc "$@"
cd "$(cat "${XDG_CACHE_HOME:=${HOME}/.cache}/ccc/.ccc_d")"
}
Using ccc
in neovim as a file picker
See ccc.nvim
Contributions
Contributions are welcomed, feel free to open a pull request.
License
This project is licensed under the GNU Public License v3.0. See LICENSE for more information.