Fast, small, hackable TUI file manager with no dependency
Find a file
2024-11-17 23:51:19 +00:00
patches Edit patch 2024-11-13 09:50:08 +00:00
.gitignore Add highlight on current cursor file with preview 2024-03-09 17:37:04 +00:00
ccc.1 Add favourites feature and update manual 2024-11-17 23:51:19 +00:00
ccc.c Add favourites feature and update manual 2024-11-17 23:51:19 +00:00
config.h Add view history using 'e' and update config h for marked files color 2024-11-17 22:53:06 +00:00
file.c Rework get_line and add marked file color 2024-11-17 22:24:31 +00:00
file.h Rework get_line and add marked file color 2024-11-17 22:24:31 +00:00
icons.c Remove stdbool.h and fix calling on files 2024-11-17 14:49:24 +00:00
icons.h Remove stdbool.h and fix calling on files 2024-11-17 14:49:24 +00:00
LICENSE Initial commit 2024-03-09 11:41:17 +00:00
Makefile Remove image preview to a patch 2024-11-13 09:48:13 +00:00
README.md Add favourites feature and update manual 2024-11-17 23:51:19 +00:00
TODO Add TODO 2024-11-15 00:03:33 +00:00
util.c Use ansi instead of ncurses and add directory preview 2024-10-31 23:19:58 +00:00
util.h add common alloc functions and handle cli argument 2024-04-01 21:23:10 +00:00

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

g: 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

.: toggle hidden files
A: show directory disk usage/block size
i: toggle file details
u: sort files
x: view file/dir attributes
e: show history
y: copy filename to clipboard
!: open shell in current dir

f: new file
n: new dir
r: rename
X: toggle executable

space: mark file
a: mark all files in directory
d: trash

[1-9]: favourites/bookmarks (see customizing)

?: 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

c: copy
m: move
s: symbolic link
b: bulk rename

p: execute paste/move/delete/bulk_rename

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")"
}

Environment variables

export CCC_LAST_D=~/.cache/ccc/.ccc_d
export CCC_FAV1=~/projects
export CCC_FAV2=~/.bashrc
export CCC_FAV3=~/Pictures/Wallpapers/
export CCC_FAV4=/usr/share
export CCC_FAV5=/
export CCC_FAV6=
export CCC_FAV7=
export CCC_FAV8=
export CCC_FAV9=

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.