bhaney.net

About

CFFM is a minimalist terminal-based file manager. Heavily inspired by similar terminal based file managers such as ranger and lf, CFFM seeks to provide a clean, snappy, and customizable file managing experience while adherign to a minimalist, Unix-like philosophy.

You can browse and manage files without moving your hands from the keyboard...

Philosophy

CFFM's design philosophy was inspired heavily by the Suckless Philosophy. Whether or not experienced hackers would consider CFFM truely "Suckless" or "KISS" is debatable, however one thing is for sure, and that is that CFFM is minimalist and not bloated. I have been using ranger for about a year now, and I couldn't help but notice that it was lagging behind and sometimes not responsive. This is because it was written in python, and was calling external scripts to execute commands. I was interested switching to the file manager lf, however it too used external configuration files and building it required installing golang. I always liked Suckless' dwm and st due to their configuration being compiled directly into the program, as well as for the fact that they are extremely portable and light programs. So, I decided to write my own terminal file manager, with simplicity and portability in mind.

What's New [v1.0]

  • After being in development for two months (on and off), CFFM is officially released, with all of it's basic functionality tested and working.
  • Added cut/copy/paste and selection functionality.
  • Fixed file previews.
  • Various bug fixes.

User Manual

Download

You can download a static "just works" binary from the releases section on Github.

Self-Compilation

Most of the important work is taken care of in the Makefile. All you have to do is give the right command.

Dependencies:

  • 'libncurses-dev' (Debian)

Compiling:

  • make for a slim, dynamically linked binary.
  • make release for a static binary.

Installing:

  • make install

Uninstalling CFFM

  • make uninstall

OR

  • sudo rm /bin/cffm
Default Configuration
Key Function
H Move up a directory
L Change into directory / open file
J Move Cursor down file list
K Move Cursor up file list
Q Quit CFFM
: Execute shell command
T Rename File
(bulk rename coming soon)
Space Select File(s)
(single select)
V Visual Mode
(drag select)
X Cut selected
Y Copy selected
P Paste
D Delete selected
R Toggle hidden files
B Toggle border

Configuration

To configure CFFM, locate the file config.h in the source code you downloaded above.

You can modify any #define value in to your liking. This should look familiar to anyone who has used DWM, or similar software. When done, simply re-compile using the above steps and run.

Runtime Customization Options

By default, pressing b allows you to show/hide the border. Of course, you can configure this to your liking in config.h.

CFFM showing a directory tree, file list, and C source preview.
CFFM file manager screenshot
Still frame from the CFFM file browsing demonstration.
CFFM file browsing animation
CFFM config.h showing color values, settings, and key bindings.
CFFM config.h showing color values, settings, and key bindings.
Still frame from the CFFM appearance customization demonstration.
CFFM appearance customization animation
Still frame from the CFFM border visibility demonstration.
CFFM border visibility animation