.TH "CLIFM" "1" "Apr 30, 2025" "clifm 1.25" "Clifm Manual"
.SH NAME
clifm \- The Command Line File Manager
.SH SYNOPSIS
.B clifm
[\fI\,OPTION\/\fR]... [\fI\,DIR\/\fR]...

.SH INDEX
\fB1.\fR Getting help
.sp
\fB2.\fR Description
.sp
\fB3.\fR Parameters
   . Positional parameters
   . Options
.sp
\fB4.\fR Commands
.sp
\fB5.\fR File Filters (by filename, file type, and MIME type)
.sp
\fB6.\fR Keyboard shortcuts
.sp
\fB7.\fR Theming
.sp
\fB8.\fR Builtin expansions
.sp
\fB9.\fR Tab completion
.sp
\fB10.\fR File opener (third\-party openers are supported)
.sp
\fB11.\fR Shotgun, the file previewer
.sp
\fB12.\fR Auto\-suggestions (including a warning prompt for invalid command names)
.sp
\fB13.\fR Shell functions
.sp
\fB14.\fR Plugins
.sp
\fB15.\fR Autocommands
.sp
\fB16.\fR File tags
.sp
\fB17.\fR Virtual directories
.sp
\fB18.\fR Note on speed
.sp
\fB19.\fR Kangaroo frecency algorithm
.sp
\fB20.\fR Environment
.sp
\fB21.\fR Security
.sp
\fB22.\fR Miscellaneous notes
.sp
\fB23.\fR Files
.sp
\fB24.\fR Examples

.SH 1. GETTING HELP
There are several ways to access help in \fBclifm\fR. Once you are in the program, enter `\fB?\fR` or `\fBhelp\fR` for some basic usage examples, or press \fBF1\fR to access this manpage, \fBF2\fR to go to the \fBCOMMANDS\fR section of this manpage, or \fBF3\fR to jump to the \fBKEYBOARD SHORTCUTS\fR section.
.sp
To get help about some specific topic, type `\fBhelp <TAB>\fR` to get a list of available help topics. Choose the topic you want and then press \fBEnter\fR.
.sp
For a list of available commands along with brief descriptions, type `\fBcmd<TAB>\fR`.
.sp
You can also access help for internal commands using the \fB\-h\fR or \fB\-\-help\fR flags. For example, to get help about the selection function, enter `\fBs \-h\fR` or `\fBs \-\-help\fR`.
.sp
A convenient way to obtain comprehensive information about \fBclifm\fR commands is through the \fBih\fR action, which is bound by default to the interactive help plugin (\fIihelp.sh\fR). Enter `\fBih\fR` to run the plugin (note that it requires \fBfzf\fR(1)) and select the command you wish to learn more about.
.sp
For a quick introduction, please refer to the \fBEXAMPLES\fR section at the end of this document.

.SH 2. DESCRIPTION
\fBClifm\fR is a Command Line Interface File Manager. Its main feature and strength lie in the fact that all input and interacion are conducted through commands typed directly into a prompt. In other words, \fBclifm\fR operates as a Read-Eval-Print Loop (REPL), following this basic structure: \fBR\fRead (user input via the command line), \fBE\fRvaluate/\fBE\fRxecute the command, \fBP\fRrint the results, \fBL\fRoop (repeat the process).
.sp
Unlike most terminal file managers out there, indeed, \fBclifm\fR replaces the traditional Text User Interface (TUI), often referred to as curses or text\-menu based interface, with a straightforward command\-line interface (REPL). This design allows it to function not only as a file manager, but also as a \fBshell extension\fR. You can search for files, copy, rename, remove them, while also performing system tasks such as updating or upgrading your system, adding cron jobs, stopping services, and launching text editors like nano, vi, or emacs.
.sp
In summary, \fBclifm\fR keeps the command line visible and accessible, enhancing it with functionalities specifically tailored for file management.

.SH 3. PARAMETERS
.SH POSITIONAL PARAMETERS
.TP
If you specify a directory as the first non\-option parameter, \fBclifm\fR will start in that directory. Subsequent directory names are used to initialize subsequent workspaces. For example, the command `\fBclifm\ /etc ~/Downloads\fR` instructs \fBclifm\fR to start in the \fI/etc\fR directory (in the first workspace) and to set the second workspace to \fI~/Downloads\fR. Up to 8 positional parameters are supported (further parameters are ignored).
.TP
If no workspace is specified, \fBclifm\fR will use the first workspace. To start in a specific workspace use the \fB\-w\fR option followed by the workspace number. For instance, `\fBclifm -w4 /etc ~/Downloads\fR` will start \fBclifm\fR in the \fI/etc\fR directory within workspace 4, setting the workspace 5 to \fI~/Downloads\fR.
.TP
If no positional parameter is provided and the \fB\-w\fR option is not used, \fBclifm\fR will start in the last visited directory (and in the last active workspace). You can disable this behavior by using the \fB\-\-no\-restore\-last\-path\fR command line switch (or by setting the \fBRestoreLastPath\fR option to \fBfalse\fR in the configuration file), in which case the current directory will be used as starting path and all workspaces will be unset.
.TP
To start always in a specific directory, disregarding the current directory, you can use the \fBStartingPath\fR option in the configuration file.

.SH OPTIONS
.TP
\fBNote\fR: If compiled in POSIX mode, the following list of options does not apply. In this case, run `\fBclifm \-h\fR` to get the actual list of options. (To make sure run `\fBclifm \-v\fR`: if compiled in POSIX mode the version number is followed by "\-POSIX").
.TP
\fB\-a\fR, \fB\-\-show\-hidden[\fR=\fI\,VAL\/\fR]
Show hidden files (filenames starting with '.'). Supported values are: \fBfirst\fR, \fBlast\fR, \fBtrue\fR, and \fBfalse\fR. If no value is specified, it defaults to \fBtrue\fR.
.TP
\fB\-A\fR, \fB\-\-no\-hidden\fR
Do not show hidden files.
.TP
\fB\-b\fR, \fB\-\-bookmarks\-file\fR=\fI\,FILE\/\fR
Set an alternative bookmarks file.
.TP
\fB\-c\fR, \fB\-\-config\-file\fR=\fI\,FILE\/\fR
Set an alternative configuration file.
.TP
\fB\-D\fR, \fB\-\-config\-dir\fR=\fI\,DIR\/\fR
Set an alternative configuration directory (if configuration files do not already exist, they will be created in \fIDIR\fR).
.TP
\fB\-e\fR, \fB\-\-no\-eln\fR
Do not display Entry List Numbers (ELNs) to the left of filenames (note that while ELNs are not printed, they remain accessible and can still be used as usual).
.TP
\fB\-E\fR, \fB\-\-eln\-use\-workspace\-color\fR
Color ELNs using the current workspace color.
.TP
\fB\-f\fR, \fB\-\-dirs\-first\fR
List directories first.
.TP
\fB\-F\fR, \fB\-\-no\-dirs\-first\fR
Do not list directories first.
.TP
\fB\-g\fR, \fB\-\-pager\fR
Enable \fBMas\fR, the builtin pager for file listing.
.TP
\fB\-G\fR, \fB\-\-no\-pager\fR
Disable the file pager.
.TP
\fB\-h\fR, \fB\-\-help\fR
Print this help and exit.
.TP
\fB\-H\fR, \fB\-\-horizontal\-list\fR
List files horizontally (instead of vertically).
.TP
\fB\-i\fR, \fB\-\-no\-case\-sensitive\fR
Ignore case distinctions when listing files.
.TP
\fB\-I\fR, \fB\-\-case\-sensitive\fR
Do not ignore case distinctions when listing files.
.TP
\fB\-k\fR, \fB\-\-keybindings\-file\fR=\fI\,FILE\/\fR
Set an alternative keybindings file.
.TP
\fB\-l\fR, \fB\-\-long\-view\fR
Print file extended metadata next to filenames (long view). The displayed fields can be customized using \fB\-\-prop\-fields\fR (or the \fBPropFields\fR option in the configuration file). Set a custom time/date format with \fB\-\-time\-style\fR (or the \fBTimeStyle\fR option in the configuration file).
.TP
\fB\-L\fR, \fB\-\-follow\-symlinks\-long\fR
When in long view, display information for the files referenced by symbolic links instead of the symbolic links themselves.
.TP
\fB\-m\fR, \fB\-\-dirhist\-map\fR
Enable the directory history map to keep in view previous, current, and next entries in the directory history list.
.TP
\fB\-o\fR, \fB\-\-autols\fR
Automatically list files when changing the current directory with the \fBcd\fR command.
.TP
\fB\-O\fR, \fB\-\-no\-autols\fR
Do not automatically list files when changing the current directory with the \fBcd\fR command.
.TP
\fB\-P\fR, \fB\-\-profile\fR=\fI\,PROFILE\/\fR
Use \fIPROFILE\fR as profile. If \fIPROFILE\fR does not exist, it will be created. The default profile is \fBdefault\fR.
.TP
\fB\-r\fR, \fB\-\-no\-refresh\-on\-empty\-line\fR
Do not refresh the current list of files when pressing \fBEnter\fR on an empty line.
.TP
\fB\-s\fR, \fB\-\-splash\fR
Display the splash screen at startup.
.TP
\fB\-S\fR, \fB\-\-stealth\-mode\fR
In stealth mode (also known as incognito or private mode), no trace is left on the host system. No files are read or created, and all settings revert to their default values. However, most settings can still be controlled via command line options and dedicated environment variables (see the \fBENVIRONMENT\fR section below). Additionally, refer to the \fBhistory\fR command and the \fB--no-history\fR command line switch for more options.
.TP
\fB\-t\fR, \fB\-\-disk\-usage\-analyzer\fR
Run in disk usage analyzer mode. This is equivalent to using \fB\-\-sort=size \-\-long\-view \-\-full\-dir\-size \-\-no\-dirs\-first\fR. The recursive size of the current directory will be displayed after the list of files. You can toggle this mode in place by pressing \fBAlt+Tab\fR (or \fBCtrl+Alt+i\fR).
.TP
\fB\-T\fR, \fB\-\-trash\-dir\fR=\fI\,DIR\/\fR
Set an alternative trash directory.
.TP
\fB\-v\fR, \fB\-\-version\fR
Print version details and exit.
.TP
\fB\-w\fR, \fB\-\-workspace\fR=\fI\,NUM\/\fR
Start in workspace \fINUM\fR. By default, \fBclifm\fR will recover the last visited directory for each workspace. You can override this behavior using positional parameters to start in workspace \fINUM\fR and in the specified directory (e.g.: `\fBclifm -w4 /etc\fR`). Consult the \fBPOSITIONAL PARAMETERS\fR section above for more information.
.TP
\fB\-x\fR, \fB\-\-no\-ext\-cmds\fR
Disallow the use of external (shell) commands.
.TP
\fB\-y\fR, \fB\-\-light\-mode\fR
Enable the light mode to speed up \fBclifm\fR (see the \fBNOTE ON SPEED\fR section below).
.TP
\fB\-z\fR, \fB\-\-sort\fR=\fI\,METHOD\/\fR
Sort files by \fIMETHOD\fR, where \fIMETHOD\fR is one of: 0 = none, 1 = name, 2 = size, 3 = atime, 4 = btime, 5 = ctime, 6 = mtime, 7 = version, 8 =  extension, 9 = inode, 10 = owner, 11 = group, 12 = blocks, 13 = links, or 14 = type. Both numbers and names are accepted. For example, you can use \fB\-\-sort=9\fR or \fB\-\-sort=inode\fR.
.TP
\fB\-\-bell\fR=\fI\,TYPE\/\fR
Set the terminal bell type, where \fITYPE\fR is one of: 0 = none, 1 = audible, 2 = visible (requires readline >= 8.1), and 3 = flash. Defaults to \fB2\fR (\fBvisible\fR), and, if not available, \fB0\fR (\fBnone\fR). Only numbers are allowed.
.TP
\fB\-\-case\-sens\-dirjump\fR
Do not ignore case when consulting the jump database (via the \fBj\fR command).
.TP
\fB\-\-case\-sens\-path\-comp\fR
Enable case sensitive path completion.
.TP
\fB\-\-cd\-on\-quit\fR
Write the last visited directory to \fI$XDG_CONFIG_HOME/clifm/.last\fR for later access by the corresponding shell function at program exit. Consult the \fBSHELL FUNCTIONS\fR section below for more information.
.TP
\fB\-\-color\-scheme\fR=\fI\,NAME\/\fR
Use the color scheme specified by \fINAME\fR.
.TP
\fB\-\-color\-links\-as\-target\fR
Color symbolic links using the color of the target file (an '@' character is prepended to the filename to mark it as a symbolic link).
.TP
\fB\-\-cwd\-in\-title\fR
Print the current working directory in the terminal window title (otherwise, only the program name is printed).
.TP
\fB\-\-data\-dir=\fI\,DIR\/\fR
Load data files, such as plugins, color schemes, and default configuration files, from \fIDIR\fR (this is by default the installation directory, usually \fI/usr/share/clifm\fR).
.TP
\fB\-\-desktop\-notifications[=\fISTYLE\fR]
Enable desktop notifications. The notification style can be optionally specified: \fBkitty\fR (requires the Kitty terminal or a terminal supporting the Kitty Notifications Protocol), \fBsystem\fR, or \fBfalse\fR. If \fISTYLE\fR is omitted, it defaults to \fBsystem\fR. Enter `\fBhelp desktop\-notifications\fR` in \fBclifm\fR for more information.
.TP
\fB\-\-disk\-usage\fR
Show disk usage of the filesystem where the current directory resides, in the format \fIFREE/TOTAL (FREE %) TYPE DEVICE\fR.
.TP
\fB\-\-full\-dir\-size\fR
Display recursive directory sizes (long view only).
.TP
\fB\-\-fuzzy\-algo\fR=\fI\,VER\/\fR
Fuzzy matching algorithm, where \fIVER\fR is either \fB1\fR (faster, but not Unicode aware), or \fB2\fR (slower, Unicode aware). Bear in mind however that the second algorithm (default) will fallback to the first one (because it is faster) whenever the query string contains only ASCII characters, to minimize the performance penalty.
.TP
\fB\-\-fuzzy\-matching\fR
Enable fuzzy matching for filename/path completions and suggestions.
.TP
\fB\-\-fzfpreview\-hidden\fR
Enable file previews for tab completion (\fBfzf\fR mode only) with the preview window hidden (toggle it by pressing \fBAlt+p\fR).
.TP
\fB\-\-fzftab\fR
Use \fBfzf\fR(1) to display completion matches.
.TP
\fB\-\-fnftab\fR
Use \fBfnf\fR(1) to display completion matches.
.TP
\fB\-\-icons\fR
Enable icons.
.TP
\fB\-\-icons\-use\-file\-color\fR
Instead of a specific color, icons use the color of the corresponding filename. Useful when building custom color schemes, this option implies \fB\-\-icons\fR, and is effective only when compiled with support for icons\-in\-terminal or Nerdfonts. The default build is compiled with emoji\-icons support, in which case this option is ignored, as Unicode icons have their own builtin colors.
.TP
\fB\-\-int\-vars
Allow the use of internal variables (e.g.: `\fBVAR=/bin; cd $VAR\fR`).
.TP
\fB\-\-list\-and\-quit\fR
List files and quit. Useful in conjunction with positional parameters (e.g.: `\fBclifm \-\-list\-and\-quit /etc\fR`). If no positional parameter is provided, the current directory is used instead.
.TP
\fB\-\-ls\fR
.br
Short for \fB\-\-list\-and\-quit\fR.
.TP
\fB\-\-lscolors\fR
Read file colors from the \fBLS_COLORS\fR environment variable (the FreeBSD \fBLSCOLORS\fR format is also supported). Note that clifm-specific colors (like empty directories or inaccessible files) will be disabled. Note also that colors for specific filenames, as defined in \fBLS_COLORS\fR, are not supported. For more information about \fBLS_COLORS\fR, consult \fBdircolors\fR(1), or refer to the \fBls\fR(1) FreeBSD manpage for \fBLSCOLORS\fR.
.TP
\fB\-\-max\-dirhist\fR
Maximum number of visited directories to remember.
.TP
\fB\-\-max\-files\fR=\fI\,NUM\/\fR
List only up to \fINUM\fR files. Use \-1 or \fBunset\fR to remove this limit (default). See the \fBmf\fR command for a more detailed description.
.TP
\fB\-\-mimelist\-file\fR=\fI\,FILE\/\fR
Set \fIFILE\fR as \fBLira\fR\'s configuration file (see the \fBFILE OPENER\fR section below for more information).
.TP
\fB\-\-mnt\-udisks2\fR
Use \fBudisks2\fR(1) instead of \fBudevil\fR(1) (default) for the \fBmedia\fR command.
.TP
\fB\-\-no\-bold\fR
Disable bold colors (applies to all color schemes).
.TP
\fB\-\-no\-cd\-auto\fR
By default, \fBclifm\fR changes directories by just entering their filenames. This option forces the use of the \fBcd\fR command.
.TP
\fB\-\-no\-classify\fR
By default, \fBclifm\fR appends a file type indicator character to filenames when running without colors (see the \fB\-\-no\-color\fR option below) and a directory indicator (along with a file counter) when running with colors. Classification characters are as follows: 
.sp
 /n: directory (n = file counter)
 @:  symbolic link
 !:  broken symbolic link
 |:  FIFO/pipe
 =:  socket
 *:  executable file
 +:  block device
 -:  character device
 ?:  unknown file type
.sp
Use this option to disable file type classification. Note that this option also disables the file counter.
.TP
\fB\-\-no\-clear\-screen\fR
Do not clear the screen before listing files.
.TP
\fB\-\-no\-color\fR
Disable colors.
.TP
\fB\-\-no\-columns\fR
Disable columned file listing (use a single column).
.TP
\fB\-\-no\-file\-cap\fR
Do not check file capabilities when listing files (only meaningful for performance reasons).
.TP
\fB\-\-no\-file\-ext\fR
Do not check file extensions (mostly used to colorize specific filenames) when listing files.
.TP
\fB\-\-no\-file\-counter\fR
Disable the file counter for directories (speeding up the listing process: counting files in directories is particularly expensive).
.TP
\fB\-\-no\-follow\-symlinks\fR
Do not follow symbolic links when listing files (overrides both \fB\-\-follow\-symlinks\-long\fR and \fB\-\-color\-links\-as\-target\fR).
.TP
\fB\-\-no\-fzfpreview\fR
Disable file previews for tab completion (fzf mode only).
.TP
\fB\-\-no\-highlight\fR
Disable syntax highlighting (to customize highlighting colors, see the \fBCOLOR CODES\fR section below).
.TP
\fB\-\-no\-history\fR
Do not write commands to the history file (see also the \fBHistIgnore\fR option in the configuration file).
.TP
\fB\-\-no\-open\-auto\fR
By default, \fBclifm\fR opens files (using the default associated application) by just entering their filenames. Use this option to force the use of the \fBopen\fR command. Consult the \fBmime\fR command and the \fBFILE OPENER\fR section for more information about default associated applications.
.TP
\fB\-\-no\-refresh\-on\-resize\fR
Do not attempt to refresh the list of files when the window is resized.
.TP
\fB\-\-no\-restore\-last\-path\fR
By default, \fBclifm\fR saves the last visited directory for each workspace to restore it in the next session. Use this option to disable this behavior.
.TP
\fB\-\-no\-suggestions\fR
Disable the auto\-suggestions system.
.TP
\fB\-\-no\-tips\fR
Do not display startup tips.
.TP
\fB\-\-no\-truncate\-names\fR
Do not truncate filenames (see the \fBMaxFilenameLen\fR option in the configuration file).
.TP
\fB\-\-no\-unicode\fR
Do not use Unicode decorations.
.TP
\fB\-\-no\-warning\-prompt\fR
Disable the warning prompt (used to highlight invalid command names).
.TP
\fB\-\-no\-welcome\-message\fR
Disable the welcome message.
.TP
\fB\-\-only\-dirs\fR
List directories only.
.TP
\fB\-\-open\fR=\fI\,FILE\/\fR
Run as a standalone file opener: open \fIFILE\fR and exit, where \fIFILE\fR can be a regular file or a directory, using either standard notation (\fI/dir/file\fR), the file URI scheme (\fIfile:///dir/file\fR), or a URL (\fIwww.domain\fR or \fIhttps://domain\fR).
.TP
\fB\-\-opener\fR=\fI\,APPLICATION\/\fR
Use \fIAPPLICATION\fR (e.g.: \fBrifle\fR or \fBxdg\-open\fR) as file opener/launcher (instead of \fBLira\fR, \fBclifm\fR's default opener).
.TP
\fB\-\-pager\-view\fR=\fI\,MODE\/\fR
List files in the pager according to \fIMODE\fR. Supported values are: \fBauto\fR (use the current listing mode - this is the default), \fBlong\fR (list files in long view), and \fBshort\fR (list files in short view).
.TP
\fB\-\-physical\-size\fR
Display physical file sizes (device usage) instead of logical sizes (apparent size).
.TP
\fB\-\-preview\fR=\fI\,FILE\/\fR
Display a preview of \fIFILE\fR (via \fBShotgun\fR) and exit. Use \fB\-\-shotgun\-file\fR to set an alternative configuration file. Consult the \fBSHOTGUN\fR section below for more information.
.TP
\fB\-\-print\-sel\fR
Print the list of selected files after the file list. The maximum number of selected files to be printed can be specified using the \fBMaxPrintSelfiles\fR option in the configuration file (by default, this option is set to 0 (auto), meaning it will never exceed half the terminal height).
.TP
\fB\-\-prop\-fields\fR=\fI\,FORMAT\/\fR
Set fields to be displayed in long view. For information on how to construct this format string consult the \fBPropFields\fR option in the configuration file.
.TP
\fB\-\-ptime\-style\fR=\fI\,STYLE\/\fR
Time/date style used by the \fBp\fR/\fBpp\fR command and the \fB\-\-stat\fR/\fB\-\-stat\-full\fR command line switches. Available styles: \fBdefault\fR, \fBiso\fR, \fBlong-iso\fR, \fBfull\-iso\fR, \fBfull\-iso\-nano\fR, and \fB+FORMAT\fR (FORMAT is interpreted like in \fBstrftime\fR(3). Nano-second precision is available via the \fB%N\fR modifier, like in \fBdate\fR(1)).
.TP
\fB\-\-readonly\fR
Run in read\-only mode (internal commands able to modify the filesystem are disabled). Disabled commands are: \fBac\fR, \fBad\fR, \fBbb\fR, \fBbl/bleach\fR, \fBbr/bulk\fR, \fBc\fR, \fBdup\fR, \fBl\fR, \fBle\fR, \fBm\fR, \fBmd\fR, \fBn/new\fR, \fBoc\fR, \fBpaste\fR, \fBpc\fR, \fBr\fR, \fBrr\fR, \fBt/trash\fR, \fBtag\fR, \fBte\fR, \fBu/untrash\fR, and \fBvv\fR, plus the shell commands \fBcp\fR, \fBrm\fR, \fBmv\fR, \fBln\fR, \fBmkdir\fR, \fBrmdir\fR, \fBlink\fR, and \fBunlink\fR.
.TP
\fB\-\-report\-cwd\fR
Report the current directory to the underlying terminal (using the \fBOSC-7\fR escape sequence, not supported by all terminals).
.TP
\fB\-\-rl\-vi\-mode\fR
Set readline to vi editing mode (defaults to emacs editing mode).
.TP
\fB\-\-secure\-cmds\fR
Sanitize commands passed to the OS to mitigate command injection attacks (\fB\-\-secure\-env\fR is implied). Consult the \fBSECURITY\fR section below for more information.
.TP
\fB\-\-secure\-env\fR
Run \fBclifm\fR in a secure environment (regular mode). Consult the \fBSECURITY\fR section below.
.TP
\fB\-\-secure\-env\-full\fR
Run \fBclifm\fR in a secure environment (full mode). Consult the \fBSECURITY\fR section below.
.TP
\fB\-\-sel\-file\fR=\fI\,FILE\/\fR
Set \fIFILE\fR as the selections file.
.TP
\fB\-\-share\-selbox\fR
By default, each user profile has a private Selection Box. Use this option to make the Selection Box common to all user profiles.
.TP
\fB\-\-shotgun\-file\fR=\fI\,FILE\/\fR
Set \fIFILE\fR as the shotgun configuration file. See the \fBSHOTGUN\fR section below for more information.
.TP
\fB\-\-si\fR
.br
Display file sizes in SI units (powers of 1000) instead of IEC units (powers of 1024).
.TP
\fB\-\-smenutab\fR
Use \fBsmenu\fR(1) to display completion matches.
.TP
\fB\-\-sort\-reverse\fR
Sort files in reverse order (e.g.: z\-a instead of a\-z).
.TP
\fB\-\-stat\fR \fI\,FILE\/\fR...
Run the \fBp\fR command on \fIFILE\fR(s) and exit. This must be the \fBlast option\fR on the command line. Use \fB\-\-ptime\-style\fR to set a custom date/time format.
.TP
\fB\-\-stat\-full\fR \fI\,FILE\/\fR...
Same as \fB\-\-stat\fR, but it runs the \fBpp\fR command (instead of \fBp\fR) on \fIFILE\fR(s).
.TP
\fB\-\-stdtab\fR
Use the standard mode (readline\'s builtin) for tab completion.
.TP
\fB\-\-time\-style\fR=\fI\,STYLE\/\fR
Time/date style used in long view. Available styles: \fBdefault\fR, \fBrelative\fR, \fBiso\fR, \fBlong-iso\fR, \fBfull-iso\fR, \fB+FORMAT\fR (FORMAT is interpreted like in \fBstrftime\fR(3)).
.TP
\fB\-\-trash\-as\-rm\fR
Make the \fBr\fR command move files to the trash instead of removing them.
.TP
\fB\-\-unicode\fR
By default, Unicode decorations are used if Unicode support is detected for the running terminal. If no support is detected, you can use this option to force the use of Unicode decorations.
.TP
\fB\-\-virtual\-dir\fR=\fI\,PATH\/\fR
Use \fIPATH\fR as \fBclifm\fR\'s virtual directory.
.TP
\fB\-\-virtual\-dir\-full\-paths\fR
Print filenames in virtual directories as absolute paths instead of just basenames.
.TP
\fB\-\-vt100\fR
Run in VT100 compatibility mode (use this option if running on a really ancient terminal emulator).
.PP
Options precedence order: 1) command line flags; 2) configuration file; 3) default values.

