clifm: Command Line Interface File Manager

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

A terminal-based File Manager with multiple panes/tabs interface, basic file operations and mouse support.

[Skip to Readme]


Change log None available
Dependencies base (>=4.11 && <4.12), brick (>=0.36 && <0.38), byteunits (>=0.4 && <0.5), conduit (>=1.3 && <1.4), containers (>=0.5 && <0.6), directory (>=1.3 && <1.4), filepath (>=1.4 && <1.5), lens (>=4.16 && <4.17), optparse-applicative (>=0.14 && <0.15), pointedlist (>=0.6 && <0.7), process (>=1.6 && <1.7), time (>=1.8 && <1.9), vector (>=0.12 && <0.13), vty (>=5.21 && <6) [details]
License BSD-3-Clause
Author pasqu4le
Category System
Home page
Source repo head: git clone git://
Uploaded by pasqu4le at 2018-06-21T10:21:02Z


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Readme for clifm-

[back to package description]

Command Line Interface File Manager

Clifm is a small file manager written in Haskell with a terminal-based interface. It allows you to explore directories in multiple Panes/Tabs and perform basic operations.


Note: this is still an experiment. Directory navigation will do no harm, but double-check before starting operations on your file system. I take no responsibility for what you do with this software.


Note: You may need to install ncurses on your system before using clifm

For ArchLinux the binary from the latest github release should work. For other Linux distro the binary may work as well, or you can build from source.

To build from source you will need GHC and cabal-install. Since clifm is on Hackage you can just use:

$ cabal install clifm

or install from the cloned repository:

$ git clone
$ cd clifm
$ cabal install


Clifm is a brick application, that in turn builds upon vty. As such it supports a large number of terminals (not on Windows), handles resizing and more.

If your terminal supports a mouse you can use it to change Tab/Pane, click a button on the bottom, change your selection or open it (double-click), but using the keyboard you can perform every possible action. This is the list of all the keybindings:

Bottom menu




The actions above will not work only if a prompt is up, or you try to do something not possible.

Command line arguments

You can have a list of command line arguments by running clifm --help.

Starting directory

If you specify nothing clifm will open the current directory, but you can select another directory using --dir-path or -d, for example: clifm -d "/home".

If the directory path is not valid clifm will open on an empty tab.


You can load a theme from a file using --theme or -t, for example: clifm -t "theme/phosphor.ini". If the file does not exists or cannot be loaded clifm will use the default theme.

You can use one of the existing themes in the themes/ folder:

You can also write and use your own themes: copy the themes/template.ini file, fill in the attributes you want to change and delete those you like as default.

Complete explanation from Brick.Themes:

The file format is as follows:

Customization files are INI-style files with two sections, both optional: "default" and "other".

The "default" section specifies three optional fields:

  • "default.fg" - a color specification
  • "" - a color specification
  • "" - a style specification

A color specification can be any of the strings black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, or default.

A style specification can be either one of the following values (without quotes) or a comma-delimited list of one or more of the following values (e.g. "[bold,underline]") indicating that all of the specified styles be used. Valid styles are standout, underline, reverseVideo, blink, dim, and bold.

The other section specifies for each attribute name in the theme the same fg, bg, and style settings as for the default attribute. Furthermore, if an attribute name has multiple components, the fields in the INI file should use periods as delimiters. For example, if a theme has an attribute name ("foo" <> "bar"), then the file may specify three fields:

  • - a color specification
  • - a color specification
  • - a style specification

Any color or style specifications omitted from the file mean that those attribute or style settings will use the theme's default value instead.

Attribute names with multiple components (e.g. attr1 <> attr2) can be referenced in customization files by separating the names with a dot. For example, the attribute name "list" <> "selected" can be referenced by using the string "list.selected".

Threads for directory size computation

Directory size is calculated by visiting a directory tree to sum it's files sizes (using conduit) and it may take a while. For this reason these will be calculated in different threads.

You can limit how many of these threads to have at the same time by using --thread-num or -n, for example: clifm -n 8.

You are likely to have the best results with as many threads as your processor's cores. The default limit is set to 4.


Right now nothing is planned.

Suggestions and requests are always welcome, if you have any or you find a bug please open a new issue.