{"id":22018685,"url":"https://github.com/pasqu4le/clifm","last_synced_at":"2025-07-20T22:07:01.922Z","repository":{"id":59151720,"uuid":"126410801","full_name":"pasqu4le/clifm","owner":"pasqu4le","description":"Command Line Interface File Manager","archived":false,"fork":false,"pushed_at":"2020-09-12T16:51:36.000Z","size":440,"stargazers_count":107,"open_issues_count":1,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-07T05:48:28.234Z","etag":null,"topics":["command-line","commandline-interface","file-manager","filemanager","haskell","haskell-application"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pasqu4le.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-23T00:28:46.000Z","updated_at":"2025-06-06T14:20:17.000Z","dependencies_parsed_at":"2022-09-13T11:00:40.890Z","dependency_job_id":null,"html_url":"https://github.com/pasqu4le/clifm","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/pasqu4le/clifm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasqu4le%2Fclifm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasqu4le%2Fclifm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasqu4le%2Fclifm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasqu4le%2Fclifm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pasqu4le","download_url":"https://codeload.github.com/pasqu4le/clifm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasqu4le%2Fclifm/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266205529,"owners_count":23892478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line","commandline-interface","file-manager","filemanager","haskell","haskell-application"],"created_at":"2024-11-30T05:13:15.305Z","updated_at":"2025-07-20T22:07:01.903Z","avatar_url":"https://github.com/pasqu4le.png","language":"Haskell","funding_links":[],"categories":["Packages"],"sub_categories":["CLI Tools"],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"logo/Logo1.png\" alt=\"clifm\" height=\"250px\"\u003e\u003c/p\u003e\n\n\n\n# Command Line Interface File Manager\nClifm 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.\n\n![screenshot](https://github.com/pasqu4le/clifm/raw/master/screenshot.png)\n\n\u003e Note: 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.\n\n## Installation\n\u003e Note: You may need to install `ncurses` on your system before using clifm\n\nFor ArchLinux the binary from [the latest github release](https://github.com/pasqu4le/clifm/releases/latest) should work.\nFor other Linux distro the binary may work as well, or you can build from source.\n\nTo build from source you will need [GHC](https://www.haskell.org/ghc/) and [cabal-install](http://hackage.haskell.org/package/cabal-install).\nSince clifm is on Hackage you can just use:\n\n```\n$ cabal install clifm\n```\nor install from the cloned repository:\n```\n$ git clone https://github.com/pasqu4le/clifm.git\n$ cd clifm\n$ cabal install\n```\n\n## Features\nClifm is a [brick](https://github.com/jtdaugherty/brick) application, that in turn builds upon [vty](https://github.com/jtdaugherty/vty). As such it supports a large number of terminals (not on Windows), handles resizing and more.\n\nIf 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:\n\n#### Bottom menu\n- L: open Se**l**ection menu\n- A: open T**a**b menu\n- P: open **P**ane menu\n- BackSpace: go **back** to main menu\n- Esc/Q: **Q**uit\n\n#### Selection\n- Enter: Open directory/run executable file/open readable file in editor\n- Ctrl+(X/C): Cut/Copy the selected Item\n- Up/Down Arrow: move the selection in the current Tab\n- PageUp/PageDown: move the selection in the current Tab by one page at a time\n- Home/End: move the selection in the current Tab to beginning or end of list\n- Ctrl+R: **R**ename the selected Item\n- Ctrl+D: **D**elete the selected Item\n- Ctrl+O: **O**pen the selected directory in a New Tab\n- S: **S**how info about the selected Item\n\n#### Tabs\n- Tab/BackTab: Move to the next/previous tab\n- Ctrl+(Left/Right Arrow): Swap current tab's position with the previous/next one\n- Ctrl+V: Paste in the current Tab's directory\n- Ctrl+S: **S**earch for a file/folder in the current Tab's directory\n- K: **K**ill (close) the current Tab\n- M: **M**ake a new directory\n- T: **T**ouch (create an empty) file\n- G: **G**o to another directory\n- E: Open **E**mpty Tab\n- R: **R**efresh the current Tab\n- O: **O**rder by file name/file size/access time/modification time\n- I: **I**nvert order\n\n#### Panes\n- Left/Right Arrow: Focus on the previous/next Pane\n- Ctrl+E: Open **E**mpty Pane\n- Ctrl+K: **K**ill (close) the current Pane\n\nThe actions above will not work only if a prompt is up, or you try to do something not possible.\n\n## Command line arguments\nYou can have a list of command line arguments by running `clifm --help`.\n\n#### Starting directory\nIf 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\"`.\n\nIf the directory path is not valid `clifm` will open on an empty tab.\n\n#### Text Editor\nBy default `clifm` will look for an editor in your environment variables: `$VISUAL` and `$EDITOR` (in this order).\nIf both cannot be found it will try to use `nano`.\n\nYou can select an editor with the option `--editor` or `-e`, for example: `clifm -e nano`\n\n#### Themes\nYou 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.\n\nYou can use one of the existing themes in the `themes/` folder:\n- blackAndWhite.ini\n- paper.ini (inverted blackAndWhite)\n- phosphor.ini (like old monochrome monitors)\n- ocean.ini (very blue)\n\nYou 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.\n\nComplete explanation from [Brick.Themes](https://hackage.haskell.org/package/brick-0.35/docs/Brick-Themes.html):\n\u003e The file format is as follows:\n\u003e\n\u003e Customization files are INI-style files with two sections, both optional: \"default\" and \"other\".\n\u003e\n\u003e The \"default\" section specifies three optional fields:\n\u003e\n\u003e - \"default.fg\" - a color specification\n\u003e - \"default.bg\" - a color specification\n\u003e - \"default.style\" - a style specification\n\u003e\n\u003e 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*.\n\u003e\n\u003e 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*.\n\u003e\n\u003e 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\" \u003c\u003e \"bar\"), then the file may specify three fields:\n\u003e\n\u003e - foo.bar.fg - a color specification\n\u003e - foo.bar.bg - a color specification\n\u003e - foo.bar.style - a style specification\n\u003e\n\u003e Any color or style specifications omitted from the file mean that those attribute or style settings will use the theme's default value instead.\n\u003e\n\u003e Attribute names with multiple components (e.g. attr1 \u003c\u003e attr2) can be referenced in customization files by separating the names with a dot. For example, the attribute name \"list\" \u003c\u003e \"selected\" can be referenced by using the string \"list.selected\".\n\n#### Threads for directory size computation\nDirectory size is calculated by visiting a directory tree to sum it's files sizes (using [conduit](http://hackage.haskell.org/package/conduit)) and it may take a while. For this reason these will be calculated in different threads. \n\nYou can limit how many of these threads to have at the same time by using `--thread-num` or `-n`, for example: `clifm -n 8`.\n\nYou are likely to have the best results with as many threads as your processor's cores. The default limit is set to 4.\n\n## TODOs\nRight now nothing is planned.\n\nSuggestions and requests are always welcome, if you have any or you find a bug please [open a new issue](https://github.com/pasqu4le/clifm/issues/new).\n\nSpecial thanks to [@batarian71](https://github.com/batarian71) for the logo.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasqu4le%2Fclifm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpasqu4le%2Fclifm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasqu4le%2Fclifm/lists"}