.SH 4. COMMANDS
Help for all commands listed here can be accessed via the \fB\-h\fR or \fB\-\-help\fR options. For example, use `\fBp \-\-help\fR` to get help about the \fBproperties\fR function.
.sp
\fBNote 1:\fR ELN = Entry List Number. For example, in the line "12 chocolatebox" (when listing files), 12 is the ELN corresponding to the file named "chocolatebox". The slash followed by a number (/xx) after directories and symbolic links to directories (the file counter) indicates the number of files in the corresponding directory, excluding self and parent directories ("." and ".." respectively).
.sp
\fBNote 2:\fR In case of ELN\-filename conflict, the backslash can be used to prevent ELN expansion. For example, if there are at least two files and one of them is named \fI2\fR, \fBclifm\fR cannot determine in advance if the command refers to the ELN 2 or the filename \fI2\fR. To specify the ELN, simply write the ELN number (e.g. `\fBs\ 2\fR`). To refer to the filename, escape it using the backlash character: `\fBs\ \\2\fR`.
.sp
\fBNote 3:\fR \fBClifm\fR supports \fBfused parameters\fR for internal commands taking an ELN or range of ELNs as parameters. Much like short options for command line programs, you can omit the space between internal commands and the corresponding ELN passed as argument. For example, you can write \fICMDELN\fR instead of \fICMD\ ELN\fR. Thus, `\fBo12\fR` or `\fBs1\-5\fR` can be used instead of `\fBo\ 12\fR` and `\fBs\ 1\-5\fR, respectively. Be aware that omitting the space character will disable tab completion and suggestions for ELNs. If there is a file named \fIo12\fR (more generally, \fICMDELN\fR), and if you want to refer to this file instead of a \fBclifm\fR command, escape the filename to prevent the split: `\fB\\o12\fR`.
.TP
.B \fIFILE/DIR\fR
If the \fBautocd\fR and/or \fBauto-open\fR functions are enabled (default), open \fIFILE\fR or change directory to \fIDIR\fR. In other words, `\fBFILE\fR` amounts to `\fBopen\ FILE\fR` (or `\fBo\ FILE\fR`), and `\fBDIR\fR` to `\fBcd\ DIR\fR`. ELNs, of course, are allowed. For example: `\fB12\fR`.
.TP
.B /\fIPATTERN\fR [\fI\-FILETYPE\fR] [-x] [\fIDIR\fR]
This is the \fBquick search\fR function. Type `\fB/\fR` followed by a glob or (extended) regular expression, and \fBclifm\fR will list all matches in the current directory. For example, both `\fB/*.pdf\fR` and `\fB/.pdf$\fR` expressions will list all PDF files in the current directory, the former using wildcards, and the second a regular expression.
.sp
You can list previously used search patterns using the TAB key: `\fB/*<TAB>\fR`.
.sp
\fBNote 1\fR: By default, the search function attempts to resolve a pattern first as glob, and then, if no matches are found, as a regular expression. This behavior can be customizad in the configuration file, using the \fBSearchStrategy\fR option.
.sp
\fBNote 2\fR: If no further parameter is provided, but only a glob pattern (wildcards), you can expand the pattern into the corresponding matches by hitting the TAB key. For example, to list all C files in the current directory: `\fB/*.c<TAB>\fR`.
.sp
\fBNote 3\fR: Expressions containing no pattern metacharacter are automatically transformed into a glob/regular expression (depending on the value of the \fBSearchStrategy\fR option). For example, `\fB/test\fR` becomes `\fB*test*\fR` or `\fB/.*test.*\fR`.
.sp
\fB1. Case sensitivity\fR
.sp
By default, regular expressions are case insensitive (glob expressions, by contrast, are always case sensitive). However, you can enable case sensitive search by setting the \fBCaseSensitiveSearch\fR option to \fBtrue\fR in the configuration file.
.sp
\fB2. Destination directory\fR
.sp
To search for files in any directory other than the current directory, specify the directory name as a further parameter (\fIDIR\fR). For example, enter `\fB/^A\ 7\fR` to search for all files starting with \'A\' in the directory corresponding to the ELN 7.
.sp
\fB3. File type filter\fR
.sp
The result of the search can be further filtered by specifying a filter type: \fB-b\fR, \fB-c\fR, \fB-d\fR, \fB-f\fR, \fB-l\fR, \fB-p\fR, \fB-s\fR, \fB-O\fR, and \fB-P\fR (block device, character device, directory, regular file, symbolic link, FIFO/pipe, socket, door (Solaris), and port (Solaris) respectively. For example, `\fB/[.\-].*d$\ \-d Documents/\fR` will list all directories containing a dot or a dash and ending with \'d\' in the directory named \fIDocuments\fR.
.sp
\fB4. Invert matching\fR
.sp
Prepend the exclamation mark (!) to invert the meaning of a given search pattern. For example: `\fB!.*s$\ \-d\ /etc\fR` will match all directories in \fI/etc\fR \fBnot\fR ending with \'s\', just as `\fB!D*\fR` will match all files in the current directory \fBnot\fR starting with \'D\'.
.sp
\fB5. Recursive search\fR
.sp
To perform a recursive search use the \fB\-x\fR parameter, and, optionally, a search path (\fIDIR\fR) (file type filter is not allowed). The search will be performed using \fBfind\fR(1) as follows: \fBfind\ \fIDIR\ MODE PATTERN\fR. If no search path is provided, the search is executed starting in the current directory. Otherwise, the search starts in \fIDIR\fR. \fIMODE\fR is one of:
.sp
 \-name: if \fBSearchStrategy\fR is not \fBregex\-only\fR and \fBCaseSensitiveSearch\fR is set to \fBtrue\fR
.sp
 \-iname: if \fBSearchStrategy\fR is not \fBregex\-only\fR and \fBCaseSensitiveSearch\fR is set to \fBfalse\fR
.sp
 \-regex: if \fBSearchStrategy\fR is \fBregex\-only\fR and \fBCaseSensitiveSearch\fR is set to \fBtrue\fR
.sp
 \-iregex: if \fBSearchStrategy\fR is \fBregex\-only\fR and \fBCaseSensitiveSearch\fR is set to \fBfalse\fR
.TP
.B ;\fR[\fICMD\fR], \fB:\fR[\fICMD\fR]
If \fICMD\fR is not specified, run the system shell in the current directory. If \fICMD\fR is specified, skip all \fBclifm\fR expansions (see the \fBBUILT\-IN EXPANSIONS\fR section below) and run the input string (\fICMD\fR) as is via the default system shell (consult the \fBMISCELLANEOUS NOTES\fR section for information on how shell commands are executed).
.TP
.B ac, ad \fIFILE\fR...
Archive/compress and dearchive/decompress one or multiple files and/or directories.
.sp
The archiver function brings two modes: \fBac\fR, to generate archives or compressed files, and \fBad\fR, to decompress or dearchive files, either just listing, extracting, recompressing, or mounting their content. In this latter case, the mountpoint used automatically is \fI$HOME/.config/clifm/PROFILE/mounts/ARCHIVE_NAME\fR.
.sp
Example: `\fBac\ sel\fR`, `\fBac\ 4\-25\ myfile\fR`, or `\fBad\ *.tar.gz\fR`.
.sp
Multiple archive/compression formats are supported, including Zstandard. Note that when it comes to ISO 9660 files only a single file is supported.
.sp
The archive mount function for non ISO files depends on \fBarchivemount\fR, while the remaining functions depend on \fBatool\fR and other third\-party utilities for achieve formats support, for example, \fBp7zip\fR. \fBp7zip\fR is also used to manage most decompressing options for ISO 9660 files, except for mount, in which case \fBmount(8)\fR is used. Creation of ISO files is done via \fBgenisoimage\fR(1). For more information consult \fBatool\fR(1), \fBarchivemount\fR(1), \fBzstd\fR(1), and \fB7z\fR(1).
.TP
.B acd, autocd \fR[on | off | status]
Toggle the autocd function. If set to on, `\fBDIR\fR` amounts to `\fBcd\ DIR\fR`.
.TP
.B actions \fR[list | edit [\fIAPP\fR]]
To list available actions (or plugins) use the \fBlist\fR subcommand. Note that, since \fBlist\fR is the default action, it can be omitted.
.sp
Use the \fBedit\fR subcommand to add, remove or modify custom actions (using \fIAPP\fR if specified or the default associated application for text files otherwise).
.sp
The aim of this function is to allow the user to easily add custom commands and functions to \fBclifm\fR. In other words, the actions function is a plugins capability.
.sp
This is the general procedure: \fBa)\fR edit the actions file (by running `\fBactions edit\fR`) and bind a custom action name to an executable file (written in any language you want, be it a shell or Python script, a C program or whatever you like). For example, "myaction=myscript.sh". \fBb)\fR Drop the corresponding script (in our example, \fImyscript.sh\fR) into the plugins directory, usually, \fI~/.config/clifm/plugins\fR (see the \fBFILES\fR section below). \fB3)\fR Call the script using the custom action name defined before as if it were any other command: run `\fBmyaction\fR`, and \fImyscript.sh\fR will be executed.
.sp
Note that all arguments passed to the action command (\fBmyaction\fR) will be passed to the script or program as well (\fImyscript.sh\fR), which is executed via the system shell (consult the \fBMISCELLANEOUS NOTES\fR section for information on how shell commands are executed).
.sp
To assist the user when writing plugins, \fBclifm\fR's state information is exported via environment variables while running plugins. For example, \fBCLIFM_LONG_VIEW\fR is set to 1 if currently running in long view (see the \fBENVIRONMENT\fR section for the complete list of exported values).
.sp
The plugins bundled with \fBclifm\fR (take a look at the plugins directory) can be used as a starting point to create new plugins.
.TP
.B alias \fR[import \fIFILE\fR | ls, list | \fINAME\fR]
With no argument (or with \fBls,list\fR parameters), it prints the list of available aliases. To get the description of a specific alias enter `\fBalias\fR` followed by the alias name. To write a new alias simply enter \fBedit\fR (or press \fBF10\fR) to open the configuration file and add a line like this: "alias name=\'command args...\'" or "alias name=\'directory\'".
.sp
To import aliases from a file, provided it contains aliases in the specified form (i.e. the POSIX syntax for the \fBalias\fR shell command), use the \fBimport\fR parameter. Aliases conflicting with some of the internal commands will not be imported.
.sp
However, a neat usage for the \fBalias\fR function is not so much to bind short keys to commands, but to files and directories visited regularly. In this way, it is possible to bind as many files or directories, no matter how deep they are in the filesystem, to very short strings, even single characters. For example, "alias w=\'/some/file/deep/in/the/filesystem\'". Now, no matter where you are, you can enter `\fBw\fR`, provided \fBautocd\fR and/or \fBauto\-open\fR function is enabled, to access the file or directory you want. Theoretically at least, this procedure can be repeated until the system memory is exhausted.
.sp
To create multiple aliases for files at once, this is the recommended procedure: \fB1)\fR Select all files you want to alias with the \fBsel\fR command: `\fBs\ file1\ file2\ file3\ ...\fR`. \fB2)\fR Export the selected files into a temporary file running `\fBexp\ sel\fR`; \fB3)\fR Edit this file to contain only valid alias lines:

 alias a1=\'file1\'
 alias b1=\'file2\'
 alias c1=\'file3\'

\fBNote\fR: Make sure alias names do not conflict with other commands, either internal or external. To bypass the conflicts check, performed automatically by the `\fBalias import\fR` command, you can edit the aliases file manually (\fBF10\fR).

\fB4)\fR Finally, import this file with the \fBalias\fR command: `\fBalias\ import\ tmp_file\fR`. Now you can access any of these files by entering just a few characters: `\fBa1\fR`, `\fBb1\fR`, and `\fBc1\fR`.
.TP
.B auto \fR[list | none | unset | \fIOPTION=VALUE\fR...]
Set a temporary autocommand for the current directory.
.sp
Unlike \fBpermanent\fR autocommands, defined in the configuration file via the \fBautocmd\fR keyword (see the \fBAUTOCOMMANDS\fR section below), options set via the \fBauto\fR command are \fBtemporary\fR, i.e., valid only for the current directory and the current session.
.sp
Options set via this command take precedence over both permament autocommands and regular options (set either via the command line or the configuration file).
.sp
\fBExamples\fR
.sp
List available autocommands
  \fBauto list\fR
.sp
List files in the current directory in long view
  \fBauto lv=1\fR
.sp
List only PDF files, set the color scheme to nord, and sort files by size
  \fBauto ft=.*\.pdf$,cs=nord,st=size\fR
.sp
The same list of options can be specified sequentially (i.e., previous options are preserved)
  \fBauto ft=.*\.pdf$
  auto cs=nord
  auto st=size\fR
.sp
Unset the files filter and the color scheme, and change sort to blocks
  \fBauto ft=,cs=,st=blocks\fR
.sp
Unset all temporary autocommands previously set for the current directory
  \fBauto unset\fR
.sp
Reload the current directory ignoring all autocommands (including permanent autocommands)
  \fBauto none\fR
.sp
For the list of available option codes consult the \fBAUTOCOMMANDS\fR section or enter `\fBhelp autocommands\fR`.
.TP
.B ao, auto\-open \fR[on | off | status]
Toggle the auto\-open function. If set to on, `\fBFILE\fR` amounts to `\fBopen\ FILE\fR`.
.TP
.B b, back \fR[h, hist | clear | !\fIELN\fR]
Unlike `\fBcd\ ..\fR`, which changes to the parent directory of the current directory, this command (with no argument) changes to the previously visited directory. You can also use \fBAlt+j\fR or \fBShift-Left\fR.
.sp
\fBClifm\fR keeps a record of all visited directories (to prevent a directory from being added to the directory history list use the \fBDirhistIgnore\fR option in the main configuration file). You can see this list by typing `\fBb\ hist\fR` or `\fBb\ h\fR`, and you can access any element in this list by simply passing the corresponding ELN in this list (preceded by an exclamation mark) to the \fBback\fR command. Example:
        :) > ~ $ bh
        1 /home/user
        2 /etc
        3 /proc
        :) > ~ $ b !3
        :) > /proc $
.sp
\fBNote:\fR The highlighted line (by default printed in bold cyan) indicates the current position of the \fBback\fR function in the directory history list.
.sp
Finally, you can also clear this history list by entering `\fBb\ clear\fR`.
.sp
The best way of navigating the directory history list, however, is using the \fBdirectory jumper\fR function (invoked by the \fBj\fR command). You can also take a look at the \fBdh\fR command.
.sp
Use the \fBf\fR (or \fBforth\fR) command to move forward, instead of backward, in the directory history list.
.TP
.B bb, bleach \fIFILE\fR...
\fBBleach\fR is a builtin filenames sanitizer (based on detox [\fIhttps://github.com/dharple/detox\fR]), whose aim is to rename filenames using only ASCII characters.
.sp
\fBBleach\fR sanitizes filenames either by removing extended\-ASCII/Unicode characters without an ASCII alternative/similar character, or by translating these characters into an alternative ASCII character based on familiarity/similarity.
.sp
These following simple rules are used to compose sanitized filenames:
    \- NUL (\\0) and slash (/) characters are completely disallowed
    \- Only characters from the \fBPortable Filename Characters Set\fR (a\-zA\-Z0-9._\-) are allowed
    \- { [ ( ) ] } are replaced by a dash (\-). Everything else is replaced by an underscore (_)
    \- Unicode characters are translated, whenever possible, into an ASCII replacement. Otherwise, they are just ignored. For example, an upper case A with diacritic (accent, umlaut, diaresis, and so on) will be replaced by an ASCII A, but the smiley face emoji will be simply ignored. A few special signs will be translated into text, for instance, the pound sign will be replaced by "_pound_" and the Euro symbol by "EUR". Translations are made via a translation table (see the \fIcleaner_table.h\fR in the source code).
    \- Filenames never start with a dash (\-)
    \- Files named . and .. are not allowed
    \- Append .bleach to single character filenames
    \- Do not let a replacement filename start with a dot (hidden) if the original does not
    \- Max filename length is NAME_MAX (usually 255)
.sp
Modified filenames will be listed on the screen asking the user for confirmation, allowing besides to edit (by pressing 'e') the list of modified filenames via a text editor.
.sp
If the replacement filename already exists, a dash and a number (starting from 1) will be appended. E.g.: file\-3.
.TP
.B bd \fR[\fINAME\fR]
\fBbd\fR is the \fBbackdir\fR function: it takes you back to the parent directory matching \fINAME\fR.
.sp
With no arguments, \fBbd\fR lists all parent directories relative to the current directory, allowing the user to select an entry. Otherwise, it checks the absolute current directory against the provided query string (\fINAME\fR): if only one match is found, it automatically changes to this directory; if multiple matches are found, the list of matches is presented to the user in a selection menu. If \fINAME\fR is a directory name, \fBbd\fR just changes to this directory, be it a parent of the current directory or not.
.sp
Tab completion and suggestions are available for this function.
.sp
\fBExample\fR:
.sp
Provided the current directory is \fI/home/user/git/repositories/lambda\fR, entering `\fBbd git\fR` will take you immediately to \fI/home/user/git\fR.
.sp
Note that there is no need to type the entire directory name; if the query is unambiguous, only a few characters, and even just one, suffices to match the appropriate directory. In our example, `\fBbd g\fR` is enough to take you to \fI/home/user/git\fR, just as `\fBbd h\fR` will take you to \fI/home\fR.
.sp
The query string can match any part of a directory name: `\fBbd er\fR`, for instance, will take you to \fI/home/user\fR, since it is an unambiguous query.
.TP
.B bl \fIFILE\fR...
Create symbolic links (in the current directory) for each specified file. For example, to create symbolic links in the directory \fIdir\fR for all PNG files in the current directory, issue these commands: `\fBs *.png\fR`, `\fBcd dir\fR`, and then `\fBbl sel\fR`.
.TP
.B bm, bookmarks \fR[a, add \fIFILENAME\fR \fINAME\fR [\fISHORTCUT\fR] | d, del \fINAME\fR | e, edit [\fIAPP\fR] | \fINAME\fR, \fISHORTCUT\fR]
Bookmarks can be managed either from the bookmark manager screen or from the command line.
.sp
\fB1. The bookmark manager screen\fR
.sp
To access the bookmark manager screen enter \fIbm\fR. Here you can cd to the desired bookmark by entering either ELN or filename (regular files can be bookmarked as well). In this screen you can also add, remove, or edit your bookmarks by entering 'e' to edit the bookmarks file (which is simply a list of lines with this format: \fINAME:PATH\fR. E.g.: "docs:/home/user/documents"). Make your changes, save, and exit.
.sp
\fB2. The command line\fR
.TS
allbox;
lb lb
l l.
Command	Description
T{
bm add /media/mount mnt
T}	Bookmark the \fI/media/mount\fR directory as "mnt"
T{
bm mnt
T}	Change to/open the bookmark named "mnt"
T{
bm del mnt
T}	Delete the bookmark named "mnt"
T{
bm edit
T}	Edit your bookmarks
.TE

.sp
A handy use for the bookmarks function is to create bookmarks using short names, which will be later easily accessible via tab completion.
.sp
\fBThe b: prefix\fR
.sp
The \fBb:\fR prefix is used as a way to quickly access/operate on bookmarks. A few examples:
.TS
allbox;
lb lb
l l.
Command	Description
T{
b:<TAB>
T}	List available bookmarks
T{
b:net
T}	Change to the bookmark named "net" \fB(1)\fR
T{
p b:bm1 b:bm2
T}	Print file properties of the bookmarks named "bm1" and "bm2"
T{
s b:
T}	Select all bookmarks at once
.TE

.sp
 \fB(1)\fR If your are not sure about where a bookmark points to, type `\fBb:NAME<TAB>\fR`.
.TP
.B br, bulk \fIFILE\fR... [:\fIEDITOR\fR]
Bulk rename \fIFILE\fR(s).
.sp
Each filename will be copied to a temporary file, which will be opened via \fIEDITOR\fR (default associated application for plain text files if omitted), letting the user modify it. Once the file has been modified and saved, the modified names are printed on the screen and the user is asked for confirmation.
.sp
This builtin bulk rename function will not deal with deletions, replacements, filename conflicts and the like. For a smarter alternative use \fBqmv\fR(1).
.TP
\fBc\fR, \fBm\fR, \fBmd\fR, \fBr\fR
Short for the following shell commands respectively: `\fBcp\ \-iRp\fR`, `\fBmv\ \-i\fR`, `\fBmkdir\ \-p\fR`, and `\fBrm\fR` (for files) or `\fBrm\ \-r\fR` (for directories).
.sp
By default, the \fBc\fR, \fBm\fR, and \fBr\fR commands ask for confirmation before operations. Since this might sometimes be quite intrusive (specially when operating on large number of files), it is possible to turn interactivity off in two different ways:

  a) For the current command only: via the \fB\-f\fR, \fB\-\-force\fR switch. For example: `\fBc \-f sel\fR`, `\fBm \-f sel\fR`, or `\fBr \-f *\fR`.

  b) Permanently. Use the \fBcpCmd\fR, \fBmvCmd\fR, and \fBrmForce\fR options in the configuration file to permanently set any of these commands to non\-interactive mode.
.sp
To use these commands without any of these options, or with any other option you want, use the appropriate shell command, for instance, \fBcp\fR instead of \fBc\fR. Of course, you can also create aliases to use your preferred commands, for example, "c=\'cp \-adp\'". Consult the \fBalias\fR command above for more information.
.sp
The \fBl\fR command allows the use of the \fBe, edit\fR option to modify the destination of a symbolic link. For example: `\fBl\ edit\ 12\fR` (or `\fBle\ 12\fR`)  to relink the symbolic link corresponding to the file whose ELN is 12.
.sp
When using the \fBsel\fR keyword and no destination is provided, \fBc\fR and \fBm\fR will copy/move selected files to the current directory.
.sp
Whenever \fBsel\fR is not used, but just a source filename (and no destination is provided), the \fBm\fR command behaves much like the \fBimv\fR(1) shell command (from the \'renameutils\' package), providing an interactive renaming function: it prompts the user to enter a new name using the source filename as base, so that it does not need to be typed twice. For this alternative prompt, only tab completion for filenames is available.
.sp
\fBClifm\fR supports \fBadvcp\fR(1), \fBwcp\fR, and \fBrsync\fR(1) to copy files (they include a progress bar). To use them instead of \fBcp\fR(1) set the corresponding option (\fBcpCmd\fR) in the configuration file. If \fBadvcp\fR is selected, the command used is `\fBadvcp\ \-giRp\fR` (or `\fBadvcp \-gRp\fR`, for non\-interactive mode). If \fBrsync\fR, the command is `\fBrsync\ \-avP\fR`. \fBwcp\fR takes no argument.
.sp
\fBadvmv\fR(1) is also supported to move files (to add a progress bar to the move command). Use the \fBmvCmd\fR option in the configuration file to choose this alternative implementation of \fBmv\fR. In this case, the command used is `\fBadvmv\ \-gi\fR` (or \fBadvmv \-g\fR` for non-interactive mode).

.TP
.B cd \fR[\fIDIR\fR]
Change the current working directory.
.sp
Directory check order:
  1. If no argument is provided, change to the home directory (\fB$HOME\fR, or, if not set, the sixth field of the entry corresponding to the current user in \fI/etc/passwd\fR)
  2. If the argument is an absolute path (begins with a slash character), or the first component is dot (.) or dot\-dot (..), convert to canonical form (via \fBrealpath\fR(3)) and, if a valid directory, change to this directory.
  3. Check the \fBCDPATH\fR environment variable and append /\fIDIR\fR to each of the paths specified here. If the result of the concatenation is a valid directory, change to it.
  4. Check directories in the current working directory. If a matching directory is found, change to it.
.sp
You can use either ELNs or a string to indicate the directory you want. E.g.: `\fBcd\ 12\fR` or `\fBcd\ ~/media\fR`. If \fBautocd\fR is enabled (default), `\fBcd\ 12\fR` and `\fBcd\ ~/media\fR` can be written as `\fB12\fR` and `\fB~/media\fR` respectively as well.
.sp
Unlike the shell \fBcd\fR command, \fBclifm\fR's builtin \fBcd\fR command not only changes the current directory, but also lists its content (provided the option \fBAutoLs\fR is enabled, which is the default) according to a comprehensive list of color codes. By default, the output of \fBcd\fR is much like this shell command: `\fBcd\ DIR\ &&\ ls\ \-\-color=auto\ \-\-group\-directories\-first\fR`.
.sp
Automatic file listing can be disabled by either setting \fBAutoLs\fR to \fBfalse\fR in the configuration file or running \fBclifm\fR with the \fB\-O\fR or \fB\-\-no\-autols\fR option.
.TP
.B cl, columns \fR[on | off]
Toggle columned file listing.
.TP
.B cmd, commands
Show this list of commands.
.sp
An alternative way of getting information about \fBclifm\fR commands is via the interactive help plugin (depends on \fBfzf\fR), by default bound to the \fBih\fR action name.
.TP
.B colors
.br
Preview the current color scheme (same as `\fBcs preview\fR`).
.TP
.B config \fR[edit [\fIAPP\fR] | reset | reload | dump]
Manage the main configuration file.
.sp
To edit the configuration file use the \fBedit\fR subcommand. If an application is specified (`\fBconfig edit APP\fR`), \fIAPP\fR will be used to open the file (otherwise, the default associated program will be used). Edit settings to your liking, save, and quit the editor (changes are automatically applied). Note that, since \fBedit\fR is the default action, it can be omitted. Enter just `\fBconfig\fR` to open the configuration file, or `\fBconfig APP\fR` to open it using \fIAPP\fR.
.sp
Use the \fBreload\fR subcommand to reload the main configuration file and update settings accordingly.
.sp
Use the \fBreset\fR subcommand to generate a fresh configuration file and create a backup copy of the old one (named \fIclifmrc.YYYYMMDD@HH:MM:SS\fR).
.sp
The \fBdump\fR subcommand prints the list of settings (as defined in the main configuration file) with their current value. Those differing from the default values are highlighted, and the default value for the corresponding option is displayed in brackets.
.TP
.B cs, colorschemes \fR[edit [\fIAPP\fR] | n, name | p, preview | check\-ext | \fINAME\fR]
With no arguments, list available color schemes (use `\fBcs name\fR` to print the current color scheme name). 
.sp
To get a preview of the current color scheme use the \fBpreview\fR subcommand: `\fBcs preview\fR`.
.sp
Use the \fBcheck\-ext\fR subcommand to check for file extension conflicts: `\fBcs check\-ext\fR`.
.sp
Use the \fBedit\fR subcommand to open/edit the configuration file of the current color scheme (open with \fIAPP\fR if specified, or with the default associated application otherwise).
.sp
To switch color schemes, specify the color scheme name: `\fBcs NAME\fR`. (Use the TAB key to list available color schemes: `\fBcs <TAB>\fR`).
.TP
.B d, dup \fIFILE\fR...
Duplicate files passed as parameters, either directories or regular files. The user will be asked for a destination directory. Duplicated filenames are generated by appending ".copy" to the basename of each source file. For example: `\fBd\ /my/file\fR` will copy \fI/my/file\fR to the directory selected by the user as \fIfile.copy\fR. If \fIfile.copy\fR already exists, an extra suffix will be added as follows: \fIfile.copy\-N\fR, where \fIN\fR is a positive integer (starting at 1).
.sp
If \fBrsync\fR(1) is found, it will be used as follows: `\fBrsync\ \-aczvAXHS\ \-\-progress\fR`. Else, \fBcp\fR(1) will be used: `\fBcp\ \-a\fR`.
.TP
.B dh \fR[\fISTRING\fR] [\fIPATH\fR] [!\fIELN\fR]
With no parameters, it prints the directory history list. To filter this list just pass a query string: only entries matching this query will be displayed. In both cases, tab completion is available. For example: `\fBdh down<TAB>\fR` will list only those entries matching \fIdown\fR (fuzzily, if \fBfuzzy\-matching\fR is enabled).
.sp
To access a specific entry, you can pass the entry number preceded by an exclamation mark. For example, if you want the entry number 12, enter `\fBdh !12\fR` to change to the corresponding directory.
.sp
Finally, if an absolute path is passed as first parameter, \fBdh\fR works just as the \fBcd\fR command.
.sp
\fBNote\fR: Take a look at the \fBj\fR command as well. Both commands deal with the list of visited directories, but in slightly different ways: while \fBdh\fR deals with the list of the last \fIMaxDirhist\fR entries (see the configuration file), the \fBj\fR command deals with the \fBranked\fR list of visited directories.
.TP
.B ds, desel \fR[*, a, all | \fIFILE\fR]...
Deselect one or more files.
.sp
If no parameter is passed, the user is prompted to either mark selected files to be deselected or to edit the selections file (entering \'e\') via a text editor to manually deselect files.
.sp
Use \fB*\fR, \fBa\fR or \fBall\fR to deselect all selected entries at once. E.g.: `\fBds\ *\fR`.
.sp
You can also pass the filename(s) (or ELNs) to be deselected as a parameter. For example: `\fBds\ myfile\ 24\fR`.
.sp
Tab completion is available for this command: `\fBds <TAB>\fR` will list all currently selected files.
.TP
.B exp \fR[\fIFILE\fR]...
With no argument, export the list of files in the current directory to a temporary file. Otherwise, export only those specified as further arguments: they can be directories, filenames, ELNs or some search expression like "*.c".
.TP
.B ext \fR[on | off | status]
Toggle the ability to execute external commands.
.TP
.B f, forth \fR[h, hist | clear | !\fIELN\fR]
This command works just like the \fBback\fR command, but it goes \fBforward\fR, instead of backward, in the history record.
.sp
Run `\fBf\fR` to change to the next visited directory (you can also just press \fBAlt+k\fR or \fBShift+Right\fR).
.sp
Of course, you can use `\fBf\ hist\fR`, `\fBf\ h\fR`, and `\fBf\ !ELN\fR` (consult the \fBback\fR command for details).
.TP
.B  fc \fR[on | off | status]
By default, \fBclifm\fR prints the number of files contained by listed directories next to directory names. However, since this is an expensive feature, it might be desirable (for example, when listing files on a remote machine) to disable this feature. Use the \fBoff\fR subcommand to disable it. To permanently disable it, use the \fBFileCounter\fR option in the configuration file.
.TP
.B ff, dirs\-first \fR[on | off | status]
Toggle list directories first.
.TP
.B ft, filter \fR[unset] [[!]\fIREGEX\fR,=\fRFILE\-TYPE\-CHAR\fR]
Filter the current list of files, either by filename (via a regular expression) or file type (via a file type character).
.sp
With no argument, \fBft\fR prints the current filter. To remove the current filter use the \fBunset\fR option. To set a new filter enter `\fBft\fR` followed by a filter expression (use the exclamation mark to reverse the meaning of a filter). Examples:
.sp
Exclude hidden files:
 \fBft !^\.\fR
.sp
List only files ending with .pdf:
 \fBft .*\\.pdf$\fR
.sp
List only symbolic links:
 \fBft =l\fR
.sp
Exclude socket files:
 \fBft !=s\fR
.sp
The list of file type characters is included in the \fBFILE FILTERS\fR section below.
.sp
The filter will be lost at program exit. To permanently set a filter use the \fIFilter\fR option (in the configuration file) or the \fBCLIFM_FILTER\fR environment variable (consult the \fBENVIRONMENT\fR and the \fBFILE FILTERS\fR sections below).
.TP
.B fz \fR[on | off]
Toggle recursive directory sizes (long view only).
.TP
.B hf, hh, hidden \fR[on | off | first | last | status]
Turn hidden files on/off (use \fBfirst\fR/\fBlast\fR to sort hidden files before/after non-hidden files respectively).
.TP
.B history \fR[edit [\fIAPP\fR] | clear | -\fIN\fR | on | off | status | show\-time]
With no arguments, it prints the commands history list (use \fBshow\-time\fR to print timestamps as well). If \fBclear\fR is passed as argument, it will delete all entries in the history file. Use \fBedit\fR to open the history file and modify it as required (the file will be opened with \fIAPP\fR, if specified, or with the default associated application otherwise). \fB\-N\fR tells the \fBhistory\fR command to list only the last 'N' commands in the history list. Finally, you can disable history (subsequent entries will not be written into the history file) via `\fBhistory\ off\fR` (you can also use the \fBHistIgnore\fR option in the configuration file to prevent specific command lines from being added to the history list).
.sp
You can use the exclamation mark (!) to perform some history commands:
  !<TAB>: List history entries
  !!: Execute the last command.
  !n: Execute the command number \'n\' in the history list.
  !\-n: Execute the \'last \- n\' command in the history list.
  !STRING: Execute the command starting with STRING. Tab completion is available in this case: \fI!STRING<TAB>\fR.
.TP
.B icons \fR[on | off]
Toggle icons.
.sp
\fBNote\fR: Depending on how the terminal renders icons, the apparent space between icons and filenames may not be the most appropriate. This space can be adjusted using the \fBIconsGap\fR option in the configuration file (valid values: 0, 1, 2).
.TP
.B j \fR[\-\-purge [\fINUM\fR] | \-\-edit], jc, jl, jp \fR[\fISTR\fR]..., \fBje\fR
\fBj\fR is the fastest way of using \fBKangaroo\fR, a \fBdirectory jumper\fR function used to quickly navigate through the jump database (i.e. a database of visited directories).
.sp
With no argument, \fBj\fR just lists the entries in the jump database \fB(1)(2)\fR, printing: \fBa)\fR order number of the corresponding entry, \fBb)\fR total sum of visits, \fBc)\fR days since the first visit, \fBd)\fR hours since the last visit, \fBe)\fR the rank value, and \fBf)\fR the directory name itself. An asterisk next to the rank value means that the corresponding directory will not be removed from the database, despite its rank, either because it has been visited in the last 24 hours, or because it is bookmarked, pinned, or currently active in some workspace.
.sp
\fB(1)\fR To prevent a directory from being \fBadded\fR to the jump database use the \fBDirhistIgnore\fR option in the main configuration file.
.sp
\fB(2)\fR To prevent a directory from being \fBremoved\fR from the jump database, edit the database (`\fBj edit\fR`) and prepend a plus sign (+) to the corresponding line.
.sp
Otherwise, if a query string is provided as parameter, \fIB\fR searches for this string in the database and cd to the best ranked matching entry. Example: `\fBj\ Down\fR` will probably take you to \fI/home/user/Downloads\fR, provided this directory has been already visited and is the best ranked match in the database. For a more detailed description of the matching algorithm see the \fBKANGAROO FRECENCY ALGORITHM\fR section below.
.sp
Multiple query strings can be passed to the function. For example, `\fBj\ et\ mo\fR` will first check for "et" in the jump database and then will further filter the search using the second parameter: "mo". It will most probably take you (again, provided the directory has been already visited and is the best ranked match) to \fI/etc/modprobe.d\fR directory. Bear in mind that if \fISTR\fR is an actual directory, \fBjump\fR will just cd to it without performing any query.
.sp
The backslash (\\) and the slash (/) can be used to instruct \fBKangaroo\fR to search for the string query only in the first or last path segment of each entry in the database respectively. Let\'s suppose we have two entries matching \fBsrc\fR in the database: \fI/media/src/images\fR and \fI/home/user/Downloads/clifm/src\fR. If the first entry is better ranked than the second, `\fBj src\fR` will match this first entry. However, if what we really want is the second entry, appending a slash to the query string instructs \fBKangaroo\fR to only match entries having src in the last path segment, here \fI/home/user/Downloads/clifm/src\fR.
.sp
Since it is not always obvious or easy to know where exactly a query string will take you, \fBclifm\fR (if the suggestions system is enabled) will print, at the right of the cursor, the path matched by \fBKangaroo\fR. If that is the actually intended path, press the Right arrow key to accept the suggestion. Otherwise, it will be ignored. You can also use tab completion to print the list of matches for the current query string. For example: `\fBj \- c<TAB>\fR` to list all entries in the directory history list containing a dash (\-) and a \'c\'.
.sp
The \fBj\fR command accepts four modifiers: \fBe, \fBp\fR, \fBc\fR, and \fBl\fR, the first standing for "edit", the second for "parent", the third for "child", and the last one for "list". Thus, `\fBje\fR` (or `\fBj \-\-edit\fR`) will open the jump database to be edited as required; `\fBjc\fR` will search for files querying only child directories relative to the current working directory, while `\fBjp\fR` will do the same, but for parent directories. Finally, `\fBjl\fR` just prints the matches for the given query string(s), but without changing the current directory. Examples:

.TS
allbox;
lb lb
l l.
Command	Description
T{
jp foo
T}	Change to the best ranked \fBparent\fR directory containing the string "foo".
T{
jc bar test
T}	Change to the best ranked \fBchild\fR directory containing the string "bar" and "test"
T{
jl foo
T}	Print all entries in the database containing the word "foo"
.TE

.sp
Use the \fB\-\-purge\fR option to shrink the database. Without further parameters, \fB\-\-purge\fR removes all non\-existent (un\-stat\'able) directories from the database. If a numeric parameter is passed, by contrast, all entries ranked below this number will be removed from the database. For example, `\fBj \-\-purge 100\fR` will remove all entries ranked below 100.
.sp
You can also manually edit the database file using the `\fBje\fR` (or `\fBj \-\-edit\fR`) command: edit whatever needs to be edited, save changes, and close the editor. This is useful, for example, to remove a specific entry/directory from the database (however, bear in mind that if the directory is in the directory history, it will not be removed from the jump database).
.sp
To mark an entry as permanent (prevent it from being removed from the database), follow any of these procedures:
 a. Bookmark it.
 b. Edit the jump database (`\fBje\fR` or `\fBj --edit\fR`) and prepend a plus sign (+) to the corresponding entry.
.sp
An alternative way of navigating the jump database is using the jumper plugin (located in the plugins directory and bound by default to the \fB++\fR action name), which uses \fBfzf\fR to enable fuzzy searches. Enter `\fB++\fR` to perform a fuzzy search over the jump database.
.sp
Take a look at the \fBdh\fR command as well.
.TP
.B k
.br
If running in long view, toggle follow-links (\fBAlt++\fR is also available). See the \fB\-L,\-\-follow\-symlinks\-long\fR command line switch.
.TP
.B kk
.br
Toggle max-filename-len (\fBCtrl+Alt+l\fR is also available)
.TP
.B kb, keybinds \fR[list | bind \fIFUNCTION\fR | edit [\fIAPP\fR] | conflict | reset | readline]
With no argument (or if the argument is \fBlist\fR), prints the current keybindings and their associated functions.
.sp
To change a keybinding use the \fBbind\fR subcommand.
.sp
Type `\fBkb bind <TAB>\fR` to get the list of bindable functions.
.sp
Enter `\fBkb bind FUNCTION\fR` to set a new keybinding for \fIFUNCTION\fR. For example, to bind the function \fBprevious-dir\fR to a new key, enter `\fBkb bind previous-dir\fR`. You'll see a little prompt: press the key combination you want to associate to the specified function and then press \fBEnter\fR (while in this prompt, press \fBCtrl+d\fR to abort or \fBCtrl+c\fR to clear the current line).
.sp
To manually edit your keybindings use the \fBedit\fR option (the keybindings file will be opened with \fIAPP\fR, if specified, or with the default associated application otherwise).
.sp
If you somehow messed up your keybindings, you can check for keybinding conflicts with the \fBconflict\fR option, or use the \fBreset\fR option to create a fresh keybindings file with the default values.
.sp
To unbind a function run `\fBkb edit\fR` and comment out the corresponding entry. Note that some functions may have several entries, associating them to multiple keybindings: comment them out all if required.
.sp
To list readline keybindings (defined in \fI~/.config/clifm/readline.clifm\fR), use the \fBreadline\fR option. The syntax is the same as the one used by readline's \fI.inputrc\fR file (consult \fIhttp://tiswww.case.edu/php/chet/readline/readline.html#SEC9\fR for more information.)
.TP
.B l, le
.br
Create (\fBl\fR) or edit (\fBle\fR) symbolic links.
.sp
The syntax for the \fBl\fR command is: l \fITARGET\fR [\fILINK_NAME\fR]\fR. Note that if \fILINK_NAME\fR is omitted, the symbolic link is created as \fITARGET_BASENAME\fR.link in the current directory.
.sp
By default, the link target is created literally (like `\fBln -s\fR` would). The link creation mode can be set using the \fBLinkCreationMode\fR option in the configuration file. Available modes are: \fBabsolute\fR, \fBliteral\fR, and \fBrelative\fR (like `\fBln -rs\fR` would).
.sp
To edit the target of a symbolic link use the \fBle\fR command followed by the desired link name. The user will be prompted to enter a new link target, using the current target as template.
.TP
.B ll, lv \fR[on | off]
Toggle the long view.
.TP
.B lm \fR[on | off]
Toggle the light mode. This option, aimed at making file listing faster than the default mode, is especially useful for really old hardware or when working on remote machines (for more information see the \fBNOTE ON SPEED\fR section below).
.TP
.B log \fR[cmd | msg] [list | on | off | status | clear]
Enable, disable, clear, list or check the status of the program logs, either message (errors and warnings) or command logs. Example: `\fBlog cmd on\fR`, to enable command logs, or `\fBlog msg clear\fR`, to clear/remove message logs.
.sp
Consult the \fBFILES\fR section below for information about how logs are written to the logs file.
.TP
.B media
.sp 0
\fBNote\fR: This command is Linux\-specific
.sp
List available storage devices and mount/unmount the selected one using either \fBudevil\fR or \fBudisks2\fR (at least one of these must be installed. \fBudevil\fR will be preferred over \fBudisks2\fR). If the device is unmounted, it will be automatically mounted, and if mounted, it will be automatically unmounted.
.sp
Though mountpoints are determined by the mounting application itself (\fBudevil\fR or \fBudisks2\fR), \fBclifm\fR will automatically cd to the corresponding mountpoint whenever the mount operation was successful.
.sp
When unmounting, and if the current directory is inside the mountpoint, \fBclifm\fR will attempt to cd to the previous visited directory, and, if none, to the home directory, before unmounting the device.
.sp
To get information about a device, enter `\fBiELN\fR`, for example, `\fBi12\fR`, provided \'12\' is the ELN of the device you want.
.TP
.B mf \fR[\fINUM\fR | unset]
List only up to \fINUM\fR files (valid range: >= 0). Use \fBunset\fR to list all files (default). An indicator (listed_files/total_files) will be printed below the list of files whenever some file is excluded from the current list (e.g. 20/310). Note, however, that though some files are excluded, all of them are loaded anyway, so that you can still perform any valid operation on them. For example, even if only 10 files are listed, you can still search for all symbolic links in the corresponding directory using the appropriate command: `\fB/*\ \-l\fR`.
.TP
.B mm, mime \fR[open \fIFILE\fR | info \fIFILE\fR | edit [\fIAPP\fR] | import]
This is \fBLira\fR, \fBclifm\fR's file opener.
.sp
Use the \fBopen\fR subcommand to open a file with the default associated application. Note that, since \fBopen\fR is the default action, it can be omitted. For example: `\fBmm file.pdf\fR`. The same can be achieved more easily using the \fBopen\fR command: `\fBopen file.pdf\fR` (or using the short command, `\fBo file.pdf\fR`). Or, even shorter, just `\fBfile.pdf\fR`.
.sp
The \fBinfo\fR option prints MIME information about \fIFILE\fR: its MIME type, and, if any, the application (for both opening and previewing) associated with this filename or with the file's MIME type. If the application is associated with the file's name, \fB[FILENAME]\fR is printed after the associated application, otherwise, if associated with the file's MIME type, \fB[MIME]\fR is printed.
.sp
The \fBedit\fR option allows you to edit and customize the MIME list file. So, if a file has no default associated application, first get its MIME info or its file extension (running `\fBmm\ info\ FILE\fR`), and then add a value for it to the MIME list file using the \fBedit\fR option (`\fBmm\ edit\fR` or \fBF6\fR). Check the \fBFILE OPENER\fR section below for information about the mimelist file syntax.
.sp
Finally, via the \fBimport\fR option \fBclifm\fR will try to import MIME associations from the system looking for \fImimeapps.list\fR files in those paths specified by the Freedesktop specification (see \fIhttps://specifications.freedesktop.org/mime\-apps\-spec/mime\-apps\-spec\-latest.html\fR). If at least one MIME association is successfully imported, it will be stored as \fImimelist.clifm.XXXXXX\fR (where XXXXXX is a random six digits alphanumerical string). You can add these new associations to your mimelist file using the `\fBmime edit\fR` command.
.TP
.B mp, mountpoints
List available mountpoints and change the current working directory to the selected mountpoint.
.TP
.B msg, messages \fR[clear]
With no arguments, prints the list of messages in the current session. The \fBclear\fR option tells \fBclifm\fR to empty the messages list.
.TP
.B n, new \fR[\fIFILE[@TEMPLATE]\fR]... [\fIDIR/\fR]...
Create new regular files and/or directories.
.sp
If a filename ends with a slash (/), it will be taken as a directory name. Else, it will be created as a regular file. E.g.: `\fBn\ myfile\ mydir/\fR`, to create a file named \fImyfile\fR and a directory named \fImydir\fR. If no filename is provided, the user will be prompted to enter one.
.sp
\fBAutomatic templates\fR
.sp
New regular files will be created from a \fBtemplate file\fR if:
.sp
 1. The file to be created has a filename extension (e.g., \fIfile.html\fR).
 2. A file named like this extension, here \fIhtml\fR, exists in the templates directory \fB(1)\fR.
.sp
If both conditions are met, running `\fBn file.html\fR` will create a new file named \fIfile.html\fR which is a copy of the \fIhtml\fR file in the templates directory.
.sp
Note that template names are not limited to actual file extensions: you can name your templates whatever you like (with any content you want) provided new files are created using the template name as extension. E.g.: `\fBn file.my_super_cool_template\fR`.
.sp
\fBExplicit templates\fR
.sp
If a filename is followed by the expression \fI@TEMPLATE\fR, where TEMPLATE is any regular file found in the templates directory\fB(1)\fR, the file will be created as a copy of the corresponding file template. E.g., `\fBn file.sh@my_script.sh\fR`.
.sp
Tab completion is available for explicit templates: `\fBn file@<TAB>\fR`.
.sp
\fB(1)\fR The templates directory is \fB$CLIFM_TEMPLATES_DIR\fR, \fB$XDG_TEMPLATES_DIR\fR, or \fI~/Templates\fR, in this precedence order.
.sp
\fBFilename validation\fR is performed over names before creation. In case of an unsafe name, the user is warned and asked for confirmation.
.sp
A name (namely, any component of a path) is considered unsafe if:
  1. Starts with a dash (\-): command option flags collision
  2. Is a reserved keyword/expression (internal): fastback (...), ELN/range (12, 1\-45), and MIME/file type expansion (@query, =x)
  3. Is a reserved system/shell keyword (\'~\', \'.\' ,\'..\')
  4. Contains embedded control characters (0x00\-0x1f in the ASCII table)
  5. Contains embedded shell meta\-characters (*?:[]"<>|(){}&'!\\;$)
  6. It is too long (larger than NAME_MAX, usually 255 bytes)
.sp
For more information about unsafe filenames consult \fIhttps://dwheeler.com/essays/fixing\-unix\-linux\-filenames.html\fR.
.TP
.B net \fR[\fINAME\fR | list | edit | m, mount \fINAME\fR | u, unmount \fINAME\fR]
\fB1. The configuration file\fR
.sp
The \fBnet\fR command manages connections to remote systems via a simple samba\-like configuration file (\fI$HOME/.config/clifm/profiles/PROFILE/nets.clifm\fR). Here you can specify multiple remotes and options for each of these remotes. Syntax example for this file:
.sp
 [remote_name]
 Comment=A nice descriptive comment
 Mountpoint=/path/to/mountpoint
 MountCmd=sudo mount.cifs //192.168.0.12/share %m \-o OPTIONS
 UnmountCmd=sudo umount %m
 AutoUnmount=true (Auto\-unmount this remote at exit)
 AutoMount=false (Auto\-mount this remote at startup)
.sp
\fBNote\fR: \fB%m\fR can be used as a placeholder for \fIMountpoint\fR. \fB%m\fR will be replaced by the value of \fIMountpoint\fR.
.sp
\fB1.a.\fR Mounting remote filesystems
.sp
\fBA Samba share\fR:
  [samba_share]
  Comment=My samba share
  Mountpoint="~/.config/clifm/mounts/smb_share"
  MountCmd=sudo mount.cifs //192.168.0.26/samba_share %m \-o mapchars,credentials=/etc/samba/credentials/samba_share
  UnmountCmd=sudo umount %m
  AutoUnmount=false
  AutoMount=false

\fBA SSH filesystem (sshfs)\fR:
  [ssh_share]
  Comment=My ssh share
  Mountpoint="/media/ssh"
  MountCmd=sshfs user@192.168.0.26: %m \-C \-p 22
  UnmountCmd=fusermount3 \-u %m
  AutoUnmount=true
  AutoMount=false
.sp
\fB1.b.\fR Mounting local filesystems
.sp
Though originally intended to manage remote filesystems, \fBnet\fR can also manage \fBlocal filesystems\fR. Just provide the appropriate mount and unmount commands. Since the device name assigned by the kernel might change across reboots (specially when it comes to removable drives), it is recommended to mount using the device\'s UUID (Universal Unique Identifier) instead of the drive name. For example:

  MountCmd=sudo mount \-U c98d91g4\-6781... %m

Here\'s an example of how to set up \fBnet\fR to mount USB devices, one with a FAT filesystem, and another with an ISO9660 filesystem:

  [Sandisk USB]
  Comment=Sandisk USB drive
  Mountpoint="/media/usb"
  MountCmd=sudo mount \-o gid=1000,fmask=113,dmask=002 \-U 5847\-xxxx %m
  UnmountCmd=sudo umount %m
  AutoUnmount=false
  AutoMount=false

  [Kingston USB]
  Comment=Kingston USB drive
  Mountpoint="/media/usb2"
  MountCmd=sudo mount \-t iso9660 \-U 2020\-10\-01\-15\-xx\-yy\-zz %m
  UnmountCmd=sudo umount %m
  AutoUnmount=false
  AutoMount=false

\fBNote\fR: The \fBgid\fR, \fBfmask\fR, and \fBdmask\fR options are used to allow the user to access the mountpoint without elevated privileges.
.sp
If the device data is unknown, as it often happens when it comes to removable devices, you should use the \fImedia\fR command instead.
.sp
\fB2. Command syntax\fR
.sp
Without arguments (or via the \fBlist\fR subcommand), \fBnet\fR lists the configuration for each remote available in the configuration file.
.sp
Use the \fBedit\fR option to edit the remotes configuration file. If no further argument is specified, the file will be opened with the current file opener. However, you can pass an application as second parameter to open to configuration file. For example: `\fBnet edit nano\fR`.
.sp
If not already mounted, the \fBm\fR, \fBmount\fR option mounts the specified remote using the mount command and the mounpoint specified in the configuration file and automatically cd to the corresponding mountpoint. For example: `\fBnet mount smb_work\fR`. Since \fBmount\fR is the default action, it can be omitted: `\fBnet smb_work\fR`.
.sp
The \fBu\fR, \fBunmount\fR option unmounts the specified remote using the unmount command specified in the configuration file. For example: `\fBnet unmount smb_work\fR`. Tab completion is also available for this function.
.sp
\fBNote\fR: If you only need to copy some files to a remote location (including mobile phones) without the need to mount the resource, you can make use of the \fIcprm.sh\fR plugin, bound by default to the \fBcr\fR action. Set up your remotes (`\fBcr \-\-edit\fR`) and then send the file you want (`\fBcr FILE\fR`).
.TP
.B o, open \fIFILE\fR [\fIAPPLICATION\fR]
Open \fIFILE\fR, which can be either a directory (in which case it works just like the \fBcd\fR command), a regular file, or a symbolic link to either of the two. For example: `\fBo\ 12\fR`, `\fBo\ filename\fR`, `\fBo\ /path/to/filename\fR`.
.sp
By default, the \fBopen\fR command will open files with the default application associated to them via \fBLira\fR, the builtin file opener (see the \fBmime\fR command above). However, if you want to open a file with a different application, add the application name as second argument, e.g. `\fBo\ 12\ leafpad\fR` or `\fBo12\ leafpad\fR`.
.sp
If you want to run the program in the background, simply add the ampersand character, as usual: `\fBo\ 12\ &\fR`, `\fBo\ 12&\fR`, `\fBo12&\fR` or (if auto\-open is enabled) just `\fB12&\fR`.
.sp
If the file to be opened is an archive/compressed file, the archive function (see the \fBad\fR command above) will be executed instead.
.TP
.B oc \fIFILE\fR...
Interactively change file ownership.
.sp
A new prompt is displayed using user and primary group common to all files passed as parameters as ownership template.
.sp
Ownership (both user and primary group, if specified) is changed for all files passed as parameters. If the file is a symbolic link, the operation is performed on the target file, and not on the symbolic link itself. Bear in mind that recursion is not supported: use \fBchown\fR(1) (with the \fB\-R\fR option) instead.
.sp
Both names and ID numbers are allowed (Tab completion for names is available).
.sp
If only a name/number is entered, it is taken as the user who owns the file(s).
.sp
Use the \fBpc\fR command to edit files permissions.
.TP
.B opener \fR[default | \fIAPPLICATION\fR]
With no argument, prints the currently used file opener (by default, \fBLira\fR, \fBclifm\fR\'s builtin opener). Otherwise, set APPLICATION (say \fBrifle\fR or \fBxdg\-open\fR) as opener or, if \fBdefault\fR is passed instead, use \fBLira\fR.
.TP
.B ow \fIFILE\fR [\fIAPPLICATION\fR]
If \fIAPPLICATION\fR is specified, open \fIFILE\fR with \fIAPPLICATION\fR. In case you need to add parameters to \fRAPPLICATION\fR, it is recommended to quote the expression: `\fBow \fIFILE\fR "\fIAPP ARG\fR..."\fR`.
.sp
If \fIAPPLICATION\fR is not specified, the list of available applications associated to \fIFILE\fR (either via its MIME type or its file extension) is printed, allowing the user to choose one of these applications, and then open the file with the selected application.
.sp
This command supports tab completion. Type `\fBow FILE <TAB>\fR` and the list of applications able to open \fIFILE\fR will be displayed	.
.TP
.B p, pp, prop \fIFILE\fR...
Print file properties for \fIFILE\fR. The output of this function is much like the combined output of the shell commands`\fBls\ \-l\fR` and `\fBstat\fR`.
.sp
By default, directory sizes are not displayed. Use \fBpp\fR instead of just \fIp\fR to print directory sizes as well (it could take longer depending on the directory's content). On the other side, and unlike \fBp\fR, \fBpp\fR provides information about the dereferenced symlinks (namely, the symlink target) instead of the symlink itself. However, note that, in case of symbolic links to directories, \fBp\fR provides information about the link \fBtarget\fR if the provided filename ends with a slash. Otherwise, information about \fBthe link itself\fR is displayed.
.sp
The time format used to display time information can be customized via the \fBPTimeStyle\fR option in the configuration file (defaults to "%Y\-%m\-%d %H:%M:%S.%N %z", where %N stands for nano\-second precision).
.sp
If you need to list the properties of all files in the current directory, try the long view (\fBll\fR or \fBAlt+l\fR). Fields displayed in this mode can be customized using the \fBPropFields\fR option in the configuration file. For custom timestamp formats use the \fBTimeStyle\fR option.
.sp
For more information about file details consult the \fBfile\-details\fR help topic: `\fBhelp file\-details\fR`.
.TP
.B pc \fIFILE\fR...
Interactively change file permissions (only traditional Unix permissions are supported).
.sp
A new prompt is displayed using actual permissions (in symbolic notation) of the file to be edited as template. If editing multiple files with different sets of permissions, only shared permission bits are set in the permissions template.
.sp
Bear in mind that, if editing multiple files at once, say `\fBpc sel\fR` or `\fBpc *.c\fR`, the new permissions set will be applied to \fBall\fR of them.
.sp
Both symbolic and octal notation for the new permissions set are allowed.
.sp
Recursively setting file permissions is not supported. Use \fBchmod\fR(1) with the \fB\-R\fR flag instead.
.sp
If you just need to toggle the executable permission bit on a file, you can use the \fBte\fR command.
.sp
Use the \fBoc\fR command to edit files ownership.
.TP
.B pf, profile \fR[ls, list | set, add, del \fIPROFILE\fR | rename \fIPROFILE\fR \fINEW_NAME\fR]
With no arguments, prints the name of the currently used profile. Use the \fBls\fR or \fBlist\fR option to list available profiles. To switch, add, delete, or rename a profile, use the \fBset\fR, \fBadd\fR, \fBdel\fR, and \fBrename\fR options respectively.
.TP
.B pg, pager \fR[on | off | once | status | \fINUM\fR]
Run or set \fBMas\fR, \fBclifm\fR's builtin files pager.
.sp
With no parameter, just run the pager (\fBAlt+0\fR is also available).
.sp
If set to on, run the pager whenever the list of files does not fit on the screen.
.sp
Set it to any positive integer greater than 1 to run the pager whenever the number of files in the current directory is greater than or equal to this value, say 1000 (0 amounts to \fBoff\fR and 1 to \fBon\fR).
.sp
Set to \fBonce\fR to run the pager only a single time (overwriting whatever was its previous value).
.sp
While paging, the following keys are available:
.sp
 \fB?\fR, \fBh\fR: Help
 \fBDown arrow\fR, \fBEnter\fR, \fBSpace\fR: Advance one line
 \fBPage down\fR: Advance one page
 \fBq\fR: Stop paging (without printing remaining files)
 \fBc\fR: Stop paging (printing remaining files)
.sp
Note: To scroll lines up, use whatever your terminal emulator has to offer (e.g.: mouse scrolling or some keybinding).
.sp
By default, the pager lists files using the current listing mode (long or short). Use \fBPagerView\fR in the configuration file (or \fB\-\-pager\-view\fR in the command line) to force the use of a specific mode. Possibles values:
.sp
 \fBauto\fR: Use the current listing mode (default)
 \fBlong\fR: List files in long view
 \fBshort\fR: List files in short view
.TP
.B pin \fR[\fIFILE/DIR\fR]
Pin a file or directory to be accessed later via the comma (,) keyword. For example, run `\fBpin mydir\fR` and then access \fImydir\fR as follows: `\fBcd\ ,\fR` where the comma is automatically expanded to the pinned file, in this case \fImydir\fR. The comma keyword could be used with any command, either internal or external, e.g, `\fBls\ ,\fR`.
.sp
With no arguments, the \fIpin\fR command prints the current pinned file, if any. If an argument is given, it will be taken as a filename to be pinned. Running this command again, frees the previous pinned file and sets a new one. In other words, only one pin is supported at a time. 
.sp
An easy alternative to create as many pins or shortcuts as you want, and how you want, is to use the \fBalias\fR function. Bookmarks could also be used to achieve a very similar result.
.sp
At program exit, the pinned file is written to a file in the configuration directory (as \fI.pin\fR) to be loaded in the next session.
.TP
.B prompt \fR[set \fINAME\fR | list | edit [\fIAPP\fR] | unset | reload]
Manage \fBclifm\fR's prompts. Use the \fBset\fR subcommand to temporarily change the current prompt to the prompt named NAME (use the \fBunset\fR subcommand to unset the current prompt and set the default one). Available prompts (which can be listed using `\fBprompt list\fR` or `\fBprompt set <TAB>\fR`) are defined in the prompts file (\fI$HOME/.config/clifm/prompts.clifm\fR). To permanently set a prompt, edit your color scheme file (via the `\fBcs edit\fR` command) and set \fBPrompt\fR to either a prompt code or a prompt name (as defined in the prompts file).
.TP
.B q, quit, exit
Quit \fBclifm\fR.
.TP
.B rf, refresh
Refresh the screen, that is, reprint files in the current directory and update the prompt. If the current directory is not accessible for any reason, \fBrf\fR will go up until it finds an accessible one and then will change to this directory.
.TP
.B rl, reload
Reload all settings, except those passed as command line arguments, from the configuration file.
.TP
.B rr \fR[\fIDIR\fR] [\fIEDITOR\fR]
Remove files and/or directories in bulk using a text editor.
.sp
\fBrr\fR writes all filenames in \fIDIR\fR (or in the current directory if \fIDIR\fR is omitted) to a temporary file and opens it using \fIEDITOR\fR (or the default associated application for \fItext/plain\fR MIME type, if \fIEDITOR\fR is omitted).
.sp
Once in the editor, remove the lines corresponding to the files you want to delete. Save changes and close the editor. Removed files will be listed and the user asked for confirmation.
.TP
.B s, sel \fIFILE\fR... [[!]\fIPATTERN\fR] [\fI\-FILETYPE\fR] [\fI:PATH\fR]
Mark one or more files (either regular files or directories) as selected (send to the Selection Box). \fBsel\fR accepts individual elements, range of elements, say 1\-6, filenames and paths, just as wildcards (globbing) and regular expressions. For example: `\fBs 1 4\-10 ^r file* filename /path/to/filename\fR`.
.sp
If not in light mode, once a file is selected, and if the file is in the current directory, the corresponding filename will be highlighted with a mark (colored according to the value of \fBli\fR in the color scheme file (by default bold green)) at the left of the filename (and at the right of its ELN).
.sp
Just as in the \fBsearch\fR function, it is also possible to further filter the list of matches indicating the desired file type. For instance, `\fBs ^ \-d\fR` will select all directories in the current directory. For available file type filters see the \fBsearch\fR function above.
.sp
By default, the selection function operates on the current working directory. To select files in any other directory use the ":PATH" expression. For example, to select all regular files with a .conf extension in the \fI/etc\fR directory, the command would be: `\fBs\ .*\\.conf$\ \-f :/etc\fR`, or using wildcards: `\fBs *.conf \-f\ :/etc\fR`. Of course, you can also do just `\fBs \-f /etc/*.conf\fR`.
.sp
Just as in the case of the \fBsearch\fR function, inverse matching is supported for patterns, either wildcards or regular expressions. To invert the meaning and action of a pattern, prepend an exclamation mark (!). E.g., to select all non\-hidden regular files in the Documents directory, issue this command: `\fBs !^\.\ \-f :Documents\fR`, or, to select all directories in \fI/etc\fR, except those ending with ".d": `\fBs !*.d \-d :/etc\fR`.
.sp
Glob and regular expressions can be used together. For example: `\fBs ^[r|R].*d$ /etc/*.conf\fR` will select all files starting with either 'r' or 'R' and ending with 'd' in the current directory, plus all .conf files in the \fI/etc\fR directory. However, this use is discouraged if both patterns refer to the same directory, since the second one will probably override the result of the first one.
.sp
It is important to note that glob expressions are evaluated before regular expressions, in such a way that any pattern that could be understood by both kinds of pattern matching mechanisms will be evaluated first according to the former, that is, as a glob expression. For example, '.*', as regular expression, should match all files. However, since glob expressions are evaluated first, it will only match hidden files. To select all files using a glob expression, try \'.* *\', or, with a regular expression: \'^\' or \'(.*?)\'. The keyboard shortcut \fBAlt+a\fR is also available to perform the same operation.
.sp
The Selection Box is accessible from different instances of the program, provided they use the same profile (see the \fBprofile\fR command below). By default, indeed, each profile keeps a private Selection Box, being thus not accessible to other profiles. You can nonetheless modify this behavior via the \fBShareSelbox\fR option in the configuration file. If \fBShareSelbox\fR is enabled, selected files are stored in \fI/tmp/clifm/username/.selbox.clifm\fR. Otherwise, \fI/tmp/clifm/username/.selbox_profilename.clifm\fR is used (this is the default).
.sp
\fBOperating on selected files\fR
.sp
To operate on one or more selected files use the \fBsel\fR keyword (\fBs:\fR can be used as well). For example, to print the file properties of all selected files: `\fBp sel\fR` (or `\fBp s:\fR)`. Use `\fBs:<TAB>\fR` to list selected files (multi\-selection is available if running in fzf mode).
.sp
\fBListing selected files\fR
.sp
To list selected files use the \fIsb\fR command (standing for Selection Box). You can also type `\fBs:<TAB>\fR`.
.sp
\fBDeselecting files\fR
.sp
To deselect files use the \fBds\fR command (see above). You can also press \fBAlt+d\fR to deselect all files at once.
.sp
\fBNote\fR:  If there is a file named \fIsel\fR in the current directory, use \fI./sel\fR to distinguish it from the \fBsel\fR keyword. For example, enter `\fBp ./sel\fR` to tell \fBclifm\fR that you want to get the properties of the file named \fIsel\fR rather than the properties of the currently selected files.
.sp
For more information consult the \fBBUILT\-IN EXPANSIONS\fR section below.
.TP
.B sb, selbox
Print the elements currently contained in the Selection Box.
.TP
.B st, sort \fR[\fIMETHOD\fR] [rev]
With no argument, print the current sort order. Else, sort files by METHOD, where METHOD is one of: 0=none, 1=name, 2=size, 3=atime, 4=btime, 5=ctime, 6=mtime, 7=version, 8=extension, 9=inode, 10=owner, 11=group, 12=blocks, 13=links, or 14=type (e.g.: \fIst atime\fR or \fIst 3\fR). Methods 10 and 11 sort by owner and group ID names if using ID names in long view (see the \fBPropFields\fR option in the configuration file). Else, ID numbers are used. The default order is \fBversion\fR.
.sp
By default, files are sorted from less to more (e.g.: from \'a\' to \'z\' if sorting by \fBname\fR). Use the \fBrev\fR subcommand to invert this order. E.g.: `\fBst\ rev\fR` or `\fBst\ inode\ rev\fR`. Switch back to the previous state by running `\fBst rev\fR` again.
.sp
Take a look at the configuration file for extra sort options (\fBListDirsFirst\fR, \fBPrioritySortChar\fR, \fBShowHiddenFiles\fR).
.TP
.B stats
.br
Print file statistics for files in the current directory (not available in light mode).
.TP
.B t, trash \fR[\fIFILE\fR... | ls, list | clear, empty | del [\fIFILE\fR]...]
Move specified files to the trash can (e.g. `\fBt file1 file2\fR`).
.sp
With no argument (or by passing the \fBls\fR option), it prints the list of currently trashed files. The \fBclear\fR (or \fBempty\fR) sucommand removes \fBall\fR files from the trash can, while the \fBdel\fR subcommand lists trashed files allowing the user to permanently remove one or more trashed files. If using \fBdel\fR, tab completion to list/select currently trashed files is available.
.sp
The trash directory is \fI$XDG_DATA_HOME/Trash\fR, falling back to \fI$HOME/.local/share/Trash\fR. To set an alternative trash directory use the \fB\-T,\-\-trash\-dir\fR command line option.
.sp
Since this trash system follows the Freedesktop specification, it is able to handle files trashed by different Trash implementations.
.sp
To restore trashed files (to their original location) see the \fBuntrash\fR command below.
.TP
.B tag \fR[add | del | list | list\-full | new | merge | rename | untag] [\fIFILE\fR]... [[\fI:\fR]\fITAG\fR]
\fItag\fR is the main \fIEtiqueta\fR command, \fBclifm\fR's builtin files tagging system. See the \fBFILE TAGS\fR section for a complete description of this command.
.TP
.B te \fIFILE\fR...
Toggle the executable bit (on user, group, and others) on FILE(s). It is equivalent to the \fB\-x\fR and \fB+x\fR options for the \fBchmod\fR(1) command.
.TP
.B tips
.br
Print the list of \fBclifm\fR tips.
.TP
.B u, untrash \fR[*, a, all | \fIFILE\fR]...
If filenames are passed as parameters, restore them to their original location. Otherwise, this function prints a list of currently trashed files allowing the user to choose one or more of these files to be restored. Use the \fB*\fR, \fBa\fR or \fBall\fR parameters to restore all trashed files at once. Tab completion to list/select currently trashed files is available.
.TP
.B unpin
.br
This command takes no argument. It just frees the current pin and, if it exists, deletes the \fI.pin\fR file generated by the \fBpin\fR command.
.TP
.B vv \fIFILE\fR... \fIDIR\fR
Copy \fIFILE\fR(s) to \fIDIR\fR and bulk rename them at once.
.TP
.B ver, version
Show \fBclifm\fR version details.
.TP
.B view \fR[edit [\fIAPP\fR] | purge]
preview files in the current directory (full screen). Requires \fBfzf\fR(1). \fBAlt+-\fR is also available.
.sp
By pressing \fBEnter\fR or \fBRight\fR, the currently highlighted file will be selected and \fBview\fR closed. To select multiple files, mark them with the TAB key and then press \fBEnter\fR or \fBRight\fR to confirm. To quit \fBview\fR press Escape or the Left arrow key.
.sp
Run `\fBview purge\fR` to purge the thumbnails directory (\fI$XDG_CACHE_HOME/clifm/thumbnails\fR) of dangling thumbnails.
.sp
To edit the previewer configuration file enter `\fBview edit\fR`, or `\fBview edit vi\fR` to open it with a specific application, in this case, \fBvi\fR(1).
.sp
For \fBimage previews\fR consult the Wiki (\fIhttps://github.com/leo\-arch/clifm/tree/master/misc/tools/imgprev\fR) or enter `\fBhelp image\-previews\fR`.
.sp
For further information consult the \fBSHOTGUN\fR section below.
.TP
.B ws \fR[\fINUM/NAME\fR | unset | + | -]
\fBClifm\fR offers up to eight workspaces, each with its own independent path.
.sp
With no argument, the \fBws\fR command prints the list of workspaces and its corresponding paths, highlighting the current workspace.
.sp
Use \fINUM\fR to switch to the workspace number \fINUM\fR, \fINAME\fR to switch to the workspace named \fINAME\fR, the plus sign (+) to switch to the next workspace, and the minus sign (\-) to switch to the previous workspace.
.sp
To unset a workspace use the \fBunset\fR subcommand preceded by the workspace (either number or name) to be unset. For example: `\fBws 2 unset\fR`.
.sp
Four keyboard shortcuts are available to easily switch to any of the first four workspaces: \fBAlt+[1\-4]\fR.
.sp
Every time an empty workspace is created, it starts in the current working directory.
.sp
Though by default workspaces are unnamed, you can name them however you like using the \fBWorkspaceNames\fR option in the configuration file.
.sp
Use autocommands to persistenly set options per workspace, for example, to always list files in the third workspace in long view. See the \fBAUTOCOMMANDS\fR section below for more information.
.sp
Make local settings private to the current workspace by setting the \fBPrivateWorkspaceSettings\fR option to \fBtrue\fR in the configuration file: settings changed via either the command line or keyboard shortcuts (say \fBAlt+l\fR, to toggle the long view) will apply only to the current workspace and will be remembered even when switching workspaces.
.sp
To directly operate on a workspace (namely, the path it points to) you can use the \fBw:\fR prefix followed by a workspace number or name. For example, to copy all .png files in the current directory to the third workspace, enter `\fBc *.png w:3\fR`. Press TAB immediately after \fBw:\fR to get the list of available workspaces. 
.TP
.B x, X \fR[\fIDIR\fR]
Open \fIDIR\fR, or the current working directory if \fIDIR\fR is not specified, in a new instance of \fBclifm\fR (as root if \fBX\fR, as the current unprivileged user if \fBx\fR) using the value of \fBTerminalCmd\fR (from the configuration file) as terminal emulator. If this value is not set, \fBxterm\fR will be used as fallback terminal emulator. This function is only available for graphical environments.
.TP
.B Shell\-builtins implementations
.sp
.B pwd \fR[-LP]
.sp
  Print the current working directory
.sp
.B export \fINAME\fR=\fIVALUE\fR...
.sp
  Export variables to the environment
.sp
.B umask \fR[\fIVALUE\fR]
.sp
  Print/set the current umask value
.sp
.B unset \fINAME\fR
.sp
  Remove a variable from the environment

.SH 5. FILE FILTERS
\fBClifm\fR provides multiple ways to filter the current list of files:
.sp
\fBa)\fR Hidden files: via the \fB\-A\fR and \fB\-a\fR command line flags, the \fBhh\fR command, and the \fBAlt+.\fR keybinding.
.sp
Files listed in a file named \fI.hidden\fR in the current directory will be hidden as well whenever hidden files are not shown (wildcards are supported).
.sp
\fBb)\fR Directories: via the \fB\-\-only\-dirs\fR command line switch and the \fBAlt+,\fR keybinding.
.sp
\fBc)\fR Filenames and file types: either via a regular expression or a file type character (see below) using the \fBft\fR command (the \fBFilter\fR option in the configuration file and the \fBCLIFM_FILTER\fR environment variable are also available). For example, to exclude backup files (ending with a tilde):
.sp
 \fBCLIFM_FILTER=\'!.*~$\' clifm\fR
.sp
or (in the configuration file):
.sp
 \fBFilter="!.*~$"\fR
.sp
or (via the \fIft\fR command):
.sp
 \fBft !.*~$\fR
.sp
See the \fBft\fR command for a few more examples.
.sp
\fBd)\fR Filtering files via the TAB key:
.sp
You can filter files \fBby name\fR using wildcards. For example: `\fBp *.mp3<TAB>\fR` (or `\fB/*.mp3<TAB>\fR`) to get a list of MP3 files in the current directory.
.sp
Files can also be filtered \fBby MIME\-type\fR using the  \fB@\fR prefix. Type `\fB@<TAB>\fR` to list all MIME\-types found in the current directory, or `\fB@query<TAB>\fR` to list all files whose MIME\-type includes the string "query". For example, `\fB@image<TAB>\fR` will list all files in the current directory whose MIME type includes the string "image".
.sp
Finally, files can be filtered as well \fBby file type\fR using the \fB=\fR prefix followed by a file type character (see below). For example, `\fB=l<TAB>\fR` to get a list of symbolic links in the current directory.
.sp
Note: If using tab completion in fzf mode, multi\-selection is allowed (except in the case of `\fB@<TAB>\fR`).
.sp
Available file type characters:

 \fBb\fR: Block devices
 \fBc\fR: Character devices
 \fBC\fR: Files with capabilities (1)(2)
 \fBd\fR: Directories
 \fBD\fR: Empty directories
 \fBf\fR: Regular files
 \fBF\fR: Empty regular files
 \fBg\fR: SGID files (2)
 \fBh\fR: Multi\-hardlink files (directories excluded)
 \fBl\fR: Symbolic links
 \fBL\fR: Broken symbolic links
 \fBo\fR: Other\-writable files (2)
 \fBp\fR: FIFO/pipes (2)
 \fBs\fR: Sockets (2)
 \fBO\fR: Doors (Solaris only)
 \fBP\fR: Event ports (Solaris only)
 \fBt\fR: Files with the sticky bit set (2)
 \fBu\fR: SUID files (2)
 \fBx\fR: Executable files (2)
.sp
(1) Only for tab completion
.sp 0
(2) Not available in light mode
.sp
\fBe)\fR Grouping files (via automatic expansion):
.sp
By means of the above features, you can easily group and operate on groups of files. For example, this command:
.sp
 \fBvt b: @image =x sel t:work *.txt\fR
.sp
opens a virtual directory (see the \fBVIRTUAL DIRECTORIES\fR section below) automatically expanding the above expressions as follows:

.TS
allbox tab(;);
lb lb
l l.
Expression ; Description
b: ; All your bookmarks (paths)
@image ; All image files (CWD)
=x ; All executable files (CWD)
sel ; All selected files
t:work ; All files tagged as \fIwork\fR
*.txt ; All .txt files (CWD)
.TE

.SH 6. KEYBOARD SHORTCUTS
.sp
The following is the list of default keyboard shortcuts:

.TS
allbox tab(:);
lb lb
lb l.
Key : Description
Ctrl+Alt+j : Toggle the vi editing mode
Right, Ctrl+f : Accept the current suggestion
Alt+Right, Alt+f : Accept the first suggested word (up to the first slash or space)
Alt+c : Clear the current command line buffer
Alt+q : Delete last word (up to last slash or space)
Alt+i, Alt+. : Toggle hidden\-files
Alt+l : Toggle long\-view
Alt++ : Toggle follow\-links (long view only)
Alt+g : Toggle list\-directories\-first
Alt+, : Toggle list\-only\-directories
Ctrl+Alt+l : Toggle max\-filename\-length
Ctrl+Alt+i, Alt+Tab : Toggle disk\-usage\-analyzer
Alt+w : Toggle full\-path\-filenames (virtual directories)
Ctrl+l : Refresh the screen (reprint the list of files in the current directory)
Alt+t : Clear program messages
Alt+m : List mountpoints
Alt+b : Launch the Bookmark Manager
Alt+h : Show the directory history
Alt+n : Create new file or directory
Alt+s : Open the Selection Box
Alt+\- : Launch the file previewer (\fIview\fR command)
Alt+a : Select all files in the current directory
Alt+d : Deselect all files
Alt+0 : Run MAS, the file pager
Alt+p : Change to the pinned directory
Alt+1 : Switch to workspace 1
Alt+2 : Switch to workspace 2
Alt+3 : Switch to workspace 3
Alt+4 : Switch to workspace 4
.TE

.TS
allbox tab(:);
lb lb
lb l.
Key : Description
Alt+r : Change to the root directory
Alt+e, Home : Change to the home directory
Alt+u, Shift+Up : Change to the parent directory
Alt+j, Shift+Left : Change to the previously visited directory
Alt+k, Shift+Right : Change to the next visited directory
Ctrl+Alt+o : Switch to the previous profile
Ctrl+Alt+p : Switch to the next profile
Ctrl+Alt+a : Archive selected files
Ctrl+Alt+e : Export selected files
Ctrl+Alt+r : Rename selected files
Ctrl+Alt+d : Remove selected files
Ctrl+Alt+t : Trash selected files
Ctrl+Alt+v : Copy selected files to the current directory
Alt+y : Toggle light-mode
Alt+z : Switch to previous sort method
Alt+x : Switch to next sort method
Ctrl+Alt+x : Launch a new instance of \fBclifm\fR
Ctrl+y : Copy the contents of the line buffer to the clipboard \fB(1)\fR
F1 : Go to the manpage
F2 : List commands
F3 : List keybindings
F6 : Open the MIME list file
F7 : Open the shotgun configuration file
F8 : Open the current color scheme file
F9 : Open the keybindings file
F10 : Open the main configuration file
F11 : Open the bookmarks file
F12 : Quit
.TE

.TP
\fB(1)\fR This shortcut is bound to the \fBxclip\fR plugin. See the \fBPLUGINS\fR section below for more information.
.TP
\fBCustomizing keybindings\fR
.TP
The above are the default keyboard shortcuts. However, they can be customized using the `\fBkb bind\fR` command (for more information consult the description for the \fBkb\fR command above).
.TP
The keybindings configuration file can also be manually edited using the `\fBkb edit\fR` command (for more details take a look at the description provided by this file itself).
.TP
.B Readline keybindings
.TP
Readline keybindings for command line editing, such as \fBCtrl+a\fR, to move the cursor to the beginning of the line, or \fBCtrl+e\fR, to move it to the end, should work out of the box. Of course, you can modify these keybindings by editing the \fI~/.config/clifm/readline.clifm\fR file, following the same rules used by readline itself for the \fI~/.inputrc\fR file. For more information consult the readline documentation (\fBreadline\fR(3)).
.TP
.B Keybindings for plugins
.TP
\fBclifm\fR provides sixteen customizable keybindings for custom plugins. The procedure for setting a keybinding for a plugin is the following:
.TP
\fB1\fR. Copy your plugin to the plugins directory (or use any of the plugins already in there)
.TP
\fB2\fR. Link pluginx (where \'x\' is the plugin number [1\-16]) to your plugin using the `\fBactions edit\fR` command. E.g.: "plugin1=myplugin.sh"
.TP
\fB3\fR. Set a keybinding for pluginx using the `\fBkb edit\fR` command. E.g.: "plugin1:\\M\-7"
.TP
.B Kitty keyboard protocol support
.TP
The Kitty Keyboard Protocol offers a significant improvement over the current handling of keyboard events in terminals. This protocol utilizes \fBCSI u\fR escape sequences and introduces several enhancements, including the ability to use extra modifier keys such as Super, Meta, and Hyper.
.TP
To enable the Kitty Keyboard Protocol, follow these steps:
.TP
\fB1\fR. Download the specially crafted keybindings configuration file designed to handle \fBCSI u\fR escape sequences (\fIhttps://github.com/leo-arch/clifm/blob/master/misc/kitty/keybindings.clifm\fR).
.TP
\fB2\fR. Configure \fBclifm\fR to use this new file instead of the default one (\fI~/.config/clifm/keybindings.clifm\fR) by using the \fB\-k\fR command line switch. Alternatively, you can replace the default file with the new one.
.TP
\fB3\fR. If your terminal is not already set up to send \fBCSI u\fR sequences, use the \fB\-\-kitty\-keys\fR command line switch.
.TP
Summarizing, and once you have the replacement keybindings file in place, run the following command:

 \fBclifm -k /path/to/keybindings/file --kitty-keys\fR
.TP
Important
.TP
When using the Kitty Keyboard Protocol, the \fBCtrl+d\fR shortcut (used to quit secondary prompts) will no longer work. To resolve this issue, add the following line to your \fIkitty.conf\fR file:

 \fBmap control+d send_text kitty \\x04\fR
.TP
This will force the terminal to emit the old value for this specific key binding, providing a workaround for the issue.
.TP
.B Troubleshooting
.TP
Some of these default keybindings may not work on your console/terminal emulator, depending on your system. Some useful tips on this regard:
.TP
Haiku terminal: Most of these keybindings will not work on the Haiku terminal, since \fBAlt\fR plays here the role \fBCtrl\fR usually plays in most other systems (see the Haiku documentation). To fix this, set your custom keybindings.
.TP
Kernel builtin console: Key sequences involving the \fBShift\fR key (\fBShift\-Up\fR, \fBShift\-Left\fR, and \fBShift\-Right\fR in our case) will just not work. Use the alternative key sequences instead: \fBAlt+u\fR, \fBAlt+j\fR, and \fBAlt+k\fR respectively.
.TP
NetBSD (wsvt25) and OpenBSD (vt220) kernel consoles: Key sequences involving the Alt key will not work out of the box. Here\'s how to make them work:

 On OpenBSD:
 1) Copy \fI/etc/examples/wsconsctl.conf\fR to \fI/etc\fR (if it does not already exist)
 2) Add the \fBmetaesc\fR flag to your current keyboard encoding. For example: \fBkeyboard.encoding=us.metaesc\fR
 You may need to reboot the machine for changes to take effect.

 On NetBSD:
 Add the \fBmetaesc\fR flag to your current encoding in \fI/etc/wscons.conf\fR. For example: \fBencoding us.metaesc\fR
 You may need to reboot the machine for changes to take effect.
.TP
Konsole: If \fBShift+left\fR and \fBShift+right\fR are not already bound to any function, you need to bind them manually. Go to Settings \-> Edit current profile \-> Keyboard \-> Default (Xfree4), and add these values:
 Left+Shift	\\E[1;2D
 Right+Shift	\\E[1;2C
.sp
If they are already bound, by contrast, you only need to unbound them. Go to "Settings \-> Configure keyboard shortcuts", click on the corresponding keybinding, and set it to "Custom (none)").
.TP
Terminology/Yakuake: Shift+left and Shift+right are already bound to other functions, so that you only need to unbind them or rebind the corresponding functions to different key sequences.
.TP
Of course, the above two procedures should be similar in case of keybinding issues in other terminal emulators.
.TP
In case some of these keybindings are already used by your Window Manager, you only need to unbind the key or rebind the corresponding function to another key. Since each Window Manager uses its own mechanisms to set/unset keybindings, you should consult the appropriate manual.
.SH 7. THEMING
.TP
All customization settings (theming) are made from a single configuration file (the color scheme file), installed by default in \fI$XDG_DATA_DIRS/clifm/colors\fR (usually \fI/usr/local/share/clifm/colors\fR or \fI/usr/share/clifm/colors\fR), though color scheme files found in \fI$XDG_CONFIG_HOME/clifm/colors\fR (usually \fI$HOME/.config/clifm/colors\fR) take precedence.
.TP
\fBNote\fR: Color scheme files are copied automatically to the local colors directory when running the `\fBcs edit\fR` command.
.TP
Each color scheme may include any (or all) of the below options:
.TP
 \fBFiletypeColors\fR = Colors for different file types, such as directory, regular files, and so on. See the \fBCOLORS\fR section below.
.TP
 \fBInterfaceColors\fR = Colors for \fBclifm\fR's interface, such as ELNs, file properties bits, suggestions, syntax highlighting, etc. See the \fBCOLORS\fR section below.
.TP
 \fBExtColors\fR = Colors for files based on filename extensions. See the \fBCOLORS\fR section below.
.TP
 \fBDateShades\fR = A comma delimited list of colors used to print timestamps (long view). Consult the default color scheme file for more information.
.TP
 \fBSizeShades\fR = A comma delimited list of colors used to print file sizes (long view). Consult the default color scheme file for more information.
.TP
 \fBDirIconColor\fR = Color for the directory icon (when icons are enabled). See the \fBCOLORS\fR section below. Only when using icons\-in\-terminal or Nerfonts. If using rather emoji\-icons (default build), this option is ignored.
.TP
 \fBPrompt\fR = Define \fBclifm\fR\'s prompt. See the \fBTHE PROMPT\fR section below.
.TP
 \fBDividingLine\fR = The line dividing the current list of files and the prompt. See the \fBTHE DIVIDING LINE\fR below.
.TP
 \fBFzfTabOptions\fR = Options to be passed to fzf when using the fzf mode for tab completion, including colors. See the \fBTAB COMPLETION\fR section below.
.TP
The color scheme (or just theme) can be set either via the command line (\fB\-\-color\-scheme=NAME\fR), via the \fBColorScheme\fR option in the main configuration file, or using the \fBcs\fR command, for instance, `\fBcs mytheme\fR`. Enter just `\fBcs\fR` to list available color schemes (tab completion is available). To edit the current color scheme enter `\fBcs edit\fR`.
.TP
.B 1. COLORS
.TP
If 256 colors support is detected for the current terminal, and not set in any other way (either via the \fBColorScheme\fR option in the configuration file or the \fB\-\-color\-scheme\fR command line switch), \fBclifm\fR will attempt to load the 256 colors version of the default color scheme: default\-256. Otherwise, it falls back to the 16 colors version.
.TP
All color codes are specified in the corresponding color scheme file (by default \fI~/.config/clifm/colors/default.clifm\fR). You can edit this file pressing \fBF8\fR or entering `\fBcs edit\fR`.
.TP
\fBa. Color codes\fR
.TP
Colors are specified using the same format used by \fBdircolors\fR(1) and the \fBLS_COLORS\fR environment variable, namely, a colon separated list of codes with this general format: \fINAME=VALUE\fR, where \fINAME\fR refers to an interface element, and \fIVALUE\fR to the color to be used by this element.
.TP
This is the list of \fBfile type codes\fR (you will find them in the \fBFiletypeColors\fR section of the current color scheme file):
.sp
 di = directory
 ed = empty directory
 nd = directory with no read/exec permission \fB(1)\fR
 fi = regular file
 ef = empty regular file
 nf = file with no read permission \fB(1)\fR
 ln = symlink
 mh = multi\-hardlink file
 or = orphaned or broken symlink
 bd = block device
 cd = character device
 pi = FIFO, pipe
 so = socket
 su = SUID file
 sg = SGID file
 tw = sticky and other writable directory
 st = sticky and not other writable directory
 ow = other writable directory
 ex = executable file
 ee = empty executable file
 ca = file with capabilities
 oo = door/port (Solaris only)
 no = unknown file type
 uf = unaccessible files (\fBfstatat\fR(3) error)
.sp
\fB(1)\fR If unset, the corresponding file type color is used and an exclamation mark is printed before the filename in the file list (provided icons are disabled -otherwise the lock icon is used- and \fBclifm\fR is not running in light mode -in light mode access checks are not performed). The color used for the exclamation mark is \fBxf\fR (see below).
.TP
The following codes are used for different interface elements (in the \fBInterfaceColors\fR section of the current color scheme file):
.sp
 \fBSuggestions\fR
 sb = shell builtins
 sc = aliases and shell command names
 sd = internal commands description
 sf = ELNs, bookmarks, tag, and filenames
 sh = commands history entries
 sx = suggestions for \fBclifm\fR's internal commands and parameters
 sp = suggestions pointer (e.g.: 56 > filename, where '>' is the suggestion pointer)
 sz = filenames (fuzzy)

 \fBSyntax highlighting\fR
 hb = brackets \'()[]{}\'
 hc = comments (lines starting with '#')
 hd = slashes
 he = expansion chars \'~*\'
 hn = numbers
 hp = option parameters (starting with \'\-\')
 hq = quoted strings (both single and double quotes)
 hr = process redirection (>)
 hs = process separators (; & |)
 hv = variable names (starting with \'$\')
 hw = Backslash (aka whack)

 \fBPrompt elements\fR
 li = selected files
 ti = trash indicator
 ac = autocommand indicator
 em = error message indicator
 wm = warning message indicator
 nm = notice message indicator
 ro = read-only mode indicator
 si = stealth mode indicator
 tx = command line text (regular prompt)

 \fBFile properties\fR
 db  = file allocated blocks
 dd  = last access/change/modification time \fB(1)\fR
 de  = file inode number (long view only)
 dg  = group ID (provided the user has access to the file)
 dk  = number of links (long view only)
 dn  = dash (unset property)
 do  = octal value for file properties
 dp  = SUID, SGID, sticky bit
 dr  = read permission bit
 dt  = timestamp identification mark \fB(2)\fR
 du  = user ID (provided the user has access to the file)
 dw  = write permission bit
 dxd = executable permission bit (directories)
 dxr = executable permission bit (regular files)
 dz  = size \fB(1)\fR
.sp
 \fB(1)\fR If unset (default), gradient colors are used (based on file size and file age).
.sp 0
 \fB(2)\fR If unset (default), a dimmed version of the current timestamp color is used.
.sp
 \fBNote\fR: For a better graphical representation of file properties, 256 colors are used if possible (otherwise, \fBclifm\fR falls back to 16 colors).
.sp
 \fBMiscellaneous interface elements\fR
 fc  = file counter
 df  = default color
 dl  = dividing line
 el  = ELN color
 lc  = symbolic link indicator (\fBColorLinksAsTarget\fR only)
 mi  = misc indicators (disk usage, sort method, bulk rename, jump database list)
 ts  = matching suffix for possible tab completed entries
 tt  = tilde for truncated filenames
 wc  = welcome message
 wsN = color for workspace N (1\-8)
 xs  = exit code: success
 xf  = exit code: failure
.TP
\fBb. Supported colors\fR
.TP
4-bit, 8-bit (256-colors), and 24-bit (true colors) colors are supported.
.TP
Colors are defined basically as SGR sequences (excluding the initial escape character and the ending 'm'), the same sequences used by the \fBLS_COLORS\fR environment variable. However, shortcuts for 8-bit (256-colors) and 24-bit (true color) colors are available. For example:
.sp
 31            4-bit
 38;5;160      8-bit
 @160          8-bit  (short)
 38;2;255;0;0  24-bit
 #ff0000       24-bit (short, HEX) \fB(1)\fR
.TP
\fB(1)\fR Both three and six digits hexadecimal colors (lower or uppercase) are supported. For example, \fB#f00\fR amounts to \fB#ff0000\fR.
.TP
A \fBsingle\fR attribute can be added to hex colors and 256 colors (in the form @NUM) using a dash and an attribute number (#RRGGBB-[1-9] or @NUM-[1-9]), where 1-9 is:
.sp
 1: Bold or increased intensity
 2: Faint, decreased intensity or dim
 3: Italic (Not widely supported)
 4: Underline
 5: Slow blink
 6: Rapid blink
 7: Reverse video or invert
 8: Conceal or hide (Not widely supported)
 9: Crossed\-out or strike
.TP
\fBNote\fR: Some attributes may not be supported by all terminal emulators.
.TP
For example, for bold red the hex code is \fB#ff0000\-1\fR, while the 256-colors code is \fB\@160\-1\fR. (for more information about SGR sequences consult \fIhttps://en.wikipedia.org/wiki/ANSI_escape_code\fR).
.TP
\fBc. Color names\fR
.TP
\fBXterm\-like color names\fR are also supported. For example: \fBex=DodgerBlue2\fR.
.TP
This is the list of color names (as defined by \fBvifm\fR(1)):
.sp
  0 Black                  86 Aquamarine1           172 Orange3
  1 Red                    87 DarkSlateGray2        173 LightSalmon3_2
  2 Green                  88 DarkRed_2             174 LightPink3
  3 Yellow                 89 DeepPink4_2           175 Pink3
  4 Blue                   90 DarkMagenta           176 Plum3
  5 Magenta                91 DarkMagenta_2         177 Violet
  6 Cyan                   92 DarkViolet            178 Gold3_2
  7 White                  93 Purple                179 LightGoldenrod3
  8 LightBlack             94 Orange4_2             180 Tan
  9 LightRed               95 LightPink4            181 MistyRose3
 10 LightGreen             96 Plum4                 182 Thistle3
 11 LightYellow            97 MediumPurple3         183 Plum2
 12 LightBlue              98 MediumPurple3_2       184 Yellow3_2
 13 LightMagenta           99 SlateBlue1            185 Khaki3
 14 LightCyan             100 Yellow4               186 LightGoldenrod2
 15 LightWhite            101 Wheat4                187 LightYellow3
 16 Grey0                 102 Grey53                188 Grey84
 17 NavyBlue              103 LightSlateGrey        189 LightSteelBlue1
 18 DarkBlue              104 MediumPurple          190 Yellow2
 19 Blue3                 105 LightSlateBlue        191 DarkOliveGreen1
 20 Blue3_2               106 Yellow4_2             192 DarkOliveGreen1_2
 21 Blue1                 107 DarkOliveGreen3       193 DarkSeaGreen1_2
 22 DarkGreen             108 DarkSeaGreen          194 Honeydew2
 23 DeepSkyBlue4          109 LightSkyBlue3         195 LightCyan1
 24 DeepSkyBlue4_2        110 LightSkyBlue3_2       196 Red1
 25 DeepSkyBlue4_3        111 SkyBlue2              197 DeepPink2
 26 DodgerBlue3           112 Chartreuse2_2         198 DeepPink1
 27 DodgerBlue2           113 DarkOliveGreen3_2     199 DeepPink1_2
 28 Green4                114 PaleGreen3_2          200 Magenta2_2
 29 SpringGreen4          115 DarkSeaGreen3         201 Magenta1
 30 Turquoise4            116 DarkSlateGray3        202 OrangeRed1
 31 DeepSkyBlue3          117 SkyBlue1              203 IndianRed1
 32 DeepSkyBlue3_2        118 Chartreuse1           204 IndianRed1_2
 33 DodgerBlue1           119 LightGreen_2          205 HotPink
 34 Green3                120 LightGreen_3          206 HotPink_2
 35 SpringGreen3          121 PaleGreen1            207 MediumOrchid1_2
 36 DarkCyan              122 Aquamarine1_2         208 DarkOrange
 37 LightSeaGreen         123 DarkSlateGray1        209 Salmon1
 38 DeepSkyBlue2          124 Red3                  210 LightCoral
 39 DeepSkyBlue1          125 DeepPink4_3           211 PaleVioletRed1
 40 Green3_2              126 MediumVioletRed       212 Orchid2
 41 SpringGreen3_2        127 Magenta3              213 Orchid1
 42 SpringGreen2          128 DarkViolet_2          214 Orange1
 43 Cyan3                 129 Purple_2              215 SandyBrown
 44 DarkTurquoise         130 DarkOrange3           216 LightSalmon1
 45 Turquoise2            131 IndianRed             217 LightPink1
 46 Green1                132 HotPink3              218 Pink1
 47 SpringGreen2_2        133 MediumOrchid3         219 Plum1
 48 SpringGreen1          134 MediumOrchid          220 Gold1
 49 MediumSpringGreen     135 MediumPurple2         221 LightGoldenrod2_2
 50 Cyan2                 136 DarkGoldenrod         222 LightGoldenrod2_3
 51 Cyan1                 137 LightSalmon3          223 NavajoWhite1
 52 DarkRed               138 RosyBrown             224 MistyRose1
 53 DeepPink4             139 Grey63                225 Thistle1
 54 Purple4               140 MediumPurple2_2       226 Yellow1
 55 Purple4_2             141 MediumPurple1         227 LightGoldenrod1
 56 Purple3               142 Gold3                 228 Khaki1
 57 BlueViolet            143 DarkKhaki             229 Wheat1
 58 Orange4               144 NavajoWhite3          230 Cornsilk1
 59 Grey37                145 Grey69                231 Grey100
 60 MediumPurple4         146 LightSteelBlue3       232 Grey3
 61 SlateBlue3            147 LightSteelBlue        233 Grey7
 62 SlateBlue3_2          148 Yellow3               234 Grey11
 63 RoyalBlue1            149 DarkOliveGreen3_3     235 Grey15
 64 Chartreuse4           150 DarkSeaGreen3_2       236 Grey19
 65 DarkSeaGreen4         151 DarkSeaGreen2         237 Grey23
 66 PaleTurquoise4        152 LightCyan3            238 Grey27
 67 SteelBlue             153 LightSkyBlue1         239 Grey30
 68 SteelBlue3            154 GreenYellow           240 Grey35
 69 CornflowerBlue        155 DarkOliveGreen2       241 Grey39
 70 Chartreuse3           156 PaleGreen1_2          242 Grey42
 71 DarkSeaGreen4_2       157 DarkSeaGreen2_2       243 Grey46
 72 CadetBlue             158 DarkSeaGreen1         244 Grey50
 73 CadetBlue_2           159 PaleTurquoise1        245 Grey54
 74 SkyBlue3              160 Red3_2                246 Grey58
 75 SteelBlue1            161 DeepPink3             247 Grey62
 76 Chartreuse3_2         162 DeepPink3_2           248 Grey66
 77 PaleGreen3            163 Magenta3_2            249 Grey70
 78 SeaGreen3             164 Magenta3_3            250 Grey74
 79 Aquamarine3           165 Magenta2              251 Grey78
 80 MediumTurquoise       166 DarkOrange3_2         252 Grey82
 81 SteelBlue1_2          167 IndianRed_2           253 Grey85
 82 Chartreuse2           168 HotPink3_2            254 Grey89
 83 SeaGreen2             169 HotPink2              255 Grey93
 84 SeaGreen1             170 Orchid
 85 SeaGreen1_2           171 MediumOrchid1
.TP
Just as with hex colors, a single attribute can be appended to color names. For example, \fBSteelBlue1\-1\fR to get the bold version of this color.
.TP
\fBd. Color variables\fR
.TP
Up to 128 custom color variables can be used via the \fBdefine\fR keyword to make it easier to build and read theme files. Example:

 \fBdefine FTYPE_DIR=31\fR
 \fBdefine IFACE_ELN=4;38;2;255;255;0;48;2;0;14;191\fR

 \fBFiletpeColors="di=FTPYE_DIR:"\fR
 \fBInterfaceColors="el=IFACE_ELN:"\fR
.TP
These variables can only be used for \fBFiletypeColors\fR, \fBInterfaceColors\fR, \fBExtColors\fR, and \fBDirIconColor\fR. The \fBPrompt\fR line (if using a prompt code) uses full SGR sequences or prompt\-specific color codes instead.
.TP
\fBe. Examples\fR
.TP
A few examples to put all this together:

 \fBfi=4;31\fR    (regular files are 4-bit underlined red)
 \fBdi=@33-1\fR   (directories are 8-bit bold light-blue)
 \fBln=#5fd7ff\fR (symbolic links are 24-bit light cyan)
 \fBso=Yellow3\fR (socket files are Yellow3)
.TP
More complex combinations can be achieved using complete SGR sequences (for example, to add a background color). E.g.:

 \fBfi=4;38;2;245;76;48;2;0;0;255\fR
.TP
will print regular files underlined and using a bold orange color on a blue background. In this case, just make sure to use a terminal emulator supporting true colors. To test your terminal color capabilities use the \fIcolors.sh\fR script (in the plugins directory).
.TP
\fBNote\fR: It may happen that, for some reason, you need to force \fBclifm\fR to use colors despite the value of the \fBTERM\fR variable. The OpenBSD console, for example, sets \fBTERM\fR to vt220 by default, which, according to the terminfo database, does not support color. However, the OpenBSD console does actually support color. In this case, you can set the \fBCLIFM_FORCE_COLOR\fR a specific value even if the value of \fBTERM\fR says otherwise. Supported values are: 8, 16, 256, truecolor (or 24bit).
.TP
To see a colored list of the currently used colors run the `\fBcs preview\fR` command.
.TP
To run without colors use the \fB\-\-no\-color\fR command line option or set either \fBCLIFM_NO_COLOR\fR or \fBNO_COLOR\fR environment variables to any value. For more information about the no\-color initiative see \fIhttps://no\-color.org/\fR
.TP
For a full no\-color experience recall to edit your prompt removing all color codes.
.TP
.B 2. THE PROMPT
.TP
\fB2.a. Description\fR
.TP
\fBClifm\fR's prompt is taken from the \fBPrompt\fR line in the color scheme file using a prompt name as defined in the prompts file, for example, Prompt="security\-scanner".
.TP
Each prompt is built following almost the same escape codes and rules used by the Bash prompt, except that it does not accept shell functions (like conditionals and loops). Command substitution (in the form \fB$(cmd)\fR), prompt modules (in the form \fB${module}\fR), color codes (in the form \fB%{color}\fR), string literals, and escape sequences can be used to build the prompt.
.TP
Consult the prompts file (using the `\fBprompt edit\fR` command) for detailed information and examples on how to build a prompt.
.TP
By default, for intstance, \fBclifm\fR's prompt line is this:

\fB"%{reset}\\I[\\S%{reset}]\\l \\A \\u:\\H %{cyan}\\w%{reset}\\n<\\z%{reset}> %{blue}\\$%{reset} "\fR

.TP
which once decoded should look something like this:

 \fB[1] 13:45 user:hostname /my/path
 <0> $\fR
.TP
with the workspace number printed in blue, the path in cyan, the last exit status in green (or red in case of error), and the dollar sign in blue.
.TP
A more "classic" prompt can be generated as follows:

 \fB"\\u@\\U \\w> "\fR
.TP
or, using now command substitution:

 \fB"$(whoami)@$(hostname) $(pwd)> "\fR
.TP
\fB2.b. Prompt notifications\fR
.TP
A bold red \'R\' at the left of the prompt reminds the user that the program is running as root. A bold green \'S\' indicates that there are elements in the Selection Box. In the same way, a cyan \'T\' means that there are currently files in the trash can, just as a bold blue \'S\' means that the program is running in stealth mode. Finally, \fBclifm\fR makes use of three kind of messages: errors (a red \'E\' at the left of the prompt), warnings (a yellow \'W\'), and simple notices (a green \'N\').
.TP
If \fBNotifications\fR is set to \fBfalse\fR in the prompts file, the above notifications won\'t be printed by the prompt, but are still available to the user as escape codes (see above) and environment variables (see the \fBENVIRONMENT\fR section below) to build custom prompts.
.TP
\fB2.c. The Warning Prompt\fR
.TP
The suggestions system includes a secondary, warning prompt, used to highlight wrong/invalid/non\-existent command names. Once an invalid command is entered, the regular prompt will be switched to the warning prompt.
.TP
The wrong command name check is omitted if the input string:

 Is quoted (e.g.: "string" or \'string\')
 Is bracketed (e.g.: (string), [string], or {string})
 It starts with a stream redirection character (e.g.: <string or >string)
 Is a comment (e.g.: #string)
 It starts with one or more spaces
 Is an assignment (e.g.: foo=var)
 It is escaped (e.g.: \\string)
.TP
The warning prompt can be customized by means of the same rules used by the regular prompt. To use a custom warning prompt, modify the \fBWarningPrompt\fR line in the prompts file (via the `\fBprompt edit\fR` command). It defaults to

\fB"%{reset}%{b:red}(!)%{n:dim} > "\fR

.TP
the last line of the regular prompt will become "\fB(!) > \fR", with "(!)" printed in bold red.
.TP
To disable this feature use the \fB\-\-no\-warning\-prompt\fR command line switch or set the \fBEnableWarningPrompt\fR option to \fBfalse\fR in the prompts file.
.TP
\fBNote\fR: Bear in mind that the warning prompt depends on the suggestions system, so that it will not be available if this system is disabled.
.TP
\fB2.d. The Right Prompt\fR
.TP
The right prompt is just like the regular prompt, but printed on the right side of the screen.
.TP
Use the \fBRightPrompt\fR option in the prompts file to set a right prompt. For a concrete usage example see the \fBinfo\fR prompt in the prompts file.
.TP
A few caveats:

 \fBa\fR. Right prompts only work with multiline regular prompts (in the case of a single line regular prompt, the right prompt is not printed).
 \fBb\fR. Multiple lines are not supported by right prompts (only the first line will be printed).
 \fBc\fR. If the decoded right prompt exceeds the number of available terminal columns, the prompt is not printed.
.TP

\fB3. THE DIVIDING LINE\fR
.TP
The line dividing the current list of files and the prompt. It can be customized using the \fBDividingLine\fR option in the color scheme file to fit your prompt design and/or color scheme.
.TP
\fBDividingLine\fR accepts one or more ASCII or Unicode characters (in both cases you only need to type/paste here the chosen character(s)). If only one character is specified (by default, "\-"), it will be repeatedly printed to fulfill the current line up to the right edge of the screen or terminal window. If you don't want to cover the whole line, specify two or more characters, in which case only these characters (and no more) will be used as dividing line. For example: "\-\-\-\-\-\-\->". To use an empty line, set \fBDividingLineChar\fR to "0" (that is, as a character, not as a number). Finally, if this value is not set, a special line drawn with box\-drawing characters will be used (box\-drawing characters are not supported by all terminal emulators).
.TP
The color of this line is set via the \fBdl\fR color code in the color scheme file. Consult the \fBCOLOR CODE\fR section above for more information.
.TP
\fB4. FZF WINDOW\fR
.TP
Refer to the \fBTAB COMPLETION\fR section below.

.SH 8. BUILT\-IN EXPANSIONS
.TP
\fB1. ELNs\fR
.sp
A number representing the \fBEntry List Number\fR (ELN) of a listed file is expanded to its corresponding filename. You can type `\fBELN<TAB>\fR` to convert the ELN into the filename. ELN ranges are also supported. For example, `\fBt 1-3 10 24\fR` will move the files with ELNs 1 through 3, 10 and 24 to the trash.
.sp
Bear in mind that ELNs will only be expanded provided some filename is listed on the screen under the corresponding numbers. For example: `\fBdiff 1 118\fR` will only expand '1', but not '118', if there is no ELN 118. In the same way, the range 1\-118 will only be expanded provided there are 118 or more filenames listed on the screen. Note that the second field of a range can be omitted, in which case the ELN of the last listed file is assumed (e.g.: provided there are 100 listed files, 12\- is equivalent to 12\-100).
.sp
Since ranges can be a bit tricky, tab completion is available to make sure this range actually includes the desired filenames.
.sp
If this feature somehow conflicts with the command you want to run, say, `\fBchmod 644 ...\fR`, because the current number of files is equal or larger than 644 (in which case \fBclifm\fR will expand that number), then you can simply run the command as external: `\fB;chmod 644 ...\fR`
.TP
\fB2. Selected files\fR
.sp
The \fBs:\fR prefix expands to all \fBselected files\fR (as absolute paths). To get the list of selected files type `\fBs:<TAB>`. The \fBsel\fR keyword can be used as well, but, unlike \fBs:\fR, it can only be used after the first word, i.e., as a command parameter. For example, `\fBm sel\fR` (or `\fBm s:\fR`) will move all selected files to the current directory. To trash or remove selected files, simply run `\fBt sel\fR` or `\fBr sel\fR` respectively.
.TP
\fB3. Bookmarks\fR
.sp
The \fBb:\fR prefix expands to all \fBbookmarked files\fR (as absolute paths). Enter `\fBb:\fR` followed by a bookmark name to expand to the absolute path referred to by that bookmark. To get the list of available bookmarks, type `\fBb:<TAB>\fR`. For example, `\fBp b:work\fR` will print the file properties of the bookmark named \fIwork\fR.
.TP
\fB4. Tagged files\fR
.sp
The \fBt:\fR prefix is used to access \fBtagged files\fR. Type `\fBt:<TAB>\fR` to get the list of available tags. Type `\fBt:TAG<TAB>\fR` to get the list of files tagged as TAG. \fIt:TAG\fR expands to all files tagged as TAG (as absolute paths). For example, `\fBs t:old\fR` will select all files tagged as "old".
.TP
\fB5. Workspaces\fR
.sp
The \fBw:\fR prefix expands to a specific \fBworkspace\fR (as absolute path). For example, `\fBc sel w:3\fR` will copy all selected files to the third workspace.
.TP
\fB6. File types\fR
.sp
The \fB=\fR (equal) prefix is used to filter files according to their \fBtype\fR. Type `\fB=<TAB>\fR` to get the list of available file types in the current directory. Also, type `\fB=x<TAB>\fR` to get the list of executable files in the current directory. For example, `\fBr =D =F =L\fR` will remove all empty directories, empty regular files, and broken symbolic links in the current directory.
.TP
\fB7. MIME types\fR
.sp
The \fB@\fR (at sign) prefix is used to filter files according to their \fBMIME type\fR. Type `\fB@<TAB>\fR` to get the list of MIME types available in the current directory. For example, `\fBbr @image\fR` will bulk rename all files in the current directory whose MIME type includes the word "image".
.TP
\fB8. Pinned directory\fR
.sp
A single comma (,) expands to the currently \fBpinned directory\fR (see the \fBpin\fR command for more information). For example, the command `\fBc =o ,\fR` will copy all other-writable files in the current directory to the pinned directory.
.TP
\fB9. Parent directories\fR
.sp
Via the \fIfastback\fR function, you can quickly change to any parent directory using a series of dots. A single dot (.) refers to the current directory, and two dots (..) refer to the parent directory. This pattern continues, so three dots (...) refer to the parent of the parent directory, four dots (....) refer to the parent of the parent of the parent directory, and so on. In general, n dots refer to the nth level of parent directories.
.TP
Needless to say, combinations are possible. For example, the command `\fBc sel b:work @image =L 1-3 ,\fR` will copy all selected files, the bookmark named \fIwork\fR, all images, broken symbolic links in the current directory, and files with ELNs 1 through 3 to the pinned directory.
.TP
\fBNote\fR: If using the fzf mode for Tab completion (default), you can operate on \fIsome\fR files of any of these groups of files using the TAB key to mark files in the list. For example, you can type `\fBCMD sel<TAB>\fR` to get the list of selected files, then use the TAB key to mark the desired files. Press \fBEnter\fR or \fBRight\fR to insert the marked files into the current command line.

.SH
\fB9. TAB COMPLETION\fR
.TP
There are four modes for tab completion: \fBstandard\fR (interface provided by readline), \fBfzf\fR, which depends on \fBfzf\fR (\fIhttps://github.com/junegunn/fzf\fR) (version 0.18.0 or later), \fBfnf\fR (\fIhttps://github.com/leo\-arch/fnf\fR), and \fBsmenu\fR (\fIhttps://github.com/p\-gen/smenu\fR). By default, if the \fBfzf\fR binary is found in \fB$PATH\fR, \fBclifm\fR will attempt to use \fBfzf\fR to display completions. You can force the use of the remaining modes via the \fB\-\-stdtab\fR, \fB\-\-fnftab\fR, and \fB\-\-smenutab\fR command line switches. The \fBTabCompletionMode\fR option in the configuration file can be used to permanently set the tab completion mode.
.TP
If using the \fBfzf\fR mode, the completions interface can be customized using the \fBFzfTabOptions\fR option in the color scheme file. \-\-height, \-\-margin, +i/\-i, \-\-read0, \-\-query, and \-\-ansi will be appended to set up some details of the completions interface. Set this value to \fBnone\fR to pass no option, to the empty string to load the default values, or to any other custom value. Unless set to \fBnone\fR, any option specified here will override \fBFZF_DEFAULT_OPTS\fR.
.TP
Default values for this option are:
 \-\-color=16,prompt:6,fg+:\-1,pointer:4,hl:5,hl+:5,gutter:\-1,marker:2,border:7:dim \-\-bind tab:accept,right:accept,left:abort,alt-p:toggle\-preview \-\-inline-info \-\-layout=reverse\-list \-\-preview\-window=wrap,border\-left
.TP
Consult \fBfzf\fR(1) for more information.
.TP
If set neither in \fBFzfTabOptions\fR nor in \fBFZF_DEFAULT_OPTS\fR (in this order), the height of the fzf window is set to the default value: 40% of the current terminal number of line/rows.
.TP
To use fzf global values (defined in \fBFZF_DEFAULT_OPTS\fR), set \fBFzfTabOptions\fR to \fBnone\fR.
.TP
File previews are available in fzf mode via \fBshotgun\fR. See the \fBSHOTGUN\fR section above.
.TP
Image previews are available via the \fBclifmimg\fR plugin. Run `\fBhelp image\-previews\fR` for more information.
.TP
If using the \fBsmenu\fR mode, the interface can be customized using the \fBCLIFM_SMENU_OPTIONS\fR environment variable. For example:
.sp
 export CLIFM_SMENU_OPTIONS="\-a t:2,b b:4 c:r ct:2,r sf:6,r st:5,r mt:5,b"
.TP
Consult \fBsmenu\fR(1) for more information.
.TP
For information about how to customize \fBfnf\fR consult \fBfnf\fR(1).
.TP
\fBClifm\fR can perform fuzzy tab completion (just as suggestions) for filenames and paths (e.g. "dwn" is completed/suggested as "Downloads"). To enable this feature use the \fB\-\-fuzzy\-matching\fR command line switch or set \fBFuzzyMatching\fR to \fBtrue\fR in the configuration file.

.SH 10. FILE OPENER
As \fBclifm\fR\'s builtin file opener, \fBLira\fR takes care of opening files when no opening application has been specified in the command line (or when running as a standalone file opener, via the \fB--open\fR command line switch). It does this by automatically parsing a MIME list file (see the \fBFILES\fR section below): it looks first for a matching pattern (either a MIME type or a filename), then checks the existence of the command associated to this pattern, and finally executes it.
.TP
\fBLira\fR is controlled using the \fBmime\fR command. File associations are stored in the MIME list file and can be edited using the `\fBmime edit\fR` command.
.TP
When running for the first time, or whenever the MIME list file cannot be found, \fBclifm\fR will copy the MIME definitions file from the \fBDATADIR\fR directory (usually \fI/usr/share/clifm/mimelist.clifm\fR) to the local configuration directory.
.TP
\fBLira\fR will check the file line by line, and if a matching line is found, and if at least one of the specified applications exists, this application will be used to open the corresponding associated file. Else, the next line will be checked. In other words, the precedence order is top to bottom (for lines) and left to right (for applications).
.TP
\fBNote\fR: In case of directories (whose MIME type is \fBinode/directory\fR), the entry will be used \fBonly\fR for the open\-with command (\fBow\fR).
.TP
\fBA note about MIME types
.TP
File MIME types are determined using \fBlibmagic\fR –the same library used by \fBfile\fR(1)–, which, though highly reliable, is not bullet-proof. Sometimes it fails, either because the appropriate MIME type is not in its database, or because the database is just wrong. In either case, you can manually map file extensions to MIME types using a specific file (by default, \fI~/.mime.types\fR).\fB(1)\fR
.TP
By way of example, \fBlibmagic\fR knows nothing about ILBM image files, and returns \fBapplication/zip\fR for OpenRaster images. Create \fI~/.mime.types\fR with the following content:

 image/x-ilbm       iff lbm
 image/openraster   ora
.TP
Restart \fBclifm\fR and these MIME types will be immediately associated to all files having the specified extensions (to test it, run `\fBmm info\fR` on any of these files).\fB(2)\fR
.TP
If required, edit the mimelist and the preview files (`\fBmm edit\fR` and `\fBview edit\fR`, to specify how files are opened and previewed respectively), and add a new line handling the corresponding MIME types (say, "image/x-ilbm=APP" and "image/openraster=APP"). See below for more information.
.TP
\fB(1)\fR To use a different file, set \fB$CLIFM_MIMETYPES_FILE\fR to the desired file, for example, `\fBCLIFM_MIMETYPES_FILE=/etc/mime.types clifm\fR`.
.TP
\fB(2)\fR In case of issues, bear in mind that the \fImime.types\fR file is read top to bottom, and that, in case of conclicts (mostly duplicate extensions), only the last entry is effective.
.TP
\fBImportant\fR: Though sometimes convenient, determining file types by means of filename extensions alone is unreliable: a file, no matter its type, can bear any file extension, without restriction. Because of this, you might end up executing a command that was not intended due to wrong file identification. Be extra careful when doing this.
.TP
\fB1. Syntax\fR
.TP
In its most basic form, each line in the MIME list file consists of:
.TP
\fBa)\fR A left value: this is just a regular expression indicating what we are trying to match (it can be a filename, a file extension, or a MIME type).
.TP
\fBb)\fR A right value: a semicolon separated list of commands to be used as the opening application (the first existing program found in this list will be used).
.TP
For example:

 ^text/.*=leafpad
.TP
which is to be read as follows: Open text files (in this case we are partially matching a MIME type) using \fBleafpad\fR.
.TP
As explained below, this basic rule can be modified to get much more control on \fBwhat\fR we are matching and \fBhow\fR we execute the opening application.
.TP
The syntax is this:

 [!][X:][N:]REGEX=CMD [ARGS] [%[f,x]] [![E,O]] [&]; ...
.TP
Note that this syntax departs from the Freedesktop specification in that we do not rely on desktop files (mostly used by desktop environments), but rather on \fBcommands and parameters\fR.
.TP
\fB2. The left value (REGEX)\fR
.TP
\fB2.1. The X prefix\fR
.TP
Without any prefixes, the rule will attempt to match MIME types, disregarding if we are running on a graphical or non-graphical environment. For example,

 \fB^text/.*=leafpad\fR
.TP
instructs \fBlira\fR to open all text files using \fBleafpad\fR, no matter if we are running on a graphical or non-graphical environment.
.TP
However, we usually do not want to use \fBleafpad\fR if we are not running on a graphical environment. In this case, we can write a double rule as follows:

 \fBX:^text/.*=leafpad
 !X:^text/.*=nano\fR
.TP
where the first rule (via the \fBX\fR prefix) is intended for use on graphical environments, where we can use \fBleafpad\fR, and the second one (via the \fB!X\fR prefix) for non-graphical environments, where we rather prefer to use \fBnano\fR.
.TP
\fB2.2. The N prefix\fR
.TP
Sometimes MIME types are not enough to identify a file, or we just want to match a specific filename. In this case, we can use the \fBN\fR prefix to tell \fBLira\fR that we want to match a filename instead of a MIME type. For example:

 \fBX:N:^filename.txt$=leafpad\fR
.TP
in which case we want to match exactly the filename \fIfilename.txt\fR (no matter its MIME type).
.TP
If we want to match file extensions, instead of entire filenames, we can use a regular expression, as follows:

 \fBX:N:.*\.txt$=leafpad\fR
.TP
Here, we are not matching a specific filename, but a specific file extension, so that the rule reads as follows: open all files ending with .txt using \fBleafpad\fR.
.TP
\fB3. The right value (CMD)\fR
.TP
The right value is a semicolon separated list of commands, each of which contains a command, and optionally, command arguments and modifiers. For example:

 \fBX:N:.*\.txt$=leafpad --sync,geany,mousepad,nano\fR
.TP
which means: Open .txt files (graphical environments only) using `\fBleafpad --sync\fR`, or, if not found, \fBgeany\fR`, \fBmousepad\fR, or \fBnano\fR, in this order. The file to be opened will be appended to the command string, say `\fBleafpad --sync FILE\fR`.
.TP
\fB3.1. The %f placeholder\fR
.TP
Use the \fB%f\fR placeholder to specify the position of the file to be opened in the command, for example:

 \fBmpv %f --terminal=no\fR
.TP
will be translated into: `\fBmpv FILE --terminal=no\fR`
.TP
If the placeholder is not specified, the file to be opened will be appended to the command string. Thus, this: `\fBmpv --terminal=no\fR` amounts to this: `\fBmpv --terminal=no FILE\fR`.
.TP
\fB3.2. STDERR and STDOUT\fR
.TP
Sometimes we might need to silence either standard error (STDERR), standard output (STDOUT), or both. Use \fB!E\fR and \fB!O\fR to silence them respectively. Both can be used together: \fB!EO\fR. Example: `\fBleafpad %f !EO\fR`, or, to silence only STDERR: `\fBleafpad %f !E\fR`.
.TP
\fB3.3. Run in the background\fR
.TP
The ampersand character (\fB&\fR) can be used, as usual, to run the opening application in the background. Example: `\fBleafpad %f &\fR`.
.TP
\fB3.4. The %x flag\fR
.TP
The \fB%x\fR flag is a shortcut for "\fB%f !EO &\fR": the command will be executed in the background and both STDOUT and STDERR will be silenced. As a plus, the command is executed in a new session, i.e. detached from the running terminal (via \fBsetsid\fR(3). This flag is recommended to open files via graphical applications. Examples:
.TP
For GUI applications:

 \fBAPP %x\fR
.TP
For terminal applications:

 \fBTERM -e APP %x\fR
.TP
Replace \fITERM\fR and \fIAPP\fR by the appropriate values (say, xterm and vi respectively). The \fB\-e\fR option might vary depending on the terminal emulator used.
.TP
\fBNote\fR: In case of archives, the builtin \fBad\fR command can be used as opening application.
.TP
\fB3.5. Environment variables\fR
.TP
Environment variables (e.g. \fB$EDITOR\fR, \fB$VISUAL\fR, \fB$BROWSER\fR, and even \fB$PAGER\fR) are also recognized by \fBLira\fR. You can even set custom environment variables to be used exclusively by \fBclifm\fR. For example, you can set \fBCLIFM_TERM\fR, \fBCLIFM_EDITOR\fR, and \fBCLIFM_PDF\fR, and then use them to define some associations:

 \fBX:text/plain=$CLIFM_TERM \-e $CLIFM_EDITOR %f &\fR
 \fBX:N:.*\\.pdf$=$CLIFM_PDF %f &\fR
.TP
\fB3.6. Using shell scripts\fR
Bear in mind that commands will be executed directly without shell intervention, so that no shell goodies (like pipes, conditions, loops, etc) are available. In case you need something more complex than a single command (including shell capabilities) write your own script and place the path to the script in place of the command. For example:

 \fBX:^text/.*:~/scripts/my_cool_script.sh\fR
.TP
\fB4. Examples\fR:
.TP
Match a complete filename:

 \fBX:N:some_filename=nano;vim;vi;emacs\fR
.TP
\fBNote\fR: If the filename contains a dot, quote it like this: some_filename\\.ext (to prevent the REGEX parser from interpreting the dot).
.TP
Open video files with \fBmpv\fR in the foreground and silence STDERR:

 \fB^video/.*=mpv %f !E\fR
.TP
Open video files with \fBgmplayer\fR in the background and silence both STDERR and STDOUT:

 \fB^video/.*=gmplayer %f !EO & (or 'gmplayer %x')\fR
.TP
Match multiple filenames (starting with "str"):

 \fBX:N:^str.*=leafpad %x;mousepad %x;kate %x;gedit %x\fR
.TP
Match a single extension:

 \fBX:N:.*\\.txt$=leafpad %x;mousepad %x;kate %x;gedit %x\fR
 \fB!X:N:.*\\.^txt$=nano;vim;vi;emacs\fR
.TP
Match multiple extensions:

 \fBX:N:.*\\.(sh|c|py|pl)$:geany %x;leafpad %x;nano\fR
.TP
Match a single mimetype:

 \fB!X:^audio/mp3$=mpv %f \-\-terminal=no;ffplay \-nodisp \-autoexit;mpv;mplayer\fR
.TP
Match multiple mimetypes:

 \fBX:^audio/.*=mplayer;mplayer2;vlc %x;gmplayer %x;smplayer %x;totem %x\fR
.TP
In case of MIME types, you can also write the entire expression without relying on any regular expression. For example:

 \fB!X:text/plain=$TERM \-e $EDITOR %x\fR
.TP
For more information take a look at the mimelist file itself (\fBF6\fR or `\fBmm edit\fR`).
.TP
\fB5. Using a third\-party opener\fR
.TP
This can be done in two ways:
.TP
\fBa.\fR Set \fBOpener\fR in the configuration file to the name of the desired opener. For example, to use Ranger's \fBrifle\fR(1):

 \fBOpener=rifle\fR
.TP
or, if you prefer \fBxdg\-open\fR(1):

 \fBOpener=xdg\-open\fR
.TP
\fBb.\fR Tell \fBLira\fR to open all files, no matter the MIME type or filename, via the desired opener. For example:

 \fB.*=rifle\fR
.TP
\fB6. Using Clifm as a standalone file opener\fR
.TP
Though \fBclifm\fR is a file manager, it can be used as a simple file opener via the \fB\-\-open\fR command line option. For example:

 \fBclifm \-\-open /path/to/my_file.jpg
 clifm \-\-open /path/to/my_dir
 clifm \-\-open https://some_domain\fR
.TP
\fBNote\fR: When opening web resources \fBclifm\fR will query the mimelist file using text/html as MIME type. Whatever association it finds for this specific MIME type will be used to open the web resource.

.SH 11. SHOTGUN
\fB1. Tab completion with file previews\fR
.TP
\fBShotgun\fR is \fBclifm\fR\'s builtin files previewer. Though, as described below, it may be used as a standalone and general purpose file previewer (similar in this regard to \fBpistol\fR(1)), it is mainly intended to be used by \fBclifm\fR's tab completion function running in fzf mode: every time tab completion is invoked for files, \fBshotgun\fR will be executed with the currently highlighted file as argument (as shown below) to generate the preview. Set the \fBFzfPreview\fR option in the configuration file to \fBfalse\fR (or run with \fB\-\-no\-fzfpreview\fR) to disable this feature.
.TP
\fBShotgun\fR is also used by the \fIview\fR command to display file previews in full screen.
.TP
\fB2. Running as a standalone files previewer\fR
.TP
Executed via the \fB\-\-preview\fR command line switch, \fBshotgun\fR performs file preview for any file passed as argument. For example:

 \fBclifm \-\-preview myfile.txt\fR
.TP
This command generates a preview of the file \fImyfile.txt\fR and then quits \fBclifm\fR.
.TP
\fB3. Customization
.TP
Previewing applications (based on either MIME type or filename) are defined in a configuration file (\fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/preview.clifm\fR) using the same syntax used by \fBLira\fR (the builtin file opener). See the \fBFILE OPENER\fR section above.
.TP
You can set an alternative configuration file using the \fB\-\-shotgun\-file\fR command line switch:

 \fBclifm \-\-shotgun\-file=/path/to/shotgun/config/file \-\-preview=myfile.txt\fR
.TP
To customize the appearance of the preview window, use the \fB\-\-preview\-window\fR option in the \fBFzfTabOptions\fR line in the current color scheme file. For example, if you want the preview window down the file list (instead of to the right):

 \fB\-\-preview\-window=down\fR
.TP
Default keybindings for the preview window:
.sp
 \fBAlt+p\fR: Toggle the preview window
 \fBCtrl+Up\fR / \fBShift+Up\fR: Scroll the preview window up one line
 \fBCtrl+Down\fR / \fBShift+Down\fR: Scroll the preview window down one line
 \fBAlt+Up\fR: Scroll the preview window up one page
 \fBAlt+Down\fR: Scroll the preview window down one page
.TP
Keybindings can be customized using the \fB\-\-bind\fR option in the \fBFzfTabOptions\fR field in the color scheme file.
.TP
Consult \fBfzf\fR(1) for more information.
.TP
\fB4. Image previews\fR
.TP
Image previews are available via the \fBclifmimg\fR plugin. Run `\fBhelp image-previews\fR` or consult the Wiki for more information: \fIhttps://github.com/leo\-arch/clifm/tree/master/misc/tools/imgprev\fR.

.SH 12. AUTO\-SUGGESTIONS
\fBGemini\fR is a builtin suggestions system (similar to that provided by the Fish shell). As you type, \fBGemini\fR will suggest possible completions right after the current cursor position.

The following checks are available (the order can be customized, see below):
.sp
a. ELNs
.sp
b. \fBclifm\fR commands and parameters
.sp
c. Entries in the command history list (already used commands)
.sp
d. Filenames in the current working directory and paths \fB(1)\fR
.sp
e. Entries in the jump database
.sp
f. Aliases names
.sp
g. Bookmarks names
.sp
h. Program names in \fBPATH\fR
.sp
i. Shell builtins \fB(2)\fR

\fB(1)\fR Fuzzy suggestions are supported. For example: dwn > Downloads. Enable this feature using the \fB\-\-fuzzy\-marching\fR command line switch or setting \fBFuzzyMatching\fR to \fBtrue\fR in the configuration file.
.sp
\fB(2)\fR The shell name is taken from \fI/bin/sh\fR. The following shells are supported: bash, dash, fish, ksh, tcsh, and zsh. Command names are checked in the following order: \fBclifm\fR internal commands, commands in \fBPATH\fR, and shell builtins.
.sp
\fBNote\fR: By default, a brief description for internal commands is suggested. You can disable this feature via the \fBSuggestCmdDesc\fR option in the configuration file.
.sp
To accept the entire suggestion press Right or \fBCtrl+f\fR: the cursor will move to the end of the suggested command and the suggestion color will change to that of the typed text; next, you can press \fBEnter\fR to execute the command as usual. Otherwise, if the suggestion is not accepted, it will be simply ignored and you can continue editing the current command line however you want.

To accept the first suggested word only (up to first slash or space), press rather \fBAlt+Right\fR or \fBAlt+f\fR. Not available for ELNs, aliases and bookmarks names.

Bear in mind that suggestions for ELNs, aliases, bookmarks names, the jump function (invoked by the \fIj\fR command), just as filenames and paths (if fuzzy\-suggestions are enabled) do not work as the remaining suggestions: they do not suggest possible completions for the current input, but rather the value pointed to by it. For example, if you type "12" and the current list of files includes a filename whose ELN is '12', the filename corresponding to this ELN will be printed next to "12" as follows: \fB12_ > filename\fR (where the underscore is the current cursor position). Press Right or \fBCtrl+f\fR to accept the suggestion, in which case the text typed so far will be replaced by the suggestion.

The order of the suggestion checks can be customized using the \fBSuggestionStrategy\fR option in the configuration file. Each check is assigned a lowercase character:

 a = Aliases names
 c = Possible completions
 e = ELNs
 f = Files in the current directory
 h = Entries in the commands history
 j = Entries in the jump database

The value taken by \fBSuggestionStrategy\fR is a string containing one or more of the above characters. The characters order in this string specifies the order in which the suggestion checks will be performed. For example, to perform all checks in the same order above, the value of the string should be \fBacefhj\fR (without quotes). Or, if you prefer to run the history check first: \fBhacefj\fR. Finally, you can ignore one or more checks by just omitting the corresponding character (to skip all checks, set the option value to a single dash (\-)). So, to ignore the aliases and the ELN checks, set \fBSuggestionStrategy\fR to \fBhcfj\fR. The default value for this option is \fBehfjac\fR.

\fBNote\fR: The check for program names in \fBPATH\fR is always executed at last, except when the \fBExternalCommands\fR option is disabled, in which case suggestions for them are simply not displayed.

Suggestions will be printed using one of the following color codes (see the \fBCOLOR CODES\fR section above):

\fBsf\fR: Used for file and directory names. This includes suggestions for ELNs, bookmarks names, files in the current directory, and possible completions. Default value: 2;4;36 (dimmed underlined cyan)

\fBsh\fR: Used for entries in the commands history.

\fBsc\fR: Used for aliases and program names in \fBPATH\fR.

\fBsx\fR: Used for \fBclifm\fR internal commands and parameters.

\fBsp\fR: Greater\-than sign (>) used when suggesting ELNs, bookmarks, and aliases names.

You can set \fBSuggestFiletypeColor\fR to \fBtrue\fR in the configuration file to use the color of the file type of the current filename (as set in the color scheme file) instead of the value of
\fBsf\fR. For example, if a suggestion is printed for a file that is a symbolic link, \fBln\fR or \fBor\fR (if it's a broken link) will be used instead of \fBsf\fR.

.SH 13. SHELL FUNCTIONS
\fBClifm\fR includes a few shell functions to perform specific actions (cd\-on\-quit, and subshell\-notice). Take a look at the corresponding files, in \fI/usr/share/clifm/functions\fR, and follow the instructions. Needles to say, you can write your own functions.

.SH 14. PLUGINS
Plugins are just scripts or programs (written in any language) intended to add, extend or improve \fBclifm\fR\'s functionalities. They are linked to actions names defined in a dedicated configuration file (\fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/actions.clifm\fR).

\fBNote\fR: In \fBstealth mode\fR, since access to configuration files is not allowed, plugins are disabled.

To list available actions and the plugins they are linked to, run `\fBactions\fR`.

To execute a given plugin, enter the corresponding action name (plus parameters if required).

To get information about a specific plugin, enter the action name followed by `\fB\-\-help\fR`.

Though several plugins are provided at installation time (in the \fIplugins\fR directory), you can write your owns as you like, with any language you like, and for whatever purpose you want. Writing plugins is generally quite easy; but your mileage may vary depending on what you are trying to achieve. A good place to start is examining the provided plugins and reading the \fBactions\fR command description, just as the \fBENVIRONMENT\fR and \fBFILES\fR sections below.

A convenient helper script is provided to get a consistent look across all plugins, specially those running fzf. This helper script is located in \fIDATADIR/clifm/plugins/plugins\-helper\fR, but it will be overridden by \fI$XDG_CONFIG_HOME/clifm/plugins/plugins\-helper\fR if found. The location of this file is set by \fBclifm\fR itself in the \fBCLIFM_PLUGINS_HELPER\fR environment variable to be used by plugins. Source the file and use any of the functions and variables provided by it to write a new fzf plugin:

    # Source our plugins helper
    if [ \-z "$CLIFM_PLUGINS_HELPER" ] || ! [ \-f "$CLIFM_PLUGINS_HELPER" ]; then
        printf "\fBclifm\fR: Unable to find plugins\-helper file\\n" >&2
        exit 1
    fi
    # shellcheck source=/dev/null
    . "$CLIFM_PLUGINS_HELPER"

Plugins can talk to \fBclifm\fR via a dedicated pipe created for this purpose and exposed via an environment variable (\fBCLIFM_BUS\fR). Write to the pipe and \fBclifm\fR will hear and handle the message immediately after the plugin's execution. If the message is a path, \fBclifm\fR will run the \fBopen\fR function, changing the current directory to the new path, if a directory, or opening it with the default associated application if a file. Otherwise, if the message is not a path, it will be taken and executed as a command. Examples:

    \'echo "/tmp" > "$CLIFM_BUS"\' tells \fBclifm\fR to change the current directory to \fI/tmp\fR

    \'echo "s *.png" > "$CLIFM_BUS"\' makes \fBclifm\fR select all files in the current directory ending with ".png"

The pipe (\fBCLIFM_BUS\fR) is deleted immediately after the execution of its content and recreated before running any other plugin.
.sp
This is a list of available plugins:
.TS
allbox;
lb lb lb
l l l.
Action name	Description	Dependencies
T{
bn
T}	Create files in batch	\-
T{
bcp
T}	Copy files in batch	\-
T{
bmi
T}	Import bookmarks	\-
T{
clip
T}	Interact with the system clipboard	\fB(1)\fR
T{
\fIunset\fR
T}	Test terminal\'s colors capability	\fB(2)\fR
T{
cr
T}	Copy files to a remote location	fzf, and scp, ffsend, or croc
T{
da
T}	Disk usage analyzer	du, fzf
T{
dr
T}	Drag and drop files	dragon or dragon\-drag\-and\-drop
T{
fdups
T}	Find/remove file dups	\fB(3)\fR
T{
+
T}	Find files in the current directory	fzf or rofi
T{
_ (underscore)
T}	Quickly change directory	fzf
T{
h
T}	Browse the commands history	fzf
T{
\- (yes, just a dash)
T}	Navigate/select/preview files	See section below
T{
*
T}	Select files (includes flat view)	fzf, find
T{
**
T}	Deselect files	fzf
T{
\fIunset\fR
T}	Show git repo status	git \fB(4)\fR
T{
ih
T}	Browse \fBclifm\fR's manpage	fzf
T{
i
T}	Image thumbnails previewer	sxiv, feh or lsix
T{
++
T}	Jump to a directory in the jump database	fzf or rofi
T{
kd
T}	Decrypt a GnuPG encrypted file	gpg, tar, sed, grep
T{
ke
T}	Encrypt files/dirs using GnuPG	gpg, tar, sed, fzf, awk, xargs
T{
ml
T}	List files by a given MIME type	fzf, file
T{
music
T}	Create a music playlist	mplayer
T{
gg
T}	Pipe files in CWD through a pager	less, column
T{
ptot
T}	Preview PDF files as text	pdftotext
T{
rrm
T}	Recursively remove files	find, fzf
T{
//
T}	Search files by content	fzf, ripgrep
T{
\fIunset\fR
T}	Update plugins	\fB(5)\fR
T{
vid
T}	Preview video files thumbnails	ffmpegthumbnailer
T{
vt
T}	Virtual directory for sets of files	sed
T{
wall
T}	Set image as wallpaper	\fB(6)\fR
T{
\fIunset\fR
T}	Pick/select files via \fBclifm\fR	\fB(7)\fR
T{
Ctrl+y
T}	Copy the line buffer to the clipboard	\fB(8)\fR
.TE

.sp
\fB(1)\fR xclip or xsel (Xorg), wl\-copy/wl\-paste (Wayland), clipboard (Haiku), clip (Cygwin), pbcopy/pbget (MacOS), termux\-clipboard\-get/termux\-clipboard\-set (Termux), cb (cross\-platform: \fIhttps://github.com/Slackadays/Clipboard\fR)
.sp
\fB(2)\fR \fIcolors.sh\fR (by default unset)
.sp
\fB(3)\fR find, md5sum, sort, uniq, xargs, sed, stat
.sp
\fB(4)\fR The \fIgit_status.sh\fR plugin is not intended to be used as a normal plugin, that is, executed via an action name, but rather to be executed as a prompt command (it will be executed immediately before each prompt). Add this line to the main configuration file:

 promptcmd /usr/share/clifm/plugins/git_status.sh
.sp
Whereas this plugin provides basic Git integration, it could be easily modified (it is just a few lines long) to include whatever git function you might need.
.sp
\fB(5)\fR \fIupdate.sh\fR (by default unset)
.sp
\fB(6)\fR feh, xloadimage, hsetroot, or nitrogen (for X); swww or swaybg (for Wayland)
.sp
\fB(7)\fR \fIfile_picker.sh\fR (by default unset). Usage example: `\fBls -ld $(file_picker.sh)\fR`
.sp
\fB(8)\fR Dependencies: cb, wl\-copy, xclip, xsel, pbcopy, termux\-clipboard\-set, clipboard, or clip. Consult the plugin file itself (\fIxclip.sh\fR) for more information

.B Dependencies of the previewer plugin (fzfnav.sh)

  \fBarchives\fR: atool, bsdtar, or tar
  \fBimages\fR: kitty terminal, imagemagick, and ueberzug or viu or catimg or img2txt or pixterm
  \fBfonts\fR: fontpreview or fontforge
  \fBdocs\fR: libreoffice, catdoc, odt2txt, pandoc
  \fBPDF\fR: pdftoppm, pdftotext or mutool
  \fBepub\fR: epub\-thumbnailer
  \fBDjVu\fR: djvulibre or djvutxt
  \fBpostscript\fR: ghostscript
  \fBvideos\fR: ffmpegthumbnailer
  \fBaudio\fR: ffmpeg, mplayer, or mpv
  \fBweb\fR: w3m, links, elinks, or pandoc
  \fBmarkdown\fR: glow
  \fBhighlight\fR: bat, highlight, or pygmentize
  \fBtorrent\fR: transmission\-cli
  \fBjson\fR: python or pq
  \fBfile info\fR: exiftool, mediainfo, or file

.TP
To run the \fIpager.sh\fR plugin, for example, you only need to enter the corresponding action name, in this case \fBgg\fR. In case of need, all plugins provide a \fB\-h,\-\-help\fR switch for a brief usage description.
.TP
\fBNote\fR: The \fBfzfnav\fR plugin uses \fBfzf\fR(1) to navigate the filesystem and \fIBFG\fR (a script located in the plugins directory) to show previews (to display image previews \fBBFG\fR requires \fBueberzug\fR(1) or the Kitty protocol via the Kitty terminal). A configuration file (\fIBFG.cfg\fR, in the plugins directory itself) is provided to customize the previewer's behavior.
.TP
\fBNote 2\fR: An alternative files previewing function (builtin, and thereby faster than \fBBFG\fR) is provided by \fBshotgun\fR. See the \fBSHOTGUN\fR section above for more information.
.TP
In addition to the builtin \fBBFG\fR previewer, \fBfzfnav\fR supports the use of both Ranger\'s \fIscope.sh\fR script and \fBpistol\fR(1). To use \fBscope\fR, edit the \fBBFG\fR configuration file and set \fIUSE_SCOPE\fR to 1 and \fISCOPE_FILE\fR to the correct path to the \fIscope.sh\fR file (normally \fI$HOME/.config/ranger/scope.sh\fR). To use \fBpistol\fR instead, set \fIUSE_PISTOL\fR to 1.
.TP
.TP
Take a look at the Wiki for more information: \fIhttps://github.com/clifm/wiki/Advanced#plugins\fR

.SH 15. AUTOCOMMANDS
Heavily inspired by \fBVifm\fR, the \fBautocommands\fR function allows the user a fine\-grained control over \fBclifm\fR settings. It is mostly devised as a way to improve performance for remote filesystems (usually slower than local ones) by allowing you to turn off some features (like the file counter) that might greatly affect performance under some circumstances (like remote connections). However, the \fBautocommands\fR function is not restricted to this specific use case: use it for whatever purpose you find useful.
.sp
\fBNote\fR: We describe here \fBpermanent\fR autocommands, which need to be defined in the configuration file. \fBTemporary\fR autocommands (set via the command line and valid only for the current directory and the current session) are also available via the \fBauto\fR command. See above.
.sp
Add a line preceded by the \fBautocmd\fR keyword to the main configuration file. The general syntax is:
 \fIautocmd TARGET cmd,cmd,cmd\fR
.sp
\fBTARGET\fR specifies the object to which subsequent commands will apply. It can match either \fBdirectory names (paths)\fR or \fBworkspaces\fR.
.sp
1. To match directory names use a glob pattern (as specified by \fBglob\fR(7)). If no glob metacharacter is provided, the string will be compared as is to the current working directory. To invert the meaning of a pattern, prepend an exclamation mark. To match all directories under a specific directory (including this directory itself) use the double asterisk (**). A few examples:
.sp
 \fB~/Downloads\fR      Match exactly the Downloads directory (and \fBonly\fR this directory) in your home directory
 \fB~/Downloads/*\fR    Recursively match all subdirectories in \fI~/Downloads\fR (\fBexcluding\fR the Downloads directory itself)
 \fB/~/Downloads/**\fR  Recursively match all subdirectories in \fI~/Downloads\fR (\fBincluding\fR the Downloads directory itself)
 \fB~/Downloads/*.d\fR  Match all subdirectories in \fI~/Downloads\fR ending with ".d" (\fBexcluding\fR the Downloads directory itself)
 \fB!~/Downloads\fR     Match everything except the \fI~/Downloads\fR directory
.sp
2. You can match workspaces using the ampersand character (\fB@\fR) followed by the \fBws\fR keyword and then the workspace number. For example, to match the third workspace: \fB@ws3\fR, or, to match the first workspace, \fB@ws1\fR. To match instead all workspaces except the second one: \fB!@ws2\fR.
.sp
\fBTARGET\fR is followed by a comma separated list of commands:
.sp
\fB!CMD\fR: The exclamation mark allows you to run shell commands, custom binaries or scripts
.sp
The following codes are used to control \fBclifm\fR's file list:
.sp
 \fBCode   Description           Example\fR
 \fBcs\fR     Color scheme          cs=zenburn
 \fBfc\fR     File counter          fc=0
 \fBft\fR     Files filter          ft=.*\\.pdf$
 \fBfz\fR     Recursive dir sizes   fz=1
 \fBhf,hh\fR  Hidden files          hf=0
 \fBlm\fR     Light mode            lm=1
 \fBlv,ll\fR  Long view             lv=0
 \fBmf\fR     Max files             mf=100 \fB(1)\fR
 \fBmn\fR     Max filename length   mn=20 \fB(1)\fR
 \fBod\fR     Only directories      od=1
 \fBpg\fR     Pager                 pg=0
 \fBst\fR     Sort method           st=5
 \fBsr\fR     Reverse sort          sr=1
.sp
To remove a value, set the option to an empty value. For example, to remove the files filter and the color scheme: \fBft=,cs=\fR
.sp
\fB(1)\fR This option supports the \fBunset\fR keyword to remove the corresponding limit. E.g.: \fBmf=unset,mn=unset\fR
.sp
\fBExamples\fR
.sp
 \fB1.\fR Run in light mode and disable the file counter for the \fIremotes\fR directory:\fB(1)\fR
    \fBautocmd /media/remotes/** lm=1,fc=0\fR

 \fB2.\fR Just a friendly reminder:
    \fBautcomd ~/important !printf "Important: keep your fingers outta here!\\n" && read \-n1\fR

 \fB3.\fR This directory has thousands of files. Show only the first hundred and enable the pager:
    \fBautocmd /usr/bin mf=100,pg=1\fR

 \fB4.\fR Lots of media files (with large filenames). Truncate filenames to 20 chars max and run the files previewer:\fB(2)\fR
    \fBautocmd ~/Downloads mn=20,!~/.config/clifm/plugins/fzfnav.sh\fR

 \fB5.\fR I want the second workspace, no matter what the current directory is, to list files in long view:
    \fBautocmd @ws2 lv=1\fR

 \fB6.\fR Mmm, just because I can. Be creative!
    \fBautocmd /home/user hf=0,cs=nord,lv=1
    autocmd / lv=1,fc=0,cs=solarized,st=5\fR
.sp
\fB(1)\fR This is the recommended configuration for remote filesystems.
.sp
\fB(2)\fR As seen here, plugins can be used as well: in this case, we want to run \fBfzfnav\fR (to make use of the files preview capability) whenever we enter the \fIDownloads\fR directory, usually containing videos, music, and images.
\fBNOTE\fR: If you decide to use a plugin, bear in mind that it will not be able to communicate with \fBclifm\fR, because the \fBautocommand\fR function always executes commands as external applications using the system shell.
.sp
Bear in mind that \fBautocmd\fR directives are evaluated from top to bottom, so that subsequent matching entries will overwrite options set by previous entries.
.sp
\fBAutocommand notifications\fR
.sp
By default, a gray 'A' is printed to the left of the prompt whenever an autocommand is active for the current directory.
.sp
The behavior of this indicator can be customized via the \fBInformAutocmd\fR option in the configuration file.
.sp
The color code used to colorize this indicator is \fBac\fR (see the \fBCOLORS\fR section above).
.sp
\fBAutocommand files: \fI.cfm.in\fB and \fI.cfm.out\fR
.sp
To use this feature, you must first set \fBReadAutocmdFiles\fR to \fBtrue\fR in the main configuration file. However, bear in mind that autocommand files will never be read if running on an untrusted environment (i.e. if running with \fB\-\-secure\-cmds\fR, \fB\-\-secure\-env\fR, or \fB\-\-secure\-env\-full\fR).
.sp
Two files are specifically checked by the autocommands function: \fI.cfm.in\fR and \fI.cfm.out\fR (they must be non-empty regular files of at most \fBPATH_MAX\fR (usually 4096) bytes, and no NUL byte must be contained in them).
.sp
The content of these files is a single instruction, either a shell command or, if you need more elaborated stuff, a script (or custom binary). Note that codes to modify \fBclifm\fR's settings (as described above) are not available here.
.sp
If a directory contains a file named \fI.cfm.in\fR, \fBclifm\fR will execute (via the system shell) its content when \fBentering\fR this directory (before listing files). If the file is named rather \fI.cfm.out\fR, its content will be executed immediately after \fBleaving\fR this directory (and before listing the new directory's content).
.sp
For example, if you want a simple notification whenever you enter or leave your home directory, create both \fI.cfm.in\fR and \fI.cfm.out\fR files in the home directory with the following content:
.sp
For \fI.cfm.in\fR:
   printf "Entering %s ..." "$PWD" && read \-n1 && clear
.sp
For \fI.cfm.out\fR:
   printf "Leaving %s ..." "$OLDPWD" && read \-n1

.SH 16. FILE TAGS
.sp
\fBEtiqueta\fR is \fBclifm\fR's builtin files tagging system
.sp
\fB1. How does Etiqueta work?\fR
.sp
File tags are created via symlinks using a specific directory under the user's profile: \fI${XDG_CONFIG_DIR:\-/home/USER/.config}/clifm/profiles/USER/tags\fR
.sp
Every time a new tag is created, a new directory named as the tag itself is created in the tags directory. Tagged files are just symbolic links to the actual files created in the appropriate directory. For example, if you tag \fI~/myfile.txt\fR as \fBwork\fR, a symbolic link to \fI~/myfile.txt\fR, named \fImyfile.txt\fR will be created in \fItags/work\fR.
.sp
\fB2. Handling file tags\fR
.sp
\fBtag\fR is the main \fBEtiqueta\fR command and is used to handle file tags. Its syntax is as follows:

 tag [add, del, list, list\-full, new, merge, rename, untag] [FILE]... [[:]TAG]

\fBNote\fR: The \fB:TAG\fR notation is used for commands taking both file and tag names: `\fBtag add FILES(s) :TAG ...`, to tag files, and `\fBtag untag :TAG file1 file2\fR`, to untag files. Otherwise, \fITAG\fR is used (without the leading colon). For example: `\fBtag new docs\fR`, to create a new tag named \fBdocs\fR, or `\fBtag del png\fR`, to delete the tag named \fBpng\fR.
.sp
Both short and long command format can be used:

.sp
.TS
allbox;
lb lb lb
l l l.
Short format	Long format	Description
T{
ta
T}	tag add	Tag files
T{
td
T}	tag del	Delete tag(s)
T{
tl
T}	tag list	List tags or tagged files
T{
tm
T}	tag rename	Rename tags
T{
tn
T}	tag new	Create new tag(s)
T{
tu
T}	tag untag	Untag file(s)
T{
ty
T}	tag merge	Merge two tags
.TE

.sp
\fB3. Usage examples\fR

.sp
.TS
allbox;
lb lb lb
l l l.
Short format	Long format	Description
T{
tl
T}	tag list	List available tags
T{
\-
T}	tag list\-full	List available tags and all tagged files
T{
tl work
T}	tag list work	List all files tagged as \fIwork\fR
T{
tl file.txt
T}	tag list file.txt	List tags applied to the file \fIfile.txt\fR
T{
tn dogs cats
T}	tag new dogs cats	Create two empty tags: \fIdogs\fR and \fIcats\fR
T{
ta *.png :images :png
T}	tag add *.png :images :png	Tag PNG files as both \fIimages\fR and \fIpng\fR \fB(1) (2)\fR
T{
ta sel :special
T}	tag add sel :special	Tag all selected files as \fIspecial\fR
T{
tr documents docs
T}	tag rename documents docs	Rename the tag \fIdocuments\fR as \fIdocs\fR
T{
ty png images
T}	tag merge png images	Merge the tag \fIpng\fR into \fIimages\fR \fB(3)\fR
T{
td images
T}	tag del images	Remove the tag \fIimages\fR \fB(4)\fR
T{
tu :work file1 dir2
T}	tag untag :work file1 dir2	Untag a few files from \fIwork\fR \fB(5)\fR
.TE

.sp
\fB(1)\fR Tags are created if they do not exist
.sp 0
\fB(2)\fR Since \fIadd\fR is the default action, it can be omitted: `\fBtag *.png :images :png\fR`.
.sp 0
\fB(3)\fR All files tagged as \fBpng\fR will be now tagged as \fBimages\fR, and the \fBpng\fR tag will be removed.
.sp 0
\fB(4)\fR Untag all files tagged as \fBimages\fR and remove the tag itself
.sp 0
\fB(5)\fR Tab completion is available to complete tagged files. If using the fzf mode, multiple files can be selected using the the TAB key.
.sp
\fB4. Operating on tagged files\fR
.sp
The \fBt:TAG\fR expression is used to operate on tagged files via any command, be it internal or external. A few examples:

.sp
.TS
allbox;
lb lb
l l.
Command	Description
T{
p t:docs
T}	Print properties of files tagged as \fIdocs\fR
T{
r t:images
T}	Remove all files tagged as \fIimages\fR
T{
stat t:docs t:work
T}	Run stat(1) over all files tagged as \fBdocs\fR and all files tagged as \fBwork\fR
.TE

.sp
\fB4.1 Operating on specific tagged files\fR
.sp
\fBNote\fR: This feature, as always when multi\-selection is involved, is only available when tab completion mode is set to \fBfzf\fR. See the \fBTAB COMPLETION\fR section above.
.sp
You may not want to operate on \fBall\fR files tagged as some specific tag, say \fBwork\fR, but rather on \fBsome\fR files tagged as \fBwork\fR. Tab completion is used to achieve this aim.
.sp
Let's suppose you have a tag named \fBwork\fR which contains ten tagged files, but you need to operate (say, print the file properties) only on two of them, say, \fIwork1.odt\fR and \fIwork2.odt\fR:
.sp
 \fBp t:work<TAB>\fR

The list of files tagged as \fBwork\fR will be displayed via \fBfzf\fR. Now mark the two files you need using the TAB key, press \fBEnter\fR or \fBRight\fR, and the absolute path to both files will be inserted into the command line. So, `\fBp t:work\fR` will be replaced by `\fBp /path/to/work1.odt /path/to/work2.odt\fR`.

.SH 17. VIRTUAL DIRECTORIES
\fBClifm\fR is able to read and list files from the standard input stream (STDIN). Each file in the list should be an absolute path, terminated with a new line character (\\n) and stripped from extra characters not belonging to the path itself. The size of the input stream buffer is 262MiB (65536 paths, provided each path takes PATH_MAX bytes (usually 4096)).
.sp
Each file passed via standard input is stored as a symbolic link pointing to the original file in a temporary directory (called here virtual directory) with read\-only (0500) permissions. This directory, and all its contents, will be deleted at program exit. Use the \fI\-\-virtual\-dir\fR command line flag to specify a custom directory (it if does not exist, it will be created) instead of the default one, created in the system temporary directory (usually \fI/tmp/clifm/USER/vdir.XXXXXX\fR, where XXXXXX is a random six digits string).
.sp
The user can operate on these files as if they were any other regular file, since \fBall operations performed on these symbolic links\fR (provided the current working directory is the virtual directory where all these files are stored) \fBare performed on the target files and NOT on the symbolic links themselves\fR.
.sp
Once in the virtual directory, files are listed by default using only the base name of the target file. For example, if the target file is \fI/home/user/Downloads/myfile.tar.gz\fR, this file will be listed as \fImyfile.tar.gz\fR. If this file already exists in the virtual directory (because there is another target file with the same base name, say, \fI/home/user/Documents/tars/myfile.tar.gz\fR), a random six digits suffix will be appended to the file (for instance, \fImyfile.tar.gz.12Rgj6\fR).
.sp
Since this listing mode does not allow the user to get a clear idea of the actual location of each listed file, a keybinding (by default \fBAlt+w\fR) is available to toggle short (base names only) and long filenames: in this latter case, filenames are listed using the absolute path to the target file, replacing slashes by colons (:). For example, if the target file is \fI/home/user/Downloads/myfile.tar.gz\fR, it will be listed in the virtual directory as \fIhome:user:Downloads:myfile.tar.gz\fR.
.sp
If you prefer the long names approach, you can use the \fB\-\-virtual\-dir\-full\-paths\fR command line flag.
.sp
\fBNote\fR: Bear in mind that the restore last path function is disabled when listing in this way.
.sp
\fBClifm\fR provides to ways of using virtual directories:
.sp
\fB1\fR. Reading files from the standard input
.sp
\fB2\fR. Listing sets of files via the \fIvirtualize.sh\fR plugin (which is in fact a special use case of point 1)
.sp
\fB1. Standard input\fR
.sp
Examples:

 \fBls \-Ad /var/* | clifm\fR

This command will pass all files in the directory \fI/var\fR to \fBclifm\fR
.sp
If you need to perform more specific queries, you can use \fBfind\fR(1) as follows:

 \fBfind \-maxdepth 1 \-size +500k \-print0 | tr \'\\0\' \'\\n\' | sed \'s/\.\///g\' | clifm\fR

The above command will pass all files in the current directory bigger than 500KiB to \fBclifm\fR.
.sp
You can also use stream redirection:

 \fBls \-Ad $PWD/* > list.txt
 clifm < list.txt\fR
.sp
\fB2. The virtualization plugin\fR
.sp
The \fIvirtualize.sh\fR plugin, bound by default to the \fBvt\fR action name, is intended to provide an easy way of listing sets or collections of files, such as selected, tagged, or bookmarked files. For example, to send all selected files to a virtual directory, you can issue this command:

 \fBvt sel\fR
.sp
and, if you want rather files tagged as PDF:

 \fBvt t:PDF\fR
.sp
Of course, individual files can also be used:

 \fBvt file1 file2 file3\fR
.sp
Once executed, the vt plugin will launch a new instance of \fBclifm\fR (on a new terminal emulator window) where you can operate on the specified files as if they were just normal files. Once done, quit this new instance (via the \fBq\fR command) to return to the primary instance of \fBclifm\fR.
.sp
\fBNote\fR: By default, the terminal emulator used is \fBxterm\fR(1), but it can be changed by editing the plugin script (\fIvirtualize.sh\fR).
.sp
When navigating the filesystem, you can quickly go back to the virtual directory using the \fB\-d\fR option: `\fBvt \-d\fR`. The navigation keys (see the \fBKEYBOARD SHORTCUTS\fR section above) and the \fBCLIFM_VIRTUAL_DIR\fR environment variable are also available (Shift+Left/Shift+Right or `\fBcd $CLIFM_VIRTUAL_DIR\fR`).
.sp
\fBTip\fR: Write an alias to make this even easier:
.sp
 \fBalias vtd=\'cd $CLIFM_VIRTUAL_DIR\'\fR

.SH 18. NOTE ON SPEED
\fBClifm\fR is by itself quite fast by default, but if speed is still an issue, it is possible to get some extra performance.
.sp
The two most time consuming features are:

 \fB1)\fR The file counter, used to print the number of files contained by listed directories. Disabling this option produces a nice performance boost.

 \fB2)\fR In normal mode, \fBfstatat\fR(3) is used to gather information about listed files. Since this function, especially when executed hundreds (and even thousands) of times, is quite time consuming, the \fBlight mode\fR was implemented as an alternative listing process omitting all calls to this function (this does not apply, however, to the long view: since we need to display files information, \fBfstatat\fR(3) is required).
.sp
When running in light mode, however, a few features are lost:
.sp
 1. Only basic file classification is performed, namely, that provided by the \fBd_type\fR field of a \fBdirent\fR struct (see \fBreaddir\fR(3)). Bear in mind, nonetheless, that whenever \fB_DIRENT_HAVE_D_TYPE\fR was not set at compile time, or in case of a \fBDT_UNKNOWN\fR value for a given entry (we may be facing a filesystem not returning the \fBd_type\fR value, for example, loop devices), \fBclifm\fR will fall back to \fBstat\fR(3) to get basic files classification.
.sp
 2. Color per file extension is disabled for performance reasons.
.sp
 3. The marker for selected files (*) is lost as well: to keep track of selected files and thus recognize them in the current list of files, we make use of files device and inode number, which is provided by \fBfstatat(3)\fR.
.sp
Besides these two features, a few more things can be disabled to get some extra speed (though perhaps unnoticeable): icons (if enabled), columns, colors, and, if already running without colors, file type indicators. Because listing lots of files could be expensive and time consuming, you can also try to limit the number of files printed for each visited directory (see the \fBmf\fR command above).
.sp
Despite the above, however, it is important to bear in mind that listing speed does not only depend on the program\'s code and enabled features, but also on the terminal emulator used. Old, basic terminal emulators like Xterm, Aterm, and the kernel builtin console are really slow compared to more modern ones like Urxvt, Lxterminal, ST, and Terminator, to name just a few.
.sp
If using Xterm, a nice speed boost is provided by the fast scroll option: set \fBfastScroll\fR to \fBtrue\fR in your \fI~/.Xresources\fR file. See \fBxterm\fR(1).

.SH 19. KANGAROO FRECENCY ALGORITHM
The directory jumper function is designed to learn the navigation habits of the user. The information is stored in a database (see the \fBFILES\fR section below) used to get the best match for a given string provided by the user. In this sense, Kangaroo is like a quick, smart, and evolved cd function.
.sp
The information stored in the database, always per directory, is:
 a) Permanent entry ('+'): this directory will not be removed from the database, no matter its rank
 b) Number of visits
 c) Date of first visit (seconds since the Unix epoch)
 d) Date of the last visit (seconds since Unix epoch)
 e) The absolute path to each visited directory
.sp
With this information it is possible to build a ranking of directories to offer the user the most accurate matches for each query string. The matching algorithm takes into account mainly two factors: frequency and recency (which is why this kind of algorithm is often called a \fBfrecency\fR algorithm).
.sp
After getting an initial list of matches based on the query string(s) entered by the user, the frequency algorithm is applied on each entry in the list. The algorithm is quite simple: \fB(visits * VISIT\-CREDIT) / days\-since\-first\-visit\fR. As a result, we get the average of visits per day since the day of the first visit (what we call \fIthe directory rank\fR).
.sp
\fBNote\fR: VISIT\-CREDIT is a hardcoded value: 200.
.sp
There are however some further steps in the ranking process: \fBBonus points\fR.
.sp
Extra credits or penalties are assigned based on the directories \fBlast access time\fR according to the following simple algorithms:
 Within last hour:	rank * 4
 Within last day:	rank * 2
 Within last week:	rank / 2
 More than a week:	rank / 4
.sp
If the last query string matches the \fBbasename\fR of a directory, the entry for this directory has 300 extra credits. This is done simply because users normally use directory basenames as query strings: they are easier to remember.
.sp
In the same way, \fBpinned\fR directories get 1000 extra credits, \fBbookmarked directories\fR 500 credits, directories active in a \fBworkspace\fR 300 credits, and directories marked as \fBpermanent\fR 300 credits.
.sp
For example: if the query string is "test", \fI/media/data/test\fR will be matched. Now, if this directory was accessed within the last hour, and its rank was 200, it becomes 800. But, because the search string matches its basename, it gets 300 extra credits, and, if this directory is in addition bookmarked, pinned, and marked as permanent, it gets 1800 extra credits. In this way the total rank of this directory in the matching process is 2900. In doing so, we have more chances of matching what the user actually wanted to match.
.sp
Once all entries in the initial list of matches have been filtered via the above procedure and ranked, we can return the best ranked entry. The higher rank a directory has, the more priority it has over the remaining entries in the initial list of matches.
.sp
Automatic maintenance is done on the database applying a few simple procedures:

 a) If \fBPurgeJumpDB\fR is set to \fBtrue\fR (see the main configuration file), each entry in the database is checked at startup to remove non\-existent directories. This option is set to \fBfalse\fR by default to avoid removing paths pointing to unmounted filesystems (like removable devices or remote locations) which you still might want to keep. Non\-existent directories, however, will be removed soon or later anyway due to their low rank value (see below).

 b) Once the rank of a directory falls below \fBMinJumpRank\fR (by default 10), it is forgotten and deleted from the database. The \fBMinJumpRank\fR value can be customized in the configuration file. To make non\-frequently visited directories disappear quicker from the database, increase this value. If set to 0, by contrast, directories will never be removed from the database.

 c) Once the sum total of ranks reaches \fBMaxJumpTotalRank\fR (by default 100000), each individual rank is divided by a dynamic factor so that the total rank becomes less than or equal to \fBMaxJumpTotalRank\fR. If some rank falls in the process below \fBMinJumpRank\fR (and provided this latter is not 0), it is removed from the database. \fBMaxJumpTotalRank\fR can be modified in the configuration file. The higher the value of \fBMaxJumpTotalRank\fR, the more time directories will be kept in the database.

\fBNote\fR: Directories visited in the last 24 hours, just as pinned, bookmarked directories, and directories currently used in some workspace, will not be removed from the database, no matter what their rank is. In other words, if you want to indefinitely keep a given directory in the jump database, bookmark it, or mark it as permanent (edit the database, via `\fBje\fR` or `\fBj --edit\fR`, and prepend a plus sign (+) to the corresponding entry).
.sp
The idea of 'frecency' was, as far as I know, first devised and designed by Mozilla. See \fIhttps://wiki.mozilla.org/User:Mconnor/Past/PlacesFrecency\fR. However, it is also implemented, though using different algorithms, by different projects like \fBautojump\fR, \fBz.lua\fR, and \fBzoxide\fR.

.SH 20. ENVIRONMENT
The following variables are read at initialization time:
.TP
.B NO_COLOR
If set to any value, \fBclifm\fR will run without colors.
.TP
.B CLIFM_NO_COLOR
Same as \fBNO_COLOR\fR, but specific to \fBclifm\fR.
.TP
.B CLICOLOR_FORCE
Force the use of colors, even if the terminal does not report color support.
.TP
.B CLIFM_FORCE_COLOR
Same as \fBCLICOLOR_FORCE\fR, but accepts a specific color value (8, 16, 256, truecolor or 24bit).
.TP
.B COLORTERM
If set to either \fBtruecolor\fR or \fB24bit\fR, \fBclifm\fR assumes the terminal emulator to be capable of displaying true colors (and thereby also 256 colors), despite what the \fBterminfo\fR(5) database reports.
.TP
.B CLIFM_FILE_COLORS
A colon separated list of file type color codes in the same form specified above in the \fBCOLOR CODES\fR section.
.TP
.B CLIFM_EXT_COLORS
Same as above, but for file extensions.
.TP
.B CLIFM_IFACE_COLORS
Same as above, but for different elements of \fBclifm\fR's interface.
.TP
.B CLIFM_DATE_SHADES
A comma separated list of colors used to print timestamps based on age.
.TP
.B CLIFM_SIZE_SHADES
Same as \fBCLIFM_DATE_SHADES\fR, but for file sizes.
.TP
.B CLIFM_PREVIEW_MAX_SIZE
If running with \fB\-\-preview\fR, or \fBPreviewMaxSize\fR is not set in the configuration file, no preview is generated for files larger that this value. The value must be specified in KiB: for example, 2048 is read as 2 MiB.
.TP
.B CLIFM_TEMPLATES_DIR
A custom file templates directory.
.TP
.B CLIFM_HISTFILE
A custom commands history file.
.TP
.B CLIFM_FILTER
Define a file filter. If set, this variable overrides the \fBFilter\fR option in the configuration file.
.TP
.B CLIFM_SUDO_CMD
Name of the authenticator program. Used by the \fBX\fR command (to launch a new instance of \fBclifm\fR as root), the \fBAlt+v\fR keybinding (to prepend the authenticator program name to the current command line), and for some operations on archives (ISO files). Defaults to \fBsudo\fR (or \fBdoas\fR if compiled on OpenBSD). Example: `\fBCLIFM_SUDO_CMD=doas clifm\fR`.
.TP
.B SHELL
.sp 0
An absolute path to the shell to be used by \fBclifm\fR to run external commands. Only values found in \fI/etc/shells\fR are allowed.
.TP
.B CLIFM_SHELL
Same as \fBSHELL\fR, but specific to \fBclifm\fR (takes precedence over \fBSHELL\fR).
.TP
.B TMPDIR
.sp 0
Path to a directory where temporary files will be created.
.TP
.B CLIFM_TMPDIR
Same as \fBTMPDIR\fR, but specific to \fBclifm\fR (takes precedence over \fBTMPDIR\fR).
.TP
.B TERM
.sp 0
Terminal type for which output is to be prepared.
.TP
.B FZF_DEFAULT_OPTS
A quoted list of options to be passed to fzf (if used for tab completion).
.TP
.B TIME_STYLE
If set from neither \fB\-\-time\-style\fR nor \fBTimeStyle\fR (in the configuration file), use this time style for the long view.
.TP
.B CLIFM_TIME_STYLE
Same as \fBTIME_STYLE\fR, but specific to \fBclifm\fR (takes precedence over \fBTIME_STYLE\fR).
.TP
.B PTIME_STYLE
If set from neither \fB\-\-ptime\-style\fR nor \fBPTimeStyle\fR (in the configuration file), use this time style for the \fBp/pp\fR command and the \fB\-\-stat\fR/\fB\-\-stat\-full\fR command line switches.
.TP
.B CLIFM_COLUMNS
The number of terminal columns.
.TP
.B CLIFM_LINES
The number of terminal lines.
.TP
.B CLIFM_MIMETYPES_FILE
Set a custom mime.types file (instead of the default, \fI~/.mime.types\fR). Consult the \fBFILE OPENER\fR section form more information.
.TP
Except when running in \fBstealth mode\fR, \fBclifm\fR sets the following environment variables:
.TP
.B CLIFM
.sp 0
Path to the configuration directory. By inspecting this variable other programs can find out if they were spawned by \fBclifm\fR. It can also be used to quickly jump to the configuration directory: `\fBcd $CLIFM\fR` or just `\fB$CLIFM\fR`.
.TP
.B CLIFMRC
Path to the main configuration file (by default \fI~/.config/clifm/profiles/default/clifmrc\fR).
.TP
.B CLIFM_PID
PID number of \fBclifm\fR's running instance.
.TP
.B CLIFM_VERSION
Version number of \fBclifm\fR's running instance.
.TP
.B CLIFM_VIRTUAL_DIR
Path to the currently used virtual directory only if (and while) the virtual directory function is exectued. See the \fBVIRTUAL DIRECTORIES\fR section above.
.TP
.B SHLVL
.sp 0
Incremented by one each time a new shell is started.
.TP
.B CLIFMLVL
Same as \fBSHLVL\fR, but specific to \fBclifm\fR.
.TP
If \fBNotifications\fR is set to \fBfalse\fR for the current prompt, the following variables are exported to the environment to be used, if needed, by your custom prompt:
.TP
.B CLIFM_STAT_SEL
Current number of selected files.
.TP
.B CLIFM_STAT_TRASH
Current number of trashed files.
.TP
.B CLIFM_STAT_ERROR_MSGS
Current number of error messages.
.TP
.B CLIFM_STAT_WARNING_MSGS
Current number of warning messages.
.TP
.B CLIFM_STAT_NOTICE_MSGS
Current number of notice messages.
.TP
.B CLIFM_STAT_WS
Current workspace number.
.TP
.B CLIFM_STAT_EXIT
Exit code of the last executed command.
.TP
.B CLIFM_STAT_ROOT
1 if user is root (UID = 0), 0 otherwise.
.TP
.B CLIFM_STAT_STEALTH
1 if running in stealth mode, 0 otherwise.
.TP
When running a plugin, the following environment variables are set:
.TP
.B CLIFM_BUS
The path to a pipe by means of which plugins can talk to \fBclifm\fR. See the \fBPLUGINS\fR section for more information.
.TP
.B CLIFM_COLOR_SCHEME
Set to the name of the current color scheme.
.TP
.B CLIFM_COLORLESS
Set to 1 if running without colors.
.TP
.B CLIFM_CUR_WS
Set to the current workspace number.
.TP
.B CLIFM_DIRS_FIRST
Set to 1 if list-dirs-first is enabled. Otherwise it is set to 0.
.TP
.B CLIFM_FILES_COUNTER
Set to 1 if files-counter is enabled. Otherwise it is set to 0.
.TP
.B CLIFM_FILES_FILTER
Set to the files filter string. Unset if no files filter is set.
.TP
.B CLIFM_FILTER_REVERSE
Set to 1 if filter-reverse is set or to 0 otherwise (unset if no files filter is set).
.TP
.B CLIFM_FOLLOW_LINKS
Set to 1 if follow-symlinks is enabled. Otherwise it is set to 0.
.TP
.B CLIFM_LIGHT_MODE
Set to 1 if light-mode is enabled. Otherwise it is set to 0.
.TP
.B CLIFM_LINE
When running a plugin via a keybinding, this variable holds the content of the current line buffer. For a usage example see the \fIxclip.sh\fR plugin.
.TP
.B CLIFM_LONG_VIEW
Set to 1 if long-view is enabled. Otherwise it is set to 0.
.TP
.B CLIFM_MAX_FILES
Set to MAX_FILES if max-files is set. Unset otherwise.
.TP
.B CLIFM_ONLY_DIRS
Set to 1 if only-dirs is enabled. Otherwise it is set to 0.
.TP
.B CLIFM_PLUGINS_HELPER
Set to the absolute path to the plugins\-helper script used by several plugins.
.TP
.B CLIFM_PROFILE
Set to the name of the current profile.
.TP
.B CLIFM_SEL_FILES
Set to the number of currently selected files (unset if there are no selected files).
.TP
.B CLIFM_SELFILE
Set to the path to the current selection file.
.TP
.B CLIFM_SHOW_HIDDEN
Set to 1-3 if show-hidden is enabled (true, first, last, in this order). Otherwise it is set to 0.
.TP
.B CLIFM_SORT_REVERSE
Set to 1 if sort-reverse is enabled. Otherwise it is set to 0.
.TP
.B CLIFM_SORT_STYLE
Set to the current sort method.
.TP
.B CLIFM_TRASH_FILES
Set to the number of currently trashed files (unset if there are no trashed files).
.TP
.B CLIFM_TRUNCATE_NAMES
Set to 1 if truncate-names is enabled. Otherwise it is set to 0.

.SH 21. SECURITY
Since \fBclifm\fR executes OS commands, it needs to provide a way to securely run these commands, specially when it comes to untrusted environments. Two features are provided to achieve this aim: \fBsecure environment\fR and \fBsecure commands\fR.
.TP
Both features are aimed at protecting the program and the system as such from malicious input, either coming from environment variables or from indirect input, that is to say, input coming not from the command line (in which is assumed that it is the user herself who is executing the given command), but from files: this is the case of default associated applications (the \fBmime\fR command), autocommands, aliases, plugins, (un)mount commands (using the \fBnet\fR command), just as profile and prompt commands.
.TP
In an untrusted environment, an attacker could cause unexpected and insecure behavior (even command injection) using environment variables, or inject malicious commands via indirect input, commands which will be later executed by \fBclifm\fR without the user's consent (i.e. automatically). This is why we provide a mechanism to minimize this danger: if running in an untrusted environment, the secure environment and secure commands features are there to prevent (at least as far as possible) this kind of attacks.
.TP
\fBA) Secure environment\fR
.TP
Programs inherit the environment from the parent process. However, if this inherited environment is not trusted, not secure, it is always a good idea to sanitize it using only sane values, preventing thus undesired and uncontrolled input that might endanger the program and the system itself.
.TP
The \fBsecure\-environment\fR function forces \fBclifm\fR to run on a such a sanitized environment.
.TP
There are two secure\-environment modes, the \fBregular\fR, and the \fBfull\fR one. To enable the regular mode, run \fBclifm\fR with the \fB\-\-secure\-env\fR command line option. Otherwise, enable the full mode using \fB\-\-secure\-env\-full\fR.
.TP
\fBa)\fR \fBRegular\fR: in this mode, the inherited environment is cleared, though a few variables are preserved to keep \fBclifm\fR running as stable as possible. These preserved variables are: \fBTERM\fR, \fBDISPLAY\fR, \fBLANG\fR, \fBTZ\fR, and, if fzf tab completion mode is enabled, \fBFZF_DEFAULT_OPTS\fR.
.TP
The following variables are set in an environment agnostic way (that is, securely):
  \- \fBHOME\fR, \fBSHELL\fR, and \fBUSER\fR are retrieved using \fBgetpwuid\fR(3)
  \- \fBPATH\fR is set consulting \fB_PATH_STDPATH\fR (or \fB_CS_PATH\fR if the former is not available)
  \- \fBIFS\fR is set to a sane, hard\-coded value: " \\n\\t" (space, new line char, and horizontal TAB)
.TP
As a plus, \fB1)\fR core dumps are disabled, \fB2)\fR the umask value is set to \fB0077\fR at startup and the creation mode (when using the \fBnew\fR command) is forced to \fB0700\fR for directories and \fB0600\fR for files, \fB3)\fR non\-standard file descriptors (>2) are closed, \fB4)\fR SUID/SGID privileges, if any, are dropped, and \fB5)\fR autocommand files are not read at all (even if \fBReadAutocmdFiles\fR is set to \fBtrue\fR).
.TP
\fBb)\fR \fBFull\fR: this mode is just like the regular mode, except that \fBnothing\fR is imported from the environment at all and only \fBPATH\fR, \fBHOME\fR, \fBUSER\fR, \fBSHELL\fR, and \fBIFS\fR are set (as described above). Everything else remains unset, and is the user's responsibility to set environment variables (via the export function), as needed. In this case, you might want to set, at least, \fBTERM\fR, and, if running in a graphical environment, \fBDISPLAY\fR.
.TP
Be aware that enabling secure\-environment might break some functions, depending on the system configuration.
.TP
\fBB) Secure commands\fR
.TP
Some commands are automatically executed by \fBclifm\fR: (un)mount commands (via the \fBnet\fR command), opening applications (via \fBLira\fR), aliases, and plugins, just as prompt, profile, and autocommands. These commands are read from a configuration file and then executed. Now, if an attacker has access to any of these files, she might force \fBclifm\fR to run any arbitrary command, and thereby possibly exposing the whole system.
.TP
Every time a command is thus automatically executed via the system shell (i.e. without the user's direct consent), the secure commands function performs four different, though intrinsically related tasks aimed to mitigate command injection and/or unexpected behavior:
.TP
\fBa)\fR Plugins are disabled.
.TP
\fBb)\fR Only command base names are allowed: \fInano\fR, for instance, is allowed, while \fI/usr/bin/nano\fR is not. In this way we can guarantee that only commands found in a sanitized \fBPATH\fR (see the point \fBd\fR below) will be executed. This is done in order to prevent the execution of custom binaries/scripts, for example: \fI/tmp/exec_file\fR.
.TP
\fBc)\fR Commands are validated using a \fBwhitelist\fR of safe characters (mostly to prevent stream redirection, conditional execution, and so on, for example, 'your_command;some_injected_command'). This set of safe characters slightly vary depending on the command being executed (because they use different syntaxes):
.sp
 Net command:                   a\-zA\-Z \-_.,/=
 Prompt, profile, autocommands: a\-zA\-Z \-_.,/"'
 Mime command:                  a\-zA\-Z \-_.,%&
.TP
Commands containing \fBat least one\fR unsafe character will be rejected. Of course, we cannot (and should not) prevent what looks like legitimate, benign commands from being executed. But we can stop commands that, in an untrusted environment, look suspicious. This is specially the case of stream redirection (>), pipes (|), sequential (;) and conditional execution (&&, ||), command substitution ($(cmd)), and environment variables ($VAR).
.TP
\fBd)\fR A secure environment is set (\fB\-\-secure\-env\fR is implied; to run on a fully sanitized environment run as follows: \fB\-\-secure\-cmds \-\-secure\-env\-full\fR.

.SH 22. MISCELLANEOUS NOTES
.sp
\fBSequential and conditional execution of commands\fR:

For each of the internal commands (see the \fBCOMMANDS\fR section above) you can use the semicolon to execute them sequentially and/or the double ampersand to execute them conditionally. For example: `\fBcmd1;\ cmd2\ &&\ cmd3\fR`.
.sp
Though you can use here external commands as well, bear in mind that, whenever at least one internal command is involved in a chained list of commands, \fBclifm\fR will take care of executing this list (simply because the system shell is not able to understand any of these commands), so that no shell inter\-process function (like pipes), nor any stream redirection or shell expression (like IF blocks or FOR loops) will be available. However, the shell is still used to run single external commands found in the chained list, but in isolation from the remaining commands in this list.
.sp
As a rule of thumb, when using chained commands make sure to always expand ELNs to avoid undesired consequences. If, for instance, you issue this command: `\fBtouch\ aaa\ &&\ r\ 3\fR`, you will end up deleting a file you were not intended to delete, simple because after the successful execution of the first command, the ELN 3 corresponds now to a different file.
.sp

\fBExternal commands\fR:

\fBClifm\fR is not limited to its own set of internal commands, like \fBopen\fR, \fBsel\fR, \fBtrash\fR, etc. It can run external commands as well, provided external commands are allowed (see the \fB\-x\fR option, the \fBext\fR command, and the \fBExternalCommands\fR option in the configuration file).
.sp
External commands are executed using the system shell (say, \fI/bin/sh\fR), which is specified by \fBclifm\fR as follows:
  1. If the \fBCLIFM_SHELL\fR environment variable is set, this value is used.
  2. If the \fBSHELL\fR environment variable is set, this value is used.
  3. If none of the above, the value is taken from the \fBpasswd\fR database (via \fBgetpwuid\fR(3)).
.sp
The shell is invoked as follows: \fISHELL\fR -c '\fICMD ARG\fR...', for example, `\fB/bin/sh -c 'ls -l'\fR`.
.sp
By beginning the external command by a colon or a semicolon (':', ';') you tell \fBclifm\fR not to parse the input string, but instead letting this task to the system shell.
.sp
Bear in mind that \fBclifm\fR is not intended to be used as a shell, but as the file manager it is.
.sp

\fBTerminal emulators and non\-ASCII characters\fR:

It depends on the terminal emulator you use to correctly display non\-ASCII characters and characters from the extended ASCII charset. If, for example, you create a filenamed "ñandú" (the Spanish word for \'rhea\'), it will be correctly displayed by the Linux console, Lxterminal, and Urxvt, but not thus by more basic terminal emulators like Aterm.
.sp

\fBSpaces and filenames\fR:

When dealing with filenames containing spaces, you can use both single and double quotes (e.g.: "this file" or 'this file') plus the backslash character (e.g.: this\\ file).
.sp

\fBDefault profile\fR:

\fBClifm\fR's default profile is \fBdefault\fR. To create alternative profiles use the \fB\-P\fR command line option or the `\fBpf add\fR` command (see above).

.SH 23. FILES
.TP
.B CONFIGURATION FILE
The main configuration file is looked up in these places (and in this order):
.sp
 \fB1.\fR \fB\-c\fR,\fB\-\-config\-file\fR switch
 \fB2.\fR \fB$CLIFMRC\fR variable
 \fB3.\fR \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/clifmrc\fR directory
.sp
If \fB$XDG_CONFIG_HOME\fR is not set, \fI$HOME/.config\fR is used instead. If running with secure-environment (using either \fB\-\-secure\-cmds\fR, \fB\-\-secure\-env\fR, or \fB\-\-secure\-env\-full\fR) no environment variable is read, so that the home directory is taken instead from the password database (via \fBgetpwuid\fR(3)).
.sp
PROFILE is by default \fBdefault\fR (unless set via \fB\-P\fR,\fB\-\-profile\fR).
.sp
You can access the configuration file either via the \fBconfig\fR command or pressing F10.
.sp
A description for each option in the configuration file can be found in the configuration file itself.
.TP
.B PROFILE FILE
The profile file is \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/profile.clifm\fR.
In this file you can add those commands you want to be executed at startup. You can also permanently set here some custom variables, e.g.: 'dir="/path/to/dir"'. This variable may be used as a shortcut to that directory, for instance: `\fBcd $dir\fR`. Custom variables can also be temporarily defined in the command prompt: E.g.: user@hostname ~ $ var="This is a test". Temporary variables will be removed at program exit. Internal variables are disabled by default; enable them using the \fB\-\-int\-vars\fR command line switch.
.TP
.B PROMPTS FILE
This file contains prompts definitions and is located in \fIDATADIR/clifm/prompts.clifm\fR. It will be copied automatically to \fI$XDG_CONFIG_HOME/clifm/prompts.clifm\fR if it doesn't exist. The \fBPrompt\fR line in the color scheme file should point to one of the prompt names defined in this file. See the \fBPROMPT\fR section for more information.
.TP
.B KEYBINDINGS FILE
The keybindings file is \fI$XDG_CONFIG_HOME/clifm/keybindings,cfm\fR. It will be copied from \fIDATADIR/clifm\fR (usually \fI/usr/share/clifm\fR), and if not found, it will be created anew with default values. This file is used to specify the keyboard shortcuts used for some ClifM's functions. The format for each keybinding is always "keyseq:function", where 'keyseq' is an escape sequence in GNU emacs style. A more detailed explanation can be found in the keybindings file itself.
.TP
.B PLUGINS DIRECTORY
The directory used to store programs or scripts pointed to by actions (in other words, plugins) is \fIDATADIR/clifm/plugins\fR (usually \fI/usr/share/clifm/plugins\fR). To edit these plugins copy them to \fI$XDG_CONFIG_HOME/clifm/plugins\fR and edit them to your liking. Plugins in this local directory take precedence over those in the system one.
.TP
.B COLORS DIRECTORY
This directory, \fI$DATADIR/clifm/colors\fR, contains available color schemes (or just themes) as files with a \fI.clifm\fR extension. You can copy these themes to the local colors directory (\fI$XDG_CONFIG_HOME/clifm/colors\fR) and edit them to your liking (or create new themes from the ground up). Themes in the local colors directory take precedence over those in the system directory. You can create as many themes as you want by dropping them into the local colors directory. The default color scheme file (\fIdefault.clifm\fR) can be used as a guide.
.TP
.B ACTIONS FILE
The file used to define custom actions is \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/actions.clifm\fR. It will be copied from \fIDATADIR/clifm\fR (usually \fI/usr/share/clifm\fR), and if not found, it will be created anew with default values.
.TP
.B MIMELIST FILE
The mimelist file is \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/mimelist.clifm\fR. It is a list of file types and name/extensions and their associated applications used by \fBlira\fR. It will be copied from \fIDATADIR/clifm\fR (usually \fI/usr/share/clifm\fR).
.TP
.B PREVIEW FILE
The preview file is \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/preview.clifm\fR and is shotgun's configuration file. It makes use of the same syntax used by the mimelist file. It will be copied from \fIDATADIR/clifm\fR (usually \fI/usr/share/clifm\fR).
.TP
.B BOOKMARKS FILE
The bookmarks file is \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/bookmarks.clifm\fR
Just the list of the user's bookmarks used by the bookmarks function.
.TP
.SH HISTORY FILE
The history file is \fI~/.config/clifm/profiles/PROFILE/history.clifm\fR.
A list of commands entered by the user and used by the history function.
.TP
.B COMMANDS LOG FILE
The commands log file is \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/cmdlogs.clifm\fR. Command logs keep track of commands entered in the command line. These logs have this form: "[date] current_working_directory:command".
.TP
.B MESSAGES LOG FILE
The messages log file is \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/msglogs.clifm\fR. Message logs are a record of errors and warnings and have the following form: "[date] message".
.TP
.B KANGAROO DATABASE
The directory jumper database is stored in \fI$XDG_CONFIG_HOME/clifm/profiles/PROFILE/jump.clifm\fR.
.TP
\fBNote\fR: If \fI$XDG_CONFIG_HOME\fR is not set, \fI$HOME/.config/\fR is used instead.

.SH 24. EXAMPLES
\fBNote 1\fR: Always try TAB. Tab completion is available for many things.

\fBNote 2\fR: Suggestions for possible completions are printed next to the text typed so far. To accept the given suggestion press \fBRight\fR (or \fBAlt+f\fR to accept only the first/next suggested word). Otherwise, the suggestion is just ignored.

Get help:
\fBF1\fR: manpage
\fBF2\fR: keybindings
\fBF3\fR: commands

\fB1. NAVIGATION\fR

.TS
allbox;
lb lb
l l.
Command	Description
T{
/etc
T}	Change directory to \fI/etc\fR \fB(1)\fR
T{
5
T}	Change to the directory whose ELN is 5 \fB(2)\fR
T{
j <TAB> (also dh <TAB>)
T}	Navigate through visited directories
T{
j xproj
T}	Jump to \fI~/media/data/docs/work/mike/xproject\fR \fB(3)\fR
T{
b (Shift+Left, Alt+j)
T}	Go back in the directory history list
T{
f (Shift+Right, Alt+k)
T}	Go forth in the directory history list
T{
\fR.. (Shift+Up, Alt+u)
T}	Change to the parent directory
T{
\fR...
T}	Change to the parent directory of the current parent directory \fB(4)\fR
T{
bd w
T}	Change to the parent directory matching "w" \fB(5)\fR
T{
ws2 (Alt+2)
T}	Switch to the second workspace \fB(6)\fR
T{
/*.pdf<TAB>
T}	List PDF files (current dir)
T{
=x<TAB>
T}	List executable files (current dir) \fB(7)\fR
T{
@gzip<TAB>
T}	List files (current dir) whose MIME type includes "gzip"
T{
pin mydir
T}	Pin the directory named \fImydir\fR
T{
,
T}	Change to pinned directory
T{
view (Alt+\-)
T}	Preview files (current dir) \fB(8)\fR
T{
pg (Alt+0)
T}	Run \fBMAS\fR, the file pager, on the current directory\fR
.TE

.sp
 \fB(1)\fR `\fBcd /etc\fR` also works
.sp 0
 \fB(2)\fR Press TAB to make sure 5 is the file you want, or just pay attention to the suggestion. Press Right to accept the given suggestion
.sp 0
 \fB(3)\fR This depends on the database ranking. For more accuracy: `\fBj mike xproj\fR`. Tab completion is available: `\fBj xproj<TAB>\fR`
.sp 0
 \fB(4)\fR This is the \fBfastback\fR function: each susequent dot after the two first dots is understood as an extra "/.."
.sp 0
 \fB(5)\fR Type `\fBbd <TAB>\fR` to list all parent directories
.sp 0
 \fB(6)\fR \fBAlt+[1\-4]\fR is available for workspaces 1\-4
.sp 0
 \fB(7)\fR Type `\fB=<TAB>\fR` to get the list of available file type characters. Consult the \fBFILE FILTERS\fR section above for more information
.sp 0
 \fB(8)\fR This feature depends on \fBfzf\fR(1)

\fB2. FILE OPERATIONS\fR

.TS
allbox;
lb lb
l l.
Command	Description
T{
myfile.txt
T}	Open \fImyfile.txt\fR (with the default associated application)
T{
myfile.txt vi
T}	Open \fImyfile.txt\fR using vi \fB(1)\fR
T{
24&
T}	Open the file whose ELN is 24 in the background
T{
n myfile mydir/
T}	Create a new file named \fImyfile\fR and a new directory named \fImydir\fR \fB(2)\fR\fB(3)\fR
T{
p4
T}	Print the properties of the file whose ELN is 4
T{
pc myfile.txt
T}	Edit the permission set of the file \fImyfile.txt\fR (use \fBoc\fR to edit ownership)
T{
s *.c
T}	Select all c files in the current directory
T{
s /media/*<TAB>
T}	Interactively select files in the directory \fI/media\fR \fB(4)\fR
T{
s 1\-4 8 19\-26
T}	Select multiple files in the current directory by ELN
T{
sb (sel<TAB> or s:<TAB>)
T}	List selected files \fB(5)\fR
T{
ds (ds <TAB>)
T}	Selectively deselect files using a menu
T{
bm add mydir/ mybm
T}	Bookmark the directory \fImydir/\fR as \fBmybm\fR
T{
bm mybm (b:mybm)
T}	Access the bookmark named \fBmybm\fR \fB(6)\fR
T{
bm del mybm
T}	Remove the bookmark named \fBmybm\fR
T{
bm (Alt+b or b:<TAB>)
T}	Open the bookmark manager
T{
t 1\-3 *.old
T}	Trash a few files
T{
u (u <TAB>)
T}	Selectively restore trashed files using a menu
T{
t del (t del <TAB>)
T}	Selectively remove files from the trash can using a menu
T{
t empty
T}	Empty the trash can
T{
ta *.pdf :mypdfs
T}	Tag all PDF files in the current directory as \fBmypdfs\fR
T{
p t:mypdfs
T}	Print the file properties of all files tagged as \fBmypdfs\fR
T{
/*.pdf
T}	Search for all PDF files in the current directory
T{
c sel
T}	Copy selected files to the current directory
T{
c *.txt 2
T}	Copy all txt file to the directory whose ELN is 2
T{
r sel
T}	Remove all selected files \fB(7)\fR
T{
m4
T}	Rename the file whose ELN is 4 \fB(8)\fR
.TE

.sp
 \fB(1)\fR Use the \fBow\fR command to select the opening application from a menu: `\fBow myfile.txt\fR` or `\fBow myfile.txt <TAB>\fR`
.sp 0
 \fB(2)\fR Note the ending slash in the directory name
.sp 0
 \fB(3)\fR Since \fBclifm\fR is integrated to the system shell, you can also use any of the shell commands you usually use to create new files. E.g.: `\fBtouch myfile\fR` or `\fBnano myfile\fR`
.sp 0
 \fB(4)\fR Only for non\-standard tab completion: fzf, fnf, smenu
.sp 0
 \fB(5)\fR You can also TAB expand the \fBsel\fR keyword: `\fBp sel<TAB>\fR` to list selected files (and optionally mark multiple selected files to operate on)
.sp 0
 \fB(6)\fR Type `\fBbm <TAB>\fR` to get the list of available bookmark names
.sp 0
 \fB(7)\fR To remove files in bulk use the \fBrr\fR command
.sp 0
 \fB(8)\fR To rename files in bulk use the \fBbr\fR command

\fB3. MISC\fR

.TS
allbox;
lb lb
l l.
Command	Description
T{
hh (Alt+.)
T}	Toggle hidden files
T{
ll (Alt+l)
T}	Toggle long-view
T{
rf (Enter \-on empty line\- or Ctrl+l)
T}	Clear/refresh the screen
T{
Alt+,
T}	Toggle list-directories-only
T{
Alt+Tab, Ctrl+Alt+i
T}	Toggle disk usage analyzer mode
T{
!<TAB>
T}	Navigate through the command history
T{
config (F10)
T}	View/edit the main configuration file
T{
pf set test
T}	Change to profile \fBtest\fR
T{
actions
T}	List available actions/plugins
T{
icons on
T}	Want icons?
T{
cs (cs <TAB>)
T}	List available color schemes
T{
prompt (prompt <TAB>)
T}	List available prompts
T{
q
T}	I\'m tired, quit
.TE

.TP
There is a lot more you can do, but this should be enough to get you started.

.SH EXIT STATUS
\fBClifm\fR returns the exit status of the last executed command

.SH CONFORMING TO
\fBClifm\fR is C99 compliant, and, if compiled with the _BE_POSIX flag, it is POSIX.1\-2008 compliant as well. If not, just a single non\-POSIX function is used: \fBstatx\fR(2) (Linux specific), to get files birth time.

.SH BUG AND FEATURE REQUESTS
Report at <https://github.com/leo\\-arch/clifm/issues>

.SH AUTHOR
L. M. Abramovich <leo.clifm@outlook.com>

For additional contributors, run `\fBgit shortlog \-s\fR` on the clifm.git repository.
