NcursesFM: modern cmdline file manager


Good news for fans of Midnight Commander, we’ve got another powerful under-development file manager to try out – NcursesFM. It reaps the benefit of being the new kid in the block and has capabilities to make use fo the latest features of the Linux world, including the copy_file_range syscall implemented in kernel 4.5.

As the name suggests, NcursesFM is written in C and ncurses and very few dependencies. NcursesFM implements a lot of runtime scanning to extend its capabilities rather than at compile-time.


  • window resize support
  • 2 tabs support
  • device monitor support that can automount devices without interfering with DE device monitor
  • simple sysinfo monitor
  • bookmarks support (from both $HOME/.config/user-dirs.dirs and $HOME/.config/ncursesFM-bookmarks)
  • add bookmark support
  • everything is done in code (no vforks and exec… other than two, to spawn xdg-open or $EDITOR)
  • libconfig support with a simple config file
  • mount iso files too
  • if xdg-open is found, ncursesFM will open files with xdg-open
  • basic mouse and print support
  • powermanagement inhibition while processing a long job (eg: while pasting a file) to avoid data loss
  • distro package installation support (through packagekit)
  • search support, even files inside archives (using libarchive)
  • compress files
  • fast browse mode: when enabled, you can move inside current dir by typing your desired file name
  • valgrind clean code
  • If built with libconfig support, configuration variables are read from /etc/default/ncursesFM.conf
  • autocompletion scripts
  • quick help and easy to rememebr shortcuts


At the time of writing you have to build NcursesFM from source. However, it’s easy.

Use the following build options according to your preference:

CC={gcc/clang} to choose the compiler. By default, env CC will be used. 
DISABLE_LIBX11=1 to disable libx11 support. 
DISABLE_LIBCONFIG=1 to disable libconfig support. 
DISABLE_LIBSYSTEMD=1 to disable libsystemd (sd-bus) support. 
DISABLE_LIBCUPS=1 to disable libcups support.

To compile and install NcursesFM on Ubuntu, run:

$ sudo apt-get install libncursesw5-dev libarchive-dev pkg-config git build-essential libudev-dev libcups2-dev libconfig-dev libx11-dev libsystemd-dev
$ git clone 
$ cd ncursesFM
$ make 
$ sudo make install

Many of the dependencies may be installed already.


Press <l> for quick help anytime. It also shows the cmdline options. Otherwise, run:

$ ncursesFM –help

The following options can be set in /etc/default/ncursesFM.conf if built with libconfig support:

  • editor -> editor used to open files, in non X environment (or when xdg-open is not available)
  • show_hidden -> whether to show hidden files by default or not. Defaults to 0.
  • starting_directory -> default starting directory.
  • use_default_starting_dir_second_tab -> whether to use “starting_directory” when opening second tab, or to open it in current directory. Defaults to 0.
  • inhibit -> whether to inhibit powermanagement functions. Defaults to 0.
  • starting_helper -> whether to show helper win after program started. Defaults to 1.
  • automount -> whether to enable devices automount. Defaults to 0.
  • loglevel -> to change program loglevel. Defaults to 0.
  • persistent_log -> to enable log persistency across program restarts. Defaults to 0.
  • bat_low_level -> to set threshold to signal user about low battery. Defaults to 15%.
  • border_chars -> to change printed borders’ chars.
  • cursor_chars -> to change printed cursor’s chars.


Features: 4.5/5
Usability: 5/5

On GitHub: NcursesFM

3 thoughts on “NcursesFM: modern cmdline file manager”

  1. one thing which i cant get used to on Linux is that i have to apt-get install 60MB of dependencies to be able to build and finally use a program i like.

    1. You can remove the `-dev` packages once you are done with the compilation.
      Some of the dependencies are optional. I added them so that it’s easy for newbies.
      libsystemd, libx11, libudevd, libcups2, libarchive etc. might already be installed on a regular system.

Leave a Reply

Your email address will not be published. Required fields are marked *