1CLIFM(1) CLIFM Manual CLIFM(1)
2
3
4
6 clifm - The Command Line File Manager
7
9 clifm [OPTION]... [PATH]
10
11
13 1. Getting help
14
15 2. Description
16
17 3. Features
18
19 4. Parameters
20 . Positional parameters
21 . Options
22
23 5. Commands
24
25 6. Files Filters
26
27 7. Keyboard shortcuts
28
29 8. Theming
30
31 9. Built-in expansions
32
33 10. Resource opener
34
35 11. Auto-suggestions (including a warning prompt for invalid command
36 names)
37
38 12. Shell functions
39
40 13. Plugins
41
42 14. Autocommands
43
44 15. File tags
45
46 16. Virtual directories
47
48 17. Note on speed
49
50 18. Kangaroo frecency algorithm
51
52 19. Environment
53
54 20. Security
55
56 21. Miscellaneous notes
57
58 22. Files
59
60 23. Examples
61
62
64 There are several ways of getting help in clifm. Once in the program,
65 enter '?' to see some basic usage examples, or press F1 to access this
66 manpage, F2 to go to the COMMANDS section of this very manpage, or F3
67 to go to the KEYBOARD SHORTCUTS section.
68
69 To get help about some specific topic, type help and then press TAB to
70 get a list of available help topics. Choose the topic you want and then
71 just press Enter.
72
73 Help for all internal commands can be accessed via the -h or --help op‐
74 tions. For example, s -h or s --help.
75
76 A convenient way of getting full information about clifm commands is
77 via the 'ih' action, bound by default to the interactive help plugin
78 (ihelp.sh). Just type 'ih' to run the plugin (it depends on FZF) and
79 select the command you want to obtain information about.
80
81 For a quick introduction jump to the EXAMPLES section at the bottom of
82 this document.
83
84
86 Clifm is a Command Line Interface File Manager. This is its main fea‐
87 ture and strength: all input and interacion is performed via commands
88 typed in a prompt. In other words, clifm is a REPL, since it's basic
89 structure is simply this: Read (user input via a command line), Evalu‐
90 ate/Execute the command, Print the results, Loop (start all over
91 again).
92
93 Unlike most terminal file managers out there, indeed, clifm replaces
94 the traditional TUI interface (also known as curses or text-menu based
95 interface) by a simple command-line interface (REPL). In this sense, it
96 is a file manager, but also a shell extension: search for files, copy,
97 rename, and trash some of them, but, at the same time, update/upgrade
98 your system, add some cronjob, stop a service, and run nano (or vi, or
99 emacs, if you like).
100
101 Simply put, with clifm the command-line is still there, never hidden,
102 but enriched with file management oriented functionalities.
103
104
106 Clifm is a completely text-based, shell-like file manager for the ter‐
107 minal able to perform all the basic operations you may expect from any
108 other FM. However, its most distinguishing characteristics are:
109
110 a) An extensive and customizable list of color codes to easily iden‐
111 tify file types and extensions.
112
113 b) The use of short (and even one-character) commands, and entry list
114 numbers (ELN's) instead of file names. Enter o 12, for instance, to
115 open a file with your default text editor or to change to the desired
116 directory. If the autocd and auto-open functions are enabled, which is
117 the default (see below the acd and ao commands), you only need to enter
118 the ELN to open the file or change to directory: instead of o 12, just
119 enter 12.
120
121 With the automatic ELN expansion feature you can use ELN's with exter‐
122 nal commands as well. diff 12 5, for example, will run diff(1) over the
123 files corresponding to ELN's 12 and 5. Ranges are also accepted, for
124 example: rm 1-12 or r 1-12. Since numbers could be a bit tricky when it
125 comes to listed files, TAB completion is available for ELN's and ELN
126 ranges, just as for many other things (see the BUILT-IN EXPANSIONS sec‐
127 tion below). Gemini, a powerful auto-suggestions system (heavily in‐
128 spired by the Fish shell), was developed with this very purpose in
129 mind.
130
131 c) Automatic files listing: Unlike the shell cd command, clifm's
132 built-in cd function automatically lists files in the new directory.
133
134 d) Several shell capabilities: Fish-like auto-suggestions that, to‐
135 gether with TAB completion, syntax highlighting, and history (for both
136 commands and visited directories) assists the user when it comes to
137 typing commands. This feature includes a warning prompt to warn the
138 user when typing an invalid command name.
139
140 e) Bookmarks: keep a list of your favorite directories, and even
141 files, to get easy access to them. Example: enter bm (or press Alt-b)
142 to open the bookmarks screen and then simply type a number or a short‐
143 cut name to access the desired bookmark.
144
145 f) The Selection Box allows you to drop files and directories from
146 different parts of the file system (even from different instances of
147 clifm) and then operate on them with just one command. Example: select
148 a few files in one instance of the program (say s 12; cd /me‐
149 dia; s 2 5-6) and then paste them somewhere else using a second in‐
150 stance (v sel, paste sel or Ctrl-Alt-v). Both wildcards (globbing) and
151 regular expressions are supported. Inverse matching is also allowed for
152 patterns.
153
154 g) The directory history function (back and forth) keeps track of all
155 visited directories, so that you can go back and forth to any of them
156 by just entering b or f (or just pressing Alt-j and Alt-k, or
157 Shift-Left and Shift-Right, respectively). Another way of quickly navi‐
158 gating through visited directories is using Kangaroo, a built-in direc‐
159 tory jumper function. See the j command below.
160
161 h) An extensive list of keyboard shortcuts make it even easier and
162 faster to navigate and operate on your files. For example, instead of
163 typing cd .. to go back to the parent directory, or s * to select all
164 files in the current directory, you can simply press Alt-u (or
165 Shift-Up) and Alt-a respectively.
166
167 i) The quick search function makes it really easy to quickly find the
168 files you are looking for: just enter a slash followed by the string or
169 regular expression you want (ex: /myfile or /.*.png), that's all. In‐
170 verse search is also allowed by prepending an exclamation mark (!) to
171 the search pattern.
172
173 j) Plugins: Build your own custom commands using executable files
174 (shell scripts or binaries). Just drop an executable file (all lan‐
175 guages are supported) in the plugins directory, tell clifm to use this
176 executable file via a custom action name, and use it as any other com‐
177 mand.
178
179 k) Files preview: Via the fzfnav plugin (see the PLUGINS section be‐
180 low), clifm is able to preview several kinds of files, including not
181 only text files, but also GIF's, images, office documents, PDF's, and
182 more. This plugin requires FZF to be installed. For basic images pre‐
183 view ueberzug is required. A list of optional dependencies to preview
184 different kinds of files is available in the PLUGINS section.
185
186 l) It is blazing fast and incredibly lightweight. With a memory foot‐
187 print below 5 MiB and a disk usage of 0.5 MiB, it can run on really an‐
188 cient hardware. It is so simple that it doesn't require an X session
189 nor any graphical environment at all, being able thus to perfectly run
190 on the console (TTY) and even on a headless machine via a SSH or any
191 other remote session. And if this is not enough, you can still try the
192 light mode to make it even faster.
193
194 m) When running in stealth mode, it will leave not trace at all on
195 the host system.
196
197 Because inspired by the KISS principle, clifm is fundamentally aimed to
198 be lightweight, fast, simple, and efficient. On Archlinux's notion of
199 simplicity see: https://wiki.archlinux.org/index.php/Arch_Linux#Sim‐
200 plicity
201
202 List of clifm features:
203
204 1) FreeDesktop compliant Trash system
205 2) Automatic files listing
206 3) Commands and directory history function
207 4) A powerfull TAB completion/expansion system (see the BUILT-IN EX‐
208 PANSIONS section below)
209 5) More than 40 customizable keyboard shortcuts
210 6) Wildcards and regex auto-expansion
211 7) Braces auto-expansion
212 8) ELN's auto-expansion
213 9) ELN ranges auto-expansion
214 10) sel keyword auto-expansion
215 11) Bookmarks auto-expansion
216 12) Bash-like quoting system
217 13) Custom aliases and variables
218 14) Full theming support via a single configuration file
219 15) Shell commands execution
220 16) Startup and prompt commands
221 17) User profiles
222 18) Commands sequential and conditional execution
223 19) Lira, a built-in resource opener
224 20) Eleven sorting methods and reverse sorting
225 21) Bulk rename and bulk remove
226 22) Archiving and compression support
227 23) Auto-cd and auto-open
228 24) Plugins support via custom actions linked to executable files
229 25) Symbolic links editor
230 26) Regular expressions, file type filter, and inverse matching sup‐
231 port for both search and selection functions
232 27) Command substitution and regular expressions for all internal
233 commands
234 28) Privacy oriented
235 29) Kangaroo, a built-in directory jumper function
236 30) Icons support
237 31) Batch symbolic links
238 32) Files filter via regular expressions for the files list
239 33) Up to eight workspaces
240 34) Fused parameters support for ELN's
241 35) Advcpmv support (cp and mv with a nice progress bar). Depends on
242 advcpmv (See https://github.com/jarun/advcpmv)
243 36) Fastback function
244 37) Remote file systems management via the net command
245 38) Gemini, a Fish-like auto-suggestions system (including a warning
246 prompt to highlight invalid command names)
247 39) Syntax highlighting
248 40) Interactive rename functionality for the m command
249 41) Easily mount/unmount storage devices via the media command
250 42) Control settings on a per directory basis via the autocommands
251 function
252 43) Bleach, a built-in file names cleaner
253 44) Backdir: quickly change to a parent directory
254 45) Secure environment (see --secure-env and --secure-env-full op‐
255 tions)
256 46) Secure commands (see the --secure-cmds option)
257 47) URI file scheme support (file://)
258 48) URL support when running as standalone resource opener (see the
259 --open option)
260 49) Disk usage analyzer (see the -t option)
261 50) Etiqueta, a files tagging system
262 51) Virtual directories
263 52) Desktop notifications
264
265
268 If the first non-option parameter is a directory, clifm will start in
269 this directory. Otherwise, if not a directory, it will open the file
270 via the default associated application and exit (working thus as a
271 stand-alone resource opener). URL's and the URI file scheme (for local
272 file systems) is supported.
273
274 For example, by running 'clifm /etc/hosts', the hosts file will be
275 opened and clifm will immediately exit. In the same way
276 clifm https://some_domain will open this web resource with the applica‐
277 tion associated to the text/html MIME type.
278
279 On the other side, the command clifm /etc instructs clifm to start in
280 the directory /etc. If not specified, the first workspace will be used.
281 To start in a different workspace use the -w option. For instance:
282 clifm -w4 /etc.
283
284
286 -a, --no-hidden
287 ignore entries starting with . (default)
288
289 -A, --show-hidden
290 do not ignore entries starting with .
291
292 -b, --bookmarks-file=FILE
293 set an alternative bookmarks file
294
295 -c, --config-file=FILE
296 set an alternative configuration file
297
298 -D, --config-dir=DIR
299 use DIR as an alternative configuration directory. If configura‐
300 tion files do not exist already, they will be created anew here
301
302 -e, --no-eln
303 do not print ELN's (entry list number) at the left of file
304 names. Bear in mind, however, that though ELN's are not printed,
305 they are still there and can be used as always
306
307 -E, --eln-use-workspace-color
308 ELN's use the current workspace color
309
310 -f, --no-dirs-first
311 do not list directories first
312
313 -F, --dirs-first
314 list directories first (default)
315
316 -g, --pager
317 enable Mas, the built-in pager for files listing
318
319 -G, --no-pager
320 disable the pager (default)
321
322 -h, --help
323 show this help and exit
324
325 -H, --horizontal-list
326 list files horizontally instead of vertically ordered
327
328 -i, --no-case-sensitive
329 no case-sensitive files listing (default)
330
331 -I, --case-sensitive
332 case-sensitive files listing
333
334 -k, --keybindings-file=FILE
335 set an alternative keybindings file
336
337 -l, --no-long-view
338 disable long view mode (default)
339
340 -L, --long-view
341 enable long view mode to list files and their properties. By de‐
342 fault, the following information is provided for each file: file
343 name, file permissions (symbolic notation), owner and primary
344 group, last modification time, and size (these fields could be
345 turned on/off using the PropFields option in the configuration
346 file). To get more detailed information use the p command (see
347 below).
348
349 -m, --dirhist-map
350 enable the directory history map to keep in view previous, cur‐
351 rent and next entries in the directory history list
352
353 -o, --no-autols
354 cd works like the shell cd command: change directory but do not
355 list files automatically
356
357 -O, --autols
358 cd changes directory and lists files automatically (default)
359
360 -p, --path=PATH
361 use PATH as clifm starting path. Default starting path is the
362 current working directory. If no workspace is specified via the
363 --workspace option (see below), the first workspace (1) is used.
364 This option is deprecated: use positional parameters instead.
365
366 -P, --profile=PROFILE
367 use PROFILE as profile. If PROFILE does not exist, it will be
368 created. Default profile is 'default'
369
370 -r, --no-refresh-on-empty-line
371 do not refresh the current list of files when pressing the Enter
372 key on an empty line
373
374 -s, --splash
375 enable the splash screen
376
377 -S, --stealth-mode
378 leave no trace on the host system. Nothing is read from files
379 nor any file is created: all settings are set to the default
380 value. However, most settings can still be controlled via com‐
381 mand line options. Listing colors could be customized via dedi‐
382 cated environment variables (see the ENVIRONMENT section below).
383 Take a look as well to the history command and the --no-history
384 command line switch.
385
386 -t, --disk-usage-analyzer
387 run in disk usage analyzer mode. Equivalent to --sort=size
388 --long-view --full-dir-size --no-dirs-first --apparent-size. The
389 total size of the current directory, plus the name and size of
390 the largest file will be printed after the list of files. Sizes
391 are calculated using actual device usage (rather than apparent
392 size) in powers of 1024 (KiB, MiB, etc). To use apparent sizes
393 instead add the --apparent-size switch. Press Ctrl-Alt-i (or
394 Alt-TAB) to toggle this mode on/off in-place.
395
396 -u, --no-unicode
397 disable unicode
398
399 -U, --unicode
400 enable unicode to correctly list file names containing accents,
401 tildes, umlauts, non-latin letters, etc. This option is enabled
402 by default.
403
404 -v, --version
405 show version details and exit
406
407 -w, --workspace=NUM
408 start in workspace NUM. By default, clifm will recover the last
409 visited directory for each workspace. However, you can override
410 this behaviour using positional parameters, as described above,
411 to start in workspace NUM and in path PATH.
412
413 -W, --no-toggle-workspaces
414 workspace keybindings (by default Alt-[1-4]) do not toggle cur‐
415 rent and previous workspaces
416
417 -x, --no-ext-cmds
418 disallow the use of external, shell commands
419
420 -y, --light-mode
421 enable the light mode to speed up clifm. See the NOTE ON SPEED
422 section below.
423
424 -z, --sort=METHOD
425 sort files by METHOD, where METHOD could be one of: 0 = none, 1
426 = name, 2 = size, 3 = atime, 4 = btime (ctime if not available),
427 5 = ctime, 6 = mtime, 7 = version (name if not available), 8 =
428 extension, 9 = inode, 10 = owner, 11 = group. Both numbers and
429 strings are allowed. E.g: --sort=9, --sort=inode.
430
431 --apparent-size
432 use apparent sizes instead of actual device usage
433
434 --bell=TYPE
435 Choose the terminal bell type, where TYPE could be: 0 = none, 1
436 = audible, 2 = visual (requires readline >= 8.1), 3 = flash. De‐
437 faults to 'visible', and, if not possible, 'none'.
438
439 --case-sens-dirjump
440 do not ignore case when consulting the jump database (via the j
441 command)
442
443 --case-sens-path-comp
444 enable case sensitive path completion
445
446 --cd-on-quit
447 write last visited directory to $XDG_CONFIG_HOME/clifm/.last to
448 be later accessed by the corresponding shell function at program
449 exit. See the SHELL FUNCTIONS section below.
450
451 --color-scheme=NAME
452 set NAME as color scheme
453
454 --cwd-in-title
455 print current working directory in terminal window title. Other‐
456 wise, only the program name is printed
457
458 --desktop-notifications
459 enable desktop notifications. Enter 'help desktop-notifications'
460 in CliFM for more information
461
462 --disk-usage
463 show disk usage (free/total) for the file system the current di‐
464 rectory belongs to
465
466 --enable-logs
467 enable program logs. See the log command for more information
468
469 --expand-bookmarks
470 expand bookmark names into the corresponding bookmark paths and
471 enable TAB completion for bookmark names as well. If the book‐
472 mark is, .e.g. mybookmark=/my/path, "mybo" will be completed as
473 "mybookmark", which will be interpreted then as "/my/path"
474
475 --fzytab
476 use fzy to display completion matches
477
478 --full-dir-size
479 if running in long view, print directories size and their con‐
480 tents
481
482 --fuzzy-match
483 enable fuzzy matches for completions and suggestions (only file
484 names and paths)
485
486 --icons
487 enable icons
488
489 --icons-use-file-color
490 instead of an specific color, icons take the color of the corre‐
491 sponding file name (specified either via file type or via file
492 extension). Useful when building custom color schemes. This op‐
493 tion implies --icons. Only if compiled with support for either
494 icons-in-terminal or Nerdfonts. The default build is compiled
495 with emoji-icons support, in which case this option is ignored
496 (Unicode icons has their own color built-in)
497
498 --list-and-quit
499 list files and quit. It may be used in conjunction parameter
500 substitution. Ex: 'clifm --list-and-quit /etc'
501
502 --mnt-udisks2
503 use udisks2 instead of udevil (default), for the media command
504
505 --max-dirhist
506 maximum number of visited directories to remember
507
508 --max-files=NUM
509 list only up to NUM files. Use -1 or 'unset' to remove the files
510 limit (default). See the mf command for a more detailed descrip‐
511 tion.
512
513 --max-path=NUM
514 set the maximum number of characters after which the current di‐
515 rectory in the prompt line will be abbreviated to the directory
516 base name (if \z is used in the prompt)
517
518 --no-cd-auto
519 by default, clifm changes to directories by just specifying the
520 corresponding ELN (e.g. '12' instead of 'cd 12'). This option
521 forces the use of cd
522
523 --no-control-d-exit
524 do not allow exit on EOF (Control-d)
525
526 --no-dir-jumper
527 disable the directory jumper function
528
529 --no-classify
530 by default, clifm appends a file type indicator character to
531 file names when running with no colors (see the --no-color op‐
532 tion below) and both a directory indicator and a files counter
533 for directories when running with colors. Classification charac‐
534 ters are:
535 /n: directories (n = files counter)
536 @: symbolic links
537 |: fifo/pipes
538 =: sockets
539 *: executable files
540 ?: unknown file type Use this option to disable file type clas‐
541 sification.
542
543 --no-clear-screen
544 do not clear the screen before listing files
545
546 --no-color
547 disable colors
548
549 --no-columns
550 disable columns for files listing
551
552 --no-file-cap
553 do not check files capabilities when listing files
554
555 --no-file-ext
556 do not check files extension when listing files
557
558 --no-files-counter
559 disable the files counter for directories. This option is espe‐
560 cially useful to speed up the listing process; counting files in
561 directories is particularly expensive
562
563 --no-follow-symlink
564 do not follow symbolic links when listing files
565
566 --no-highlight
567 disable syntax highlighting. To customize highlighting colors
568 see the COLOR CODES section below
569
570 --no-history
571 do not write commands into the history file
572
573 --no-open-auto
574 same as no-cd-auto, but for files instead of directories
575
576 --no-refresh-on-resize
577 do not attempt to refresh the list of files upon window's resize
578
579 --no-restore-last-path
580 by default, clifm saves the last visited directory for each
581 workspace to be restored in the next session. Use this option to
582 disable this behavior.
583
584 --no-suggestions
585 disable the auto-suggestions system
586
587 --no-tips
588 disable startup tips
589
590 --no-warning-prompt
591 disable the warning prompt (used to highlight invalid command
592 names)
593
594 --no-welcome-message
595 disable the welcome message
596
597 --only-dirs
598 list only directories
599
600 --open=FILE
601 run as a stand-alone resource opener: open FILE and exit, where
602 FILE could be a regular file or a directory, using either stan‐
603 dard notation (/dir/file) or the URI file scheme
604 (file:///dir/file]), or a URL (www.domain or https://domain).
605
606 --opener=APPLICATION
607 specify a resource opener to use. If opener is not set, Lira
608 will be used instead
609
610 --print-sel
611 always print the list of selected files. Since this list could
612 be quite extensive, the maximum number of selected files to
613 print could be specified via the MaxPrintSelfiles option in the
614 configuration file. Defaults to 0 (auto, i.e. never take more
615 than half terminal height). Use -1 to remove the limit or any
616 other positive value.
617
618 --rl-vi-mode
619 set readline to vi editing mode (defaults to emacs editing mode)
620
621 --secure-cmds
622 Filter commands passed to the OS to mitigate command injection
623 attacks. Consult the SECURITY section below
624
625 --secure-env
626 run clifm in a secure environment (regular mode). Consult the
627 SECURITY section below
628
629 --secure-env-full
630 run clifm in a secure environment (full mode). Consult the SECU‐
631 RITY section below
632
633 --share-selbox
634 make the Selection Box common (that is, accessible) to different
635 profiles. By default, each profile has a private Selection Box.
636
637 --si print sizes in powers of 1000, as defined in the International
638 System of Units (SI), instead of 1024 (Linux only)
639
640 --smenutab
641 use smenu to display completion matches
642
643 --sort-reverse
644 sort in reverse order, for example: z-a instead of a-z, which is
645 the default order
646
647 --stdtab
648 use the standard mode (readline's built-in) for TAB completion
649
650 --trash-as-rm
651 the r command executes the built-in 'trash' (see the t command)
652 instead of rm(1) to prevent accidental deletions
653
654 --virtual-dir=PATH
655 use PATH as CliFM's virtual directory
656
657 --virtual-dir-full-paths
658 print file names in virtual directories as full paths instead of
659 just base names
660
661 Options precedence order: 1) command line flags; 2) configuration file;
662 3) default values.
663
664
666 Help for all commands listed here can be accessed via the -h or --help
667 options.
668
669 NOTE: ELN = Entry List Number. Example: in the line "12 openbox" (when
670 listing files), 12 is the ELN corresponding to the file named "open‐
671 box". The slash followed by a number (/xx) after directories and sym‐
672 bolic links to directories (the files counter) indicates the amount of
673 files contained by the corresponding directory, excluding self and par‐
674 ent directories ("." and ".." Respectively).
675
676 NOTE 2: In case of ELN-filename conflict the backslash can be used to
677 prevent ELN expansion. For example, if we have at least two files and
678 one of them in named "2", then clifm cannot know in advance if the com‐
679 mand refers to the ELN 2 or to the file name "2". In we want the ELN,
680 we just write the ELN number, for example: s 2. But if we want the file
681 name, we need to escape the file name using the backlash character:
682 s \2.
683
684 NOTE 3: clifm supports fused parameters for internal commands taking an
685 ELN or range of ELN's as parameters. Much like short options for com‐
686 mand line programs, you can drop or omit the space between internal
687 commands and the corresponding ELN passed as argument. In general, you
688 can write CMDELN instead of CMD ELN. For example: o12 or s1-5 instead
689 of o 12 and s 1-5 respectively. Bear in mind, however, that in thus
690 omitting the space char TAB completion for ELN's won't be available. If
691 there is a file named o12 (more generally, CMDELN), and if you want to
692 refer to this file instead of a clifm command, escape the file name to
693 prevent the split; for example: s \o12.
694
695 NOTE 4: clifm implements a fastback function, that is to say, the con‐
696 version of "... n" or "cmd ... n" into "../.. n" or "cmd ../.. n". In
697 other words, subsequent dots after ".." will be converted each into
698 "/..". For example, if you are in your home directory and type "..." or
699 "cd ...", and since "..." amounts to "../..", you will be taken to the
700 root directory. TAB completion is available for the fastback function:
701 "....bin" -> TAB -> "../../../bin".
702
703
704 FILE/DIR
705 if the autocd and auto-open functions are enabled, which is the
706 default value, open FILE or change directory to DIR. In other
707 words, FILE amounts to open FILE or o FILE, and DIR to cd DIR.
708 ELN's, of course, are allowed. Example: 12.
709
710 /PATTERN [-filetype] [-x] [DIR]
711 this is the quick search function. Just type / followed by a
712 glob or regular (or extended regular) expression, and clifm will
713 list all matches in the current working directory. For example,
714 both /*.pdf and /.pdf$ expressions will list all PDF files in
715 the current working directory, the former using wildcards, and
716 the second a regular expression.
717
718 Note: By default, the search function attempts to resolve a pat‐
719 tern first as glob, and if no matches, as regular expression.
720 This behavior can be customizad in the configuration file, via
721 the SearchStrategy option.
722
723 Note 2: If no further parameter is provided, but only a glob
724 pattern (wildcards), you can expand the pattern into the corre‐
725 sponding matches via the TAB key. For example, to list all C
726 files in the current directory: /*.c<TAB>.
727
728 Expressions containing no pattern metacharacter are automati‐
729 cally transformed into a glob/regular expression (depending on
730 the value of the SearchStrategy option). For example, /test be‐
731 comes *test* or /.*test.*.
732
733 By default, regular expressions are case insensitive (glob ex‐
734 pressions, by contrast, are always case sensitive). However, you
735 can enable case sensitive search by setting the CaseSensi‐
736 tiveSearch option to true in the configuration file.
737
738 To search for files in any directory other than the current di‐
739 rectory, specify the directory name as a further parameter. This
740 parameter (DIR) could be an absolute path, a relative path, or
741 an ELN. For example, enter /^A 7 to search for all files start‐
742 ing with 'A' in the directory corresponding to the ELN 7.
743
744 The result of the search could be further filtered by specifying
745 a filter type: -b, -c, -d, -f, -l, -p, and -s (block device,
746 character device, directory, regular file, symbolic link,
747 FIFO/pipe, and socket respectively. For example, /[.-].*d$ -d
748 Documents/ will list all directories containing a dot or a dash
749 and ending with 'd' in the directory named Documents.
750
751 The quick search function also supports invert search: prepend
752 the exclamation mark (!) to negate a given search pattern. For
753 example: !.*s$ -d /etc will match all directories in /etc NOT
754 ending with 's', just as !D* will match all files in the current
755 directory NOT starting with 'D'.
756
757 To perform a recursive search use the -x parameter, and, option‐
758 ally, a search path (DIR) (file type filter is not allowed). The
759 search will be performed using find as follows:
760 find DIR -name PATTERN. If no search path is provided, the
761 search is executed starting in the current directory. Otherwise,
762 the search starts in DIR.
763
764 ;[CMD], :[CMD]
765 If no CMD, run the system shell in the current working direc‐
766 tory. If CMD is specified, skip all clifm expansions (see the
767 BUILT-IN EXPANSIONS section below) and run the input string
768 (CMD) as is via the default system shell.
769
770 ac, ad ELN/FILE...
771 archive/compress and dearchive/decompress one or multiple files
772 and/or directories. The archiver function brings two modes: ac,
773 to generate archives or compressed files, and ad, to decompress
774 or dearchive files, either just listing, extracting, recompress‐
775 ing, or mounting their content. In this latter case, the mount‐
776 point used automatically is $HOME/.config/clifm/PRO‐
777 FILE/mounts/ARCHIVE_NAME.
778
779 The function accepts single and multiple file names, wildcards,
780 ELN ranges, and the 'sel' keyword. For example: ac sel,
781 ac 4-25 myfile, or ad *.tar.gz. Multiple archive/compression
782 formats are supported, including Zstandard. When it comes to ISO
783 9660 files only single files are supported.
784
785 The archive mount function for non ISO files depends on archive‐
786 mount, while the remaining functions depend on atool and other
787 third-party utilities for achive formats support, for example,
788 p7zip. p7zip is also used to manage most decompressing options
789 for ISO 9660 files, except for mount, in which case mount(8) is
790 used. Creation of ISO files is done via genisoimage(1). For more
791 information consult atool(1), archivemount(1), zstd(1), and
792 7z(1).
793
794 acd, autocd [on, off, status]
795 toggle the autocd function on/off. If set to on, DIR amounts to
796 cd DIR.
797
798 actions [edit [APP]]
799 with no argument, lists available custom actions (or plugins).
800 Use the 'edit' option to add, remove or modify custom actions
801 (using APP if specified or the default associated application
802 otherwise). The aim of this function is to allow the user to
803 easily add custom commands and functions to clifm. In other
804 words, the actions function is a plugins capability.
805
806 The general procedure is quite simple: a) bind a custom action
807 name to an executable file written in any language you want, be
808 it a shell or Python script, a C program or whatever you like
809 (using the actions.clifm file located in the configuration di‐
810 rectory). Example: "myaction=myscript.sh". b) Now, drop the cor‐
811 responding script (in our example, myscript.sh) into the plugins
812 directory (see the FILES section below). 3) Once this is done,
813 you can call the script using the custom action name defined be‐
814 fore as if it were any other command: run myaction, and
815 myscript.sh will be executed.
816
817 All arguments passed to the action command are passed to the
818 script or program as well (which is run via the system shell).
819
820 The plugins provided with clifm (take a look at the plugins di‐
821 rectory) could be used as a starting point to create custom
822 plugins.
823
824 alias [import FILE] [ls,list] [NAME]
825 with no argument (or with ls,list parameters), it prints the
826 list of available aliases, if any. To get the description of a
827 specific alias just enter alias followed by the alias name. To
828 write a new alias simply enter edit (or press F10) to open the
829 configuration file and add a line like this: "alias name='com‐
830 mand args...'" or "alias name='directory'".
831
832 To import aliases from a file, provided it contains aliases in
833 the specified form, use the import parameter. Aliases conflict‐
834 ing with some of the internal commands won't be imported.
835
836 However, a neat usage for the alias function is not so much to
837 bind short keys to commands, but to files and directories vis‐
838 ited regularly. In this way, it is possible to bind as many
839 files or directories, no matter how deep they are in the file
840 system, to very short strings, even single characters. For exam‐
841 ple, "alias w='/some/file/deep/in/the/filesystem'. Now, no mat‐
842 ter where we are, we can just enter 'w', provided autocd and/or
843 auto-open function is enabled, to access the file or directory
844 we want. Theoretically at least, this procedure could be re‐
845 peated until the system memory is exhausted.
846
847 To create multiple aliases for files at once, this is the recom‐
848 mended procedure: 1) Select all files you want to alias with the
849 sel function: s file1 file2 file3 .... 2) Export the selected
850 files into a temporary file running exp sel; 3) Edit this file
851 to contain only valid alias lines:
852
853 alias a1='file1'
854 alias b1='file2'
855 alias c1='file3'
856
857 NOTE: Make sure alias names do not conflict with other commands,
858 either internal or external. To bypass the conflicts check, per‐
859 formed automatically by the 'alias import' command, you can just
860 edit the aliases file manually (F10).
861
862 4) Finally, import this file with the alias function: alias im‐
863 port tmp_file. Now, you can access any of these files by enter‐
864 ing just a few characters: a1, b1, and c1.
865
866 ao, auto-open [on, off, status]
867 toggle the auto-open function on/off. If set to on, FILE amounts
868 to open FILE.
869
870 b, back [h, hist] [clear] [!ELN]
871 unlike cd .., which sends you to the parent directory of the
872 current directory, this command (with no argument) sends you
873 back to the previously visited directory.
874
875 clifm keeps a record of all visited directories. You can see
876 this list by typing b hist, b h or bh, and you can access any
877 element in this list by simply passing the corresponding ELN in
878 this list to the back command. Example:
879 :) > ~ $ bh
880 1 /home/user
881 2 /etc
882 3 /proc
883 :) > ~ $ b !3
884 :) > /proc $
885
886 NOTE: the line printed in green indicates the current position
887 of the back function in the directory history list.
888
889 Finally, you can also clear this history list by typing b clear.
890
891 The best way of navigating the directory history list, however,
892 is via the directory jumper function. See the j command below.
893
894 bb, bleach ELN/FILE...
895 Bleach is a built-in file names cleaner (based on detox
896 [https://github.com/dharple/detox]), whose main aim is to rename
897 file names using only safe characters. Bleach cleans file names
898 up either by removing unsafe (extended-ASCII/Unicode) characters
899 without an ASCII alternative/similar character, or by translat‐
900 ing these unsafe characters into an alternative ASCII character
901 based on familiarity/similarity.
902
903 These following simple rules are used to compose clean/safe file
904 names:
905 - NUL (\0) and slash (/) characters are completely disal‐
906 lowed
907 - Only characters from the Portable Filename Characters Set
908 (a-zA-Z0-9._-) are allowed
909 - { [ ( ) ] } are replaced by a dash (-). Everything else is
910 replaced by an underscore (_)
911 - Unicode characters are translated, whenever possible, into
912 an ASCII replacement. Otherwise, they are just ignored. For ex‐
913 ample, an upper case A with diacritic (accent, umlaut, diaresis,
914 and so on) will be replaced by an ASCII A, but the smiley face
915 emoji will be simply ignored. A few special signs will be trans‐
916 lated into text, for instance, the pound sign will be replaced
917 by "_pound_" and the Euro symbol by "EUR". Translations are made
918 via a translation table (cleaner_table.h)
919 - File names never start with a dash (-)
920 - Files named . and .. are not allowed
921 - Append .bleach to one character long file names
922 - Do not let a replacement file name start with a dot (hid‐
923 den) if the original does not
924 - Max file name length is NAME_MAX (usually 255)
925
926 Modified file names will be listed on screen asking the user for
927 confirmation, allowing besides to edit (by pressing 'e') the
928 list of modified file names via a text editor.
929
930 If the replacement file name already exists, a dash and a number
931 (starting from 1) will be appended. Ex: file-3.
932
933 bd [NAME]
934 bd is the backdir function: it takes you back to the parent di‐
935 rectory matching NAME.
936
937 With no arguments, bd prints a menu with all parent directories
938 relative to the current directory, allowing the user to select
939 an entry. Otherwise, it checks the absolute current directory
940 against the provided query string (NAME): if only one match is
941 found, it automatically changes to that directory; if multiple
942 matches are found, the list of matches is presented to the user
943 in a selection menu. If NAME is a directory name, bd just
944 changes to that directory, be it a parent of the current direc‐
945 tory or not.
946
947 TAB completion and suggestions are available for this function.
948
949 Example:
950
951 Provided that the current directory is /home/user/git/reposito‐
952 ries/lambda, entering bd git will take you immediatelly to
953 /home/user/git.
954
955 Note that there is no need to type the entire directory name; if
956 the query is unambiguous, only a few characters, and even just
957 one, suffices to match the appropriate directory. In our exam‐
958 ple, bd g is enough to take you to /home/user/git, just as bd h
959 will take you to /home.
960
961 The query string could match any part of a directory name: bd
962 er, for instance, will take you to /home/user, since it is an
963 unambiguous query.
964
965 bl ELN/FILE...
966 Create symbolic links (in the current directory) for each speci‐
967 fied file. The user will be asked to enter a specific suffix for
968 the symlinks. If none is specified, the basename of the corre‐
969 sponding file is used.
970
971 bm, bookmarks [a, add PATH] [d, del] [edit] [SHORTCUT, NAME]
972 with no argument, open the bookmarks menu. Here you can cd into
973 the desired bookmark by entering either its ELN, its shortcut or
974 its name. In this screen you can also add, remove or edit your
975 bookmarks by simply typing 'e' to edit the bookmarks file (which
976 is simply a list of lines with this format: [shortcut]name:path.
977 Ex: [d]documents:/home/user/documents).
978
979 If you want to add or remove a bookmark directly from the com‐
980 mand line, use the 'a' and 'd' arguments respectively. Example:
981 bm a /media/misc or bm d. You can also open a bookmark by typing
982 'bm shortcut' or bm name (in which latter case TAB completion is
983 available).
984
985 A handy use for the bookmarks function, provided the expand-
986 bookmarks option is enabled, is to create bookmarks using short
987 names, which will be later easily accessible via TAB completion.
988
989 To operate on specific bookmark paths, you can use the b: con‐
990 struct (mostly useful if using the FZF mode for TAB completion).
991 For example, type p b:<TAB>, select the bookmarks you want and
992 press Enter, to print the file properties of the selected book‐
993 marks (multi-selection is available).
994
995 br, bulk ELN/FILE...
996 rename at once all files passed as arguments to the function. It
997 accepts single and multiple file names, wildcards, ELN ranges,
998 and the 'sel' keyword. Example: br myfile 4-10 sel.
999
1000 Each file name will be copied into a temporary file, which will
1001 be opened with the default text editor (via the mime function),
1002 letting the user modify it. Once the file has been modified and
1003 saved, the modifications are printed on the screen and the user
1004 is asked whether to proceed with the actual bulk renaming or
1005 not.
1006
1007 This built-in bulk rename function won't deal with deletions,
1008 replacements, file name conflicts and the like. For a smarter
1009 alternative use qmv(1).
1010
1011 c, l [e, edit], m, md, r
1012 short for the following commands respectively: cp -iRp, ln -sn,
1013 mv -i, mkdir -p, and rm -I (for files) or rm -dIr (for directo‐
1014 ries).
1015
1016 By default, the c, m, and r commands execute cp(1), mv(1), and
1017 rm(1) respectively in interactive mode (using the -i/-I
1018 switches) to ask for confirmation before operations. Since this
1019 might sometimes be quite intrusive (specially when operating on
1020 large amount of files), it is possible to turn interactivity off
1021 in two different ways:
1022
1023 a) For the current command only: via the -f, --force switch.
1024 Example: c -f sel, m -f sel, or r -f *.
1025
1026 b) Permanently. Use the cpCmd, mvCmd, and rmForce options in
1027 the configuration file to permanently set any of these commands
1028 to non-interactive mode.
1029
1030 On systems not supporting the -I switch (NetBSD, OpenBSD, and
1031 MacOS), the r command executes rm(1) as follows: rm -drf for di‐
1032 rectories, and rm -f for files. Note that, if compiled with
1033 _BE_POSIX, the -d flag is not available, in which case rm -rf is
1034 used instead.
1035
1036 To use these commands without any of these arguments, or with
1037 any other argument you want, just use the non-abbreviated
1038 (shell) command, for instance, cp instead of c. Of course, you
1039 can also create aliases to use you preferred commands, for exam‐
1040 ple, "c='cp -adp'". Consult the alias command above for more in‐
1041 formation.
1042
1043 The l command allows the use of the e, edit option to modify the
1044 destination of a symbolic link. Example: l edit 12 (or le 12)
1045 to relink the symbolic link corresponding to the file whose ELN
1046 is 12.
1047
1048 When using the sel keyword and no destiny is provided, c and m
1049 will copy/move selected files into the current directory. When‐
1050 ever sel is not used, but just a source file name (and no des‐
1051 tiny is provided), the m command behaves much like the imv(1)
1052 shell command (from the `renameutils` package), providing an in‐
1053 teractive renaming function: it prompts the user to enter a new
1054 name using the source file name as base, so that it does not
1055 need to be typed twice. For this alternative prompt, only TAB
1056 completion for file names is available.
1057
1058 clifm supports advcp(1), wcp, and rsync(1) to copy files (they
1059 include a progress bar). To use them instead of cp(1) set the
1060 corresponding option (cpCmd) in the configuration file. If advcp
1061 is selected, the command used is advcp -giRp (or advcp -gRp, for
1062 non-interactive mode). If rsync, the command is rsync -avP. wcp
1063 takes no argument.
1064
1065 advmv(1) is also supported to move files (to add a progress bar
1066 to the move command). Use the mvCmd option in the configuration
1067 file to choose this alternative implementation of mv. In this
1068 case, the command used is advmv -gi (or advmv -g for non-inter‐
1069 active mode).
1070
1071
1072 colors print the color codes list currently used for files listing.
1073
1074 cd [ELN/DIR]
1075 Change the current working directory to ELN/DIR.
1076
1077 Directories check order:
1078 1. If no argument, change to the home directory (HOME, or, if
1079 HOME is not set, the sixth field of the entry corresponding to
1080 the current user in /etc/passwd)
1081 2. If argument is an absolute path (begins with a slash char‐
1082 acter), or the first component is dot (.) or dot-dot (..), con‐
1083 vert to canonical form (via realpath(3)) and, if a valid direc‐
1084 tory, change into that directory.
1085 3. Check CDPATH environment variable and append /DIR to each
1086 of the paths specified here. If the result of the concatenation
1087 is a valid directory, change into it.
1088 4. Check directories in the current working directory. If a
1089 matching directory is found, change to it.
1090
1091 You can use either ELN's or a string to indicate the directory
1092 you want. Ex: cd 12 or cd ~/media. If autocd is enabled (de‐
1093 fault), cd 12 and cd ~/media could be written as 12 and ~/media
1094 respectively as well.
1095
1096 Unlike the shell cd(1) command, clifm's built-in cd function not
1097 only changes the current directory, but also lists its content
1098 (provided the option CdListsAutomatically is enabled, which is
1099 the default) according to a comprehensive list of color codes.
1100 By default, the output of cd is much like this shell command:
1101 cd DIR && ls --color=auto --group-directories-first.
1102
1103 Automatic files listing can be disabled by either setting AutoLs
1104 to "false" in the configuration file or running clifm with the
1105 -o or --no-autols option.
1106
1107 cl, columns [on, off]
1108 toggle columns on/off.
1109
1110 cmd, commands
1111 show this list of commands. A more convenient way of getting in‐
1112 formation about clifm commands is via the interactive help
1113 plugin (depends on fzf), by default bound to the "ihelp" action
1114 name.
1115
1116 cs, colorschemes [edit [APP]] [NAME]
1117 with no arguments, list available color schemes. Use the edit
1118 option to open/edit the configuration file of the current color
1119 scheme (open with APP if specified or via the default associated
1120 application). Otherwise, just switch to the color scheme NAME.
1121 TAB completion is available.
1122
1123 d, dup FILE...
1124 Duplicate files passed as parameters, either directories or reg‐
1125 ular files. The user will be asked for a destiny directory. Du‐
1126 plicated file names are generated by appending ".copy" to the
1127 basename of each source file. For example: d /my/file will copy
1128 /my/file into the directory selected by the user as file.copy.
1129 If file.copy already exists, an extra suffix will be added as
1130 follows: file.copy-N, where N is a positive integer (starting at
1131 1).
1132
1133 If rsync(1) is found, it will be used as follows: rsync -acz‐
1134 vAXHS --progress. Else, cp(1) will be used: cp -a.
1135
1136 dc [on, off, status]
1137 toggle the files counter function on/off.
1138
1139 ds, desel [*, a, all] [FILE]...
1140 deselect one or more selected files.
1141
1142 If no parameter is passed, the user is prompted to either mark
1143 selected files to be deselected or to edit the selections file
1144 (entering 'e') via a text editor to manually deselect files.
1145
1146 Use *, a or all to deselect all selected entries at once. Ex:
1147 ds *.
1148
1149 You can also pass the file name(s) (or ELN's) to be deselected
1150 as a parameter. For example: ds myfile 24.
1151
1152 TAB completion is available for this command.
1153
1154 edit [reset] [APPLICATION]
1155 edit the main configuration file (F10 key is also available). If
1156 an application is specified, it will be used to open the config‐
1157 uration file. Use the 'reset' option to generate a fresh config‐
1158 uration file and create a backup copy of the old one (named
1159 clifmrc.YYYYMMDD@HH:MM:SS).
1160
1161 exp [FILE]...
1162 with no argument, export the list of files in the current work‐
1163 ing directory to a temporary file. Otherwise, export only those
1164 specified as further arguments: they could be directories, file
1165 names, ELN's or some search expression like "*.c".
1166
1167 ext [on, off, status]
1168 toggle external commands on/off.
1169
1170 f, forth [h, hist] [clear] [!ELN]
1171 it works just like the back function, but it goes forward in the
1172 history record. Of course, you can use f hist, f h, fh, and
1173 f !ELN.
1174
1175 fc, filescounter [on, off, status]
1176 By default, clifm prints the amount of files contained by listed
1177 directories next to directories name. However, since this is an
1178 expensive feature, It might be desirable, for example, when
1179 listing files in a remote machine, to disable this feature. Use
1180 the 'off' option to disable it. To permanently disable it, use
1181 the FilesCounter option in the configuration file.
1182
1183 ff, dirs-first [on, off, status]
1184 toggle list directories first on/off.
1185
1186 fs Print an extract from 'What is Free Software?', written by
1187 Richard Stallman.
1188
1189 ft, filter [unset] [[!]REGEX]
1190 with no argument, print the current filter. To remove the cur‐
1191 rent filter use the 'unset' option. To set a new filter enter
1192 ft [!]REGEX. Use the exclamation mark to reverse the behavior or
1193 a filter. For example: ft !^. will prevent hidden files from be‐
1194 ing listed, just as 'ft ^D' will list only files starting with
1195 'D'.
1196
1197 The filter will be lost at program exit. To permanently set a
1198 files filter use the Filter option (in the configuration file).
1199 You can also use the CLIFM_FILTER environment variable (see be‐
1200 low), though the value of this variable will be lost at system
1201 shutdown or reboot.
1202
1203 fz [on, off]
1204 Toggle full directory size on/off (only for long view mode).
1205
1206 hf, hidden [on, off, status]
1207 toggle hidden files on/off.
1208
1209 history [edit [APP]] [clear] [-n] [on, off, status]
1210 with no arguments, it shows the history list. If clear is passed
1211 as argument, it will delete all entries in the history file. Use
1212 'edit' to open the history file and modify it if needed (the
1213 file will be opened with APP, if specified, or with the default
1214 associated application otherwise). -n tells the history command
1215 to list only the last 'n' commands in the history list. Finally,
1216 you can disable history (subsequent entries won't be written to
1217 the history file) via history off.
1218
1219 You can use the exclamation mark (!) to perform some history
1220 commands:
1221 !!: Execute the last command.
1222 !n: Execute the command number 'n' in the history list.
1223 !-n: Execute the last-n command in the history list.
1224 ![STRING]: Execute command starting with STRING. TAB comple‐
1225 tion is available in this case.
1226
1227 TAB completion is available: just type ! and then TAB to see the
1228 complete list of history commands, or !str and then TAB to see
1229 the list of entries matching 'STR'.
1230
1231 icons [on, off]
1232 toggle icons on/off
1233
1234 j, jc, jl, jp [STR]..., jo [NUM], je
1235 j is the fastest way of using Kangaroo, a directory jumper func‐
1236 tion to quickly navigate through the jump database (i.e. a data‐
1237 base of visited directories).
1238
1239 With no argument, j just lists the entries in the jump database,
1240 printing the order number of the corresponding entry, the number
1241 of visits, the days since the first visit, the rank value, and
1242 the directory name itself (an asterisk next to the rank value
1243 means that the corresponding directory is bookmarked, the cur‐
1244 rent directory in some workspace or pinned). Otherwise, it
1245 searches for STR in the database and cd into the best ranked
1246 matching entry. Example: j D will probably take you to
1247 /home/user/Downloads, provided this directory has been already
1248 visited and is the best ranked match in the database. For a more
1249 detailed description of the matching algorithm see the KANGAROO
1250 FREQUENCY ALGORITHM section below.
1251
1252 Multiple query strings could be passed to the function. For ex‐
1253 ample, j et mo will first check for 'et' in the jump database
1254 and then will further filter the search using the second parame‐
1255 ter: 'mo'. It will most probably take you (again, provided the
1256 directory has been already visited and is the best ranked match)
1257 to /etc/modprobe.d directory. Bear in mind that if STR is an ac‐
1258 tual directory, jump will just cd into it without performing any
1259 query.
1260
1261 The backslash (\) and the slash (/) could be used to instruct
1262 Kangaroo to search for the string query only in the first or
1263 last path segment of each entry in the database respectively.
1264 Let's suppose we have two entries matching src in the database:
1265 /media/src/images and /home/user/Downloads/clifm/src. If the
1266 first entry is better ranked than the second, j src will match
1267 this first entry. However, if what we really want is the second
1268 entry, appending a slash to the query string instructs Kangaroo
1269 to only match entries having src in the last path segment, here
1270 /home/user/Downloads/clifm/src.
1271
1272 Since it is not always obvious or easy to know where exactly a
1273 query string will take you, clifm (if the suggestions system is
1274 enabled) will print, at the right of the cursor, the path
1275 matched by Kangaroo. If that is the actually intended path, just
1276 press the Right arrow key to accept the suggestion. Otherwise,
1277 it will be ignored. You can also use TAB completion to print the
1278 list of matches for the current query string. For example: j -
1279 c<TAB> to list all entries in the directory history list con‐
1280 taining a dash (-) and a 'c'.
1281
1282 j accepts five modifiers: 'e', 'p' 'c', 'o', and 'l', the first
1283 standing for "edit", the second for "parent", the third for
1284 "child", the fourth for "order", and the last one for 'list'.
1285 Thus, je will open the jump database to be edited if needed; jc
1286 will search for files querying only child directories relative
1287 to the current working directory, while jp will do the same but
1288 for parent directories. jo allows to specify an order number
1289 (the left most value in the jump list) instead of a string or a
1290 file name, in which case no matching process is performed. Fi‐
1291 nally, jl just prints the matches for the given query string(s),
1292 but without changing the current directory. Examples:
1293
1294 jp foo will take you to the most visited parent directory con‐
1295 taining the string "foo".
1296
1297 jc bar test will take you to the most visited child directory
1298 containing the strings "bar" and "test".
1299
1300 jo 13 will cd into the path corresponding to the order number
1301 13. TAB completion is available to expand order numbers into the
1302 corresponding paths.
1303
1304 jl foo will print all entries in the database matching the word
1305 "foo".
1306
1307 To reset or modify the jump database as you wish, simply open
1308 the jump file using the je command, edit whatever needs to be
1309 edited, save changes, and close the editor.
1310
1311 An alternative way of navigating the jump database is using the
1312 jumper plugin (located in the plugins directory and bound by de‐
1313 fault to the "++" action name), which uses fzf to enable fuzzy
1314 searches. Just enter ++ to perform a fuzzy search over the jump
1315 database.
1316
1317 kb, keybinds [edit [APP]] [reset] [readline]
1318 with no argument, prints the current keyboard codes and their
1319 associated functions. To edit the keybindings file, use the edit
1320 option (the file will be opened with APP, if specified, or with
1321 the default associated application otherwise). If you somehow
1322 messed up your keybindings, use the 'reset' option to create a
1323 fresh keybindings file with the default values. To list readline
1324 keybindings, use the readline option. Bear in mind that these
1325 keybindings are not provided by clifm, but by readline itself,
1326 and as such depend on the system settings (they can be custom‐
1327 ized however via the ~/.inputrc file).
1328
1329 lm [on, off]
1330 Toggle the light mode on/off. This option, aimed to make files
1331 listing faster than the default mode, is especially useful for
1332 really old hardware or when working on remote machines. For more
1333 details see the NOTE ON SPEED section below.
1334
1335 log [clear] [on, off, status]
1336 with no arguments, it prints the contents of the log file. If
1337 clear is passed as argument, all the logs will be deleted. on,
1338 off, and status enable, disable, and check the status of the log
1339 function for the current session.
1340
1341 media
1342
1343 NOTE: This command is Linux-specific
1344
1345 List available storage devices and mount/unmount the selected
1346 one using either udevil or udisks2 (at least one of these must
1347 be installed. udevil will be preferred over udisks2). If the de‐
1348 vice is unmounted, it will be automatically mounted, and if
1349 mounted, it will be automatically unmounted.
1350
1351 Though mountpoints are determined by the mounting application
1352 itself (udevil or udisks2), clifm will automatically cd into the
1353 corresponding mountpoint whenever the mount operation was suc‐
1354 cesfull.
1355
1356 When unmounting, and if the current directory is inside the
1357 mountpoint, clifm will attempt to cd into the previous visited
1358 directory, and, if none, into the home directory, before un‐
1359 mounting the device.
1360
1361 To get information about a device, enter iELN, for example, i12,
1362 provided '12' is the ELN of the device you want.
1363
1364 mf [NUM, unset]
1365 List only up to NUM files (valid range: >= 0). Use unset to list
1366 all files (default). An indicator (listed_files/total_files)
1367 will be printed below the list of files whenever some file is
1368 excluded from the current list (e.g. 20/310). Note however that
1369 though some files are excluded, all of them are loaded anyway,
1370 so that you can still perform any valid operation on them. For
1371 example, even if only 10 files are listed, you can still search
1372 for ALL symbolic links in the corresponding directory using the
1373 appropriate command: /* -l.
1374
1375 mm, mime [info ELN/FILENAME] [edit] [import]
1376 This is Lira, clifm's resource opener. The info option prints
1377 the MIME information about ELN/FILENAME: its MIME type, and, if
1378 any, the application associated to this file name or to the
1379 file's MIME type.
1380
1381 The edit option allows you to edit and customize the MIME list
1382 file. So, if a file has no default associated application, first
1383 get its MIME info or its file extension (running mm info FILE),
1384 and then add a value for it to the MIME list file using the edit
1385 option (mm edit or F6). Check the RESOURCE OPENER section below
1386 for information about the mimelist file syntax.
1387
1388 Finally, via the import option clifm will try to import MIME as‐
1389 sociations from the system looking for mimeapps.list files in
1390 those paths specified by the Freedesktop specification (see
1391 https://specifications.freedesktop.org/mime-apps-spec/mime-apps-
1392 spec-latest.html). If at least one MIME association is success‐
1393 fuly imported, it will be stored as mimelist.clifm.XXXXXX (where
1394 XXXXXX is a random six digits alphanumerical string). You can
1395 add these new associations to your mimelist file using the mime
1396 edit command.
1397
1398 mp, mountpoints
1399 list available mountpoints and change the current working direc‐
1400 tory to the selected mountpoint.
1401
1402 msg, messages [clear]
1403 with no arguments, prints the list of messages in the current
1404 session. The clear option tells clifm to empty the messages
1405 list.
1406
1407 n, new [FILE]... [DIR/]...
1408 create new empty files and/or directories. If a file name ends
1409 with a slash (/), it will be taken as a directory name and cre‐
1410 ated via the shell command mkdir -p. Else, it will be created
1411 via touch(1). Ex: n myfile mydir/, to create a file named myfile
1412 and a directory named mydir. If no file name is specified, the
1413 user will be asked for one. If one or more of the specified file
1414 names already exist, ".new" will be appended to the file name.
1415
1416 net [NAME] [edit] [m, mount NAME] [u, unmount NAME]
1417 1. The configuration file
1418
1419 The net command manages connections to remote systems via a sim‐
1420 ple samba-like configuration file ($HOME/.config/clifm/pro‐
1421 files/PROFILE/nets.clifm). Here you can specify multiple remotes
1422 and options for each of these remotes. Syntax example for this
1423 file:
1424
1425 [remote_name]
1426 Comment=A nice descriptive comment
1427 Mountpoint=/path/to/mountpoint
1428 MountCmd=sudo mount.cifs //192.168.0.12/share %m -o OPTIONS
1429 UnmountCmd=sudo umount %m
1430 AutoUnmount=true (Auto-unmount this remote at exit)
1431 AutoMount=false (Auto-mount this remote at startup)
1432
1433 Note: %m could be used as a placeholder for Mountpoint. %m will
1434 be replaced by the value of Mountpoint.
1435
1436 1.a. Mounting remote file systems
1437
1438 A Samba share:
1439 [samba_share]
1440 Comment=My samba share
1441 Mountpoint="~/.config/clifm/mounts/smb_share"
1442 MountCmd=sudo mount.cifs //192.168.0.26/samba_share %m -o
1443 mapchars,credentials=/etc/samba/credentials/samba_share
1444 UnmountCmd=sudo umount %m
1445 AutoUnmount=false
1446 AutoMount=false
1447
1448 A SSH file system (sshfs):
1449 [ssh_share]
1450 Comment=My ssh share
1451 Mountpoint="/media/ssh"
1452 MountCmd=sshfs user@192.168.0.26: %m -C -p 22
1453 UnmountCmd=fusermount3 -u %m
1454 AutoUnmount=true
1455 AutoMount=false
1456
1457 1.b. Mounting local file systems
1458
1459 Though originally intended to manage remote file systems, net
1460 can also manage local file systems. Just provide the appropriate
1461 mount and unmount commands. Since the device name assigned by
1462 the kernel might change accross reboots (specially when it comes
1463 to removable drives), it is recommended to mount using the de‐
1464 vice's UUID (Universal Unique Identifier) instead of the drive
1465 name. For example:
1466
1467 MountCmd=sudo mount -U c98d91g4-6781... %m
1468
1469 Here's an example of how to set up net to mount USB devices, one
1470 with a FAT file system, and another with an ISO9660 file system:
1471
1472 [Sandisk USB]
1473 Comment=Sandisk USB drive
1474 Mountpoint="/media/usb"
1475 MountCmd=sudo mount -o gid=1000,fmask=113,dmask=002 -U
1476 5847-xxxx %m
1477 UnmountCmd=sudo umount %m
1478 AutoUnmount=false
1479 AutoMount=false
1480
1481 [Kingston USB]
1482 Comment=Kingston USB drive
1483 Mountpoint="/media/usb2"
1484 MountCmd=sudo mount -t iso9660 -U 2020-10-01-15-xx-yy-zz %m
1485 UnmountCmd=sudo umount %m
1486 AutoUnmount=false
1487 AutoMount=false
1488
1489 NOTE: The gid, fmask, and dmask options are used to allow the
1490 user to access the mountpoint without elevated privileges.
1491
1492 If the device data is unknown, as it often happens when it comes
1493 to removable devices, you should use the media command instead.
1494
1495 2. Command syntax
1496
1497 Without arguments, net lists the configuration for each remote
1498 available in the configuration file.
1499
1500 Use the edit option to edit the remotes configuration file. If
1501 no further argument is specified, the file will be opened with
1502 the current resource opener. However, you can pass an applica‐
1503 tion as second parameter to open to configuration file. Example:
1504 'net edit nano'.
1505
1506 If not already mounted, the m, mount option mounts the specified
1507 remote using the mount command and the mounpoint specified in
1508 the confifuration file and automatically cd into the correspond‐
1509 ing mountpoint. Example: net m smb_work. m, mount could be omit‐
1510 ted, so that net smb_work amounts to net m smb_work. TAB comple‐
1511 tion is available for this function.
1512
1513 The u, unmount option unmounts the specified remote using the
1514 unmount command specified in the configuration file. For exam‐
1515 ple: net u smb_work. TAB completion is also available for this
1516 function.
1517
1518 NOTE: If you only need to copy some files to a remote location
1519 (including mobile phones) without the need to mount the re‐
1520 source, you can make use of the cprm.sh plugin, bound by default
1521 to the cr action. Just set up your remotes (cr edit) and then
1522 simply send the file you want (cr FILE). That's all.
1523
1524 o, open ELN/FILE [APPLICATION]
1525 open FILE, which can be either a directory, in which case it
1526 works just like the cd command (see above), a regular file, or a
1527 symbolic link to either of the two. For example: o 12, o file‐
1528 name, o /path/to/filename.
1529
1530 By default, the open function will open files with the default
1531 application associated to them via Lira, the built-in resource
1532 opener (see the mime command above). However, if you want to
1533 open a file with a different application, just add the applica‐
1534 tion name as second argument, e.g. o 12 leafpad or o12 leafpad.
1535
1536 If you want to run the program in the background, simply add the
1537 ampersand character, as usual: o 12 &, o 12&, o12& or (if auto-
1538 open is enabled) just 12&.
1539
1540 If the file to be opened is an archive/compressed file, the ar‐
1541 chive function (see the ad command above) will be executed in‐
1542 stead.
1543
1544 ow ELN/FILE [APPLICATION]
1545 Print a list of available applications associated to _ELN/FILE‐
1546 NAME (either via its MIME type or its file extension), allowing
1547 the user to choose one of these applications, and then open the
1548 file with the selected application. In simple words, this is
1549 what in most GUI file managers is called Open with... This com‐
1550 mand supports TAB completion: just type "ow filename ", then
1551 press TAB, and those applications able to open FILENAME will be
1552 listed.
1553
1554 opener [default] [APPLICATION]
1555 with no argument, prints the currently used resource opener (by
1556 default, Lira, clifm's built-in opener). Otherwise, set APPLICA‐
1557 TION as opener or, if default is passed instead, use Lira.
1558
1559 p, pr, prop ELN/FILE...
1560 print file properties for ELN/FILE. The output of this function
1561 is much like the combined output of ls -l and stat. By default,
1562 directories size is not shown. Use pp instead of just p to print
1563 directories size as well (it could take longer depending on the
1564 directory's content).
1565
1566 If you need to list the properties of all files in the current
1567 directory, try the long view mode (Alt-l). Fields displayed in
1568 this mode can be customized using the PropFields option in the
1569 configuration file.
1570
1571 For more information about file details consult the file-details
1572 help topic: help file-details.
1573
1574 path, cwd
1575 print the current working directory.
1576
1577 pf, prof, profile [ls, list] [set, add, del PROFILE]
1578 with no arguments, prints the name of the currently used pro‐
1579 file. Use the ls or list option to list available profiles. To
1580 switch, add or delete a profile, use the set, add, and del op‐
1581 tions respectively followed by the corresponding profile name.
1582 Bear in mind that, when switching profiles, command line argu‐
1583 ments will be ignored.
1584
1585 pg, pager [on, off, status]
1586 toggle Mas, the built-in pager, on/off. Useful to list directo‐
1587 ries with hundreds or thousands of files, the pager will start
1588 working, if set to on, whenever the screen is not enough to list
1589 all files.
1590
1591 Once in the pager, press the Down arrow key, Space or Enter to
1592 move downwards one line, or PageDown to move downwards an entire
1593 page. To go upwards, use the shortcuts provided by your terminal
1594 emulator, for example, Alt-PageUp or Alt-Up. Press 'c', 'p', or
1595 'q' keys to stop the pager, and 'h' or '?' for help.
1596
1597 pin [FILE/DIR]
1598 pin a file or a directory to be accessed later via the comma (,)
1599 keyword. For example, run pin mydir and then access mydir as
1600 follows: cd where the comma is automatically expanded to the
1601 pinned file, in this case mydir. The comma keyword could be used
1602 with any command, either internal or external, e.g, ls .
1603
1604 With no arguments, the pin command prints the current pinned
1605 file, if any. If an argument is given, it will be taken as a
1606 file name to be pinned. Running this command again, frees the
1607 previous pinned file and sets a new one. In other words, only
1608 one pin is supported at a time.
1609
1610 An easy alternative to create as many pins or shortcuts as you
1611 want, and how you want, is to use the alias function. Bookmarks
1612 could also be used to achieve a very similar result.
1613
1614 At program exit, the pinned file is written to a file in the
1615 configuration directory (as .pin) to be loaded in the next ses‐
1616 sion.
1617
1618 prompt [NAME, list, edit, reload]
1619 Temporarily change the current prompt to the prompt named NAME.
1620 Available prompts (which can be listed via prompt list or just
1621 prompt <TAB>) are defined in the prompts file ($HOME/.con‐
1622 fig/clifm/prompts.clifm). To permanently set a prompt, edit your
1623 color scheme file (via the cs edit command) and set Prompt to
1624 either a prompt code and a prompt name (as defined in the
1625 prompts file).
1626
1627 q, quit, exit, Q
1628 Gracefully quit clifm. Use Q to gracefully quit and enable the
1629 CD on quit functionality (write last visited directory to
1630 $XDG_CONFIG/clifm/.last to be later read by a shell function.
1631 See the SHELL FUNCTIONS section below).
1632
1633 rf, refresh
1634 refresh the screen, that is, reprint files in the current direc‐
1635 tory and update the prompt. If the current directory is not ac‐
1636 cessible for any reason, rf will go up until it finds an acces‐
1637 sible one and then will change to that directory.
1638
1639 rl, reload
1640 Reload all settings, except those passed as command line argu‐
1641 ments, from the configuration file.
1642
1643 rr [DIR] [EDITOR]
1644 Remove files and/or directories in bulk using a text editor.
1645
1646 rr sends all files in DIR (or in the current directory if DIR is
1647 omitted) to a temporary file and opens it using EDITOR (or the
1648 default associated application for text/plain MIME type, if EDI‐
1649 TOR is omitted).
1650
1651 Once in the editor, remove the lines corresponding to the files
1652 you want to delete. Save changes and close the editor. Removed
1653 files will be listed and the user asked for confirmation.
1654
1655 s, sel ELN/FILE... [[!]PATTERN] [-filetype] [:PATH]
1656 send one or multiple elements (either files or directories) to
1657 the Selection Box. sel accepts individual elements, range of el‐
1658 ements, say 1-6, file names and paths, just as wildcards (glob‐
1659 bing) and regular expressions. Example:
1660 s 1 4-10 r file* file name /path/to/filename. To deselect se‐
1661 lected files, use the ds command (see above), or the M-d key‐
1662 board shortcut.
1663
1664 If not in light mode, once a file is selected, and if the file
1665 is in the current working directory, the corresponding file name
1666 will be marked with an asterisk (colored according to the value
1667 of li in the color scheme file (by default bold green)), at the
1668 left of the file name (and at the right of its ELN).
1669
1670 Just as in the search function, it is also possible to further
1671 filter the list of matches indicating the desired file type. For
1672 instance, s -d will select all directories in the current work‐
1673 ing directory. For available file type filters see the search
1674 function above.
1675
1676 By default, the selection function operates on the current work‐
1677 ing directory. To select files in any other directory use the
1678 ":PATH" expression. For example, to select all regular files
1679 with a .conf extension in the /etc directory, the command would
1680 be: s .*\.conf$ -r :/etc, or using wildcards: s *.conf -r :/etc.
1681
1682 Just as in the case of the search function, inverse matching is
1683 supported for patterns, either wildcards or regular expressions.
1684 To invert or reverse the meaning and action of a pattern, just
1685 prepend an exclamation mark (!). E.g., to select all non-hidden
1686 regular files in the Documents directory, issue this command:
1687 s !^. -r :Documents, or, to select all directories in /etc, ex‐
1688 cept those ending with ".d": s !*.d -d :/etc.
1689
1690 Glob and regular expressions could be used together. For exam‐
1691 ple: s ^[r|R].*d$ /etc/*.conf will select all files starting
1692 with either 'r' or 'R' and ending with 'd' in the current work‐
1693 ing directory, plus all .conf files in the /etc directory. How‐
1694 ever, this use is discouraged if both patterns refer to the same
1695 directory, since the second one will probably override the re‐
1696 sult of the first one.
1697
1698 It is important to note that glob expressions are evaluated be‐
1699 fore regular expressions, in such a way that any pattern that
1700 could be understood by both kinds of pattern matching mechanisms
1701 will be evaluated first according to the former, that is, as a
1702 glob expression. For example, '.*', as regular expression,
1703 should match all files. However, since glob expressions are
1704 evaluated first, it will only match hidden files. To select all
1705 files using a glob expression, try '.* *', or, with a regular
1706 expression: '^' or '(.*?)'. The keyboard shortcut M-a is also
1707 available to perform the same operation.
1708
1709 The Selection Box is accessible to different instances of the
1710 program, provided they use the same profile (see the profile
1711 command below). By default, indeed, each profile keeps a private
1712 Selection Box, being thus not accessible to other profiles. You
1713 can nonetheless modify this behavior via the ShareSelbox option
1714 in the configuration file. If the ShareSelbox option is enabled
1715 (see the configuration file), selected files are stored in
1716 /tmp/clifm/username/.selbox.clifm. Otherwise, /tmp/clifm/user‐
1717 name/.selbox_profilename.clifm is used (this is the default).
1718
1719 To operate on selected files, use the sel keyword.
1720
1721 Note: If there is a file named sel in the current directory,
1722 use ./sel to distinguish it from the sel keyword. For example,
1723 enter p ./sel to tell CliFM that you want to get the properties
1724 of the file named sel rather than the properties of the cur‐
1725 rently selected files.
1726
1727 For more information consult the BUILT-IN EXPANSIONS section be‐
1728 low.
1729
1730
1731 sb, selbox
1732 show the elements currently contained in the Selection Box.
1733
1734 splash show the splash screen.
1735
1736 st, sort [METHOD] [rev]
1737 with no argument, print the current sorting method. Else, set
1738 sorting method to METHOD, where METHOD could be one of: 0 =
1739 none, 1 = name, 2 = size, 3 = atime, 4 = btime (ctime, if btime
1740 is not available), 5 = ctime, 6 = mtime, 7 = version (name, if
1741 ctime is not available), 8 = extension, and 9 = inode, 10 =
1742 owner, and 11 = group. Both numbers and names are allowed. Bear
1743 in mind that methods 10 and 11 sort by owner and group ID num‐
1744 ber, not by owner and group names.
1745
1746 By default, files are sorted from less to more (ex: from 'a' to
1747 'z' if using the "name" method). Use the rev option to invert
1748 this order. Ex: st rev or st 3 rev. Switch back to the previous
1749 ordering running st rev again.
1750
1751 stats print statistics about files in the current directory (not
1752 available in light mode).
1753
1754 t, tr, trash [ELN/FILE]... [ls, list] [clear, empty] [del [FILE]...]]
1755 with no argument (or by passing the ls option), it prints the
1756 list of currently trashed files. The clear or empty parameter
1757 removes all files from the trash can, while the del parameter
1758 lists trashed files allowing the user to remove one or more of
1759 them. If using del, TAB completion to list/select currently
1760 trashed files is available.
1761
1762 The trash directory is $XDG_DATA_HOME/Trash, usually ~/.lo‐
1763 cal/share/Trash. Since this trash system follows the Freedesktop
1764 specification, it is able to handle files trashed by different
1765 Trash implementations.
1766
1767 To undelete/untrash trashed files see the undel command below.
1768
1769 tag [ls, list] [new] [rm, remove] [mv, rename] [untag] [merge]
1770 [FILE]... [[:]TAG]
1771 tag is the main Etiqueta command, clifm's built-in files tagging
1772 system. See the FILE TAGS section for a complete description of
1773 this command.
1774
1775 te FILE...
1776 toggle executable bit (on user, group, and others) on FILE(s).
1777 It is equivalent to the -x and +x options for the chmod(1) com‐
1778 mand.
1779
1780 tips print the list of clifm tips
1781
1782 u, undel, untrash [*, a, all] [FILE]...
1783 If file names are passed as parameters, undelete these files,
1784 that is, restore them to their original location. Otherwise,
1785 this function prints a list of currently trashed files allowing
1786 you to choose one or more of these files to be undeleted. Use
1787 the *, a or all parameters to undelete all trashed files at
1788 once. TAB completion to list/select currently trashed files is
1789 available.
1790
1791 uc, unicode [on, off, status]
1792 toggle unicode on/off.
1793
1794 unpin this command takes no argument. It just frees the current pin
1795 and, if it exists, deletes the .pin file generated by the pin
1796 command..TP v, vv, paste sel [DESTINY] the 'paste sel' or 'v
1797 sel' command copies the currently selected files, if any, into
1798 the current working directory. To copy these files into another
1799 directory, tell 'paste' where to copy these files. Ex: 'paste
1800 sel /path/to/directory'. The copy command (c) could be used in
1801 the same way: 'c sel' indeed copies selected files into the cur‐
1802 rent directory. Use the 'vv' command instead of just 'v' to copy
1803 selected files into DESTINY and rename them at once: 'vv sel
1804 DIR'.
1805
1806 ver, version
1807 show clifm version details.
1808
1809 ws [NUM/NAME, +, -]
1810 clifm offers up to eight workspaces, each with its own indepen‐
1811 dent path.
1812
1813 With no argument, the ws command prints the list of workspaces
1814 and its corresponding paths, highlighting the current workspace.
1815 Use NUM to switch to workspace NUM, NAME to switch to the
1816 workspace named NAME, the plus sign (+) to switch to the next
1817 workspace, and the minus sign (-) to switch to the previous
1818 workspace. Four keyboard shortcuts are available to easily
1819 switch to any of the first four workspaces: Alt-[1-4].
1820
1821 Every time an empty workspace is created, it starts in the path
1822 to the workspace from which it was invoked (in other words, in
1823 the current working directory).
1824
1825 Though by default workspaces are unnamed, you can name them
1826 wathever you like using the WorkspaceNames option in the config‐
1827 uration file.
1828
1829 x, X [DIR]
1830 open DIR, or the current working directory if DIR is not speci‐
1831 fied, in a new instance of clifm (as root if X, as the current
1832 unprivileged user if x) using the value of TerminalCmd (from the
1833 configuration file) as terminal emulator. If this value is not
1834 set, xterm will be used as fallback terminal emulator. This
1835 function is only available for graphical environments.
1836
1837
1839 clifm offers four kinds of file filters:
1840
1841 a) A dot filter to permanently exclude hidden files from the files
1842 list. See the -A and -a options above.
1843
1844 b) Files filter via regular expressions (using the Filter option in
1845 the configuration file or the CLIFM_FILTER environment variable) to
1846 permanently exclude certain groups of file names, for example, backup
1847 files or files ending with a tilde (~).
1848
1849 c) Local filter via the Quick search function (supporting both regular
1850 expressions, wildcards, and invert matching) to temporarily filter the
1851 current list of files.
1852
1853 d) Filtering files via the TAB key:
1854
1855 You can filter files using wildcards (always preceded by a command).
1856 For example: p *.pdf<TAB> to get a list of PDF files in the current di‐
1857 rectory.
1858
1859 Files can be filtered as well using the '=' keyword followed by a file
1860 type filter character. For example, =l<TAB> to get a list of symbolic
1861 links in the current directory. The list of available file type charac‐
1862 ters is as follows:
1863
1864 b: Block devices
1865 c: Character devices
1866 C: Files with capabilities
1867 d: Directories
1868 f: Regular files
1869 g: SGID files
1870 h: Multi-hardlink files (directories excluded)
1871 l: Symbolic links
1872 o: Other-writable files
1873 p: FIFO/pipes
1874 s: Sockets
1875 t: Files with the sticky bit set
1876 u: SUID files
1877 x: Executable files
1878
1879 If using FZF for TAB completion, multi-selection is allowed.
1880
1881
1883 Right, C-f: Accept the entire current suggestion
1884
1885 Alt-Right, Alt-f: Accept only the first word of the current suggestion
1886 (up to first slash or space)
1887
1888 Alt-c: Clear the current command line buffer
1889
1890 Alt-q: Delete last word (up to last slash or space)
1891
1892 Alt-i, Alt-.: Toggle hidden files on/off
1893
1894 Alt-l: Toggle long view mode on/off
1895
1896 Alt-g: Toggle list-directories-first on/off
1897
1898 Alt-,: Toggle list only directories on/off
1899
1900 C-Alt-l: Toggle max file name length on/off
1901
1902 C-Alt-i:, Alt-TAB: Toggle disk usage analyzer on/off
1903
1904 Alt-w: Toggle full path file names in virtual directories
1905
1906 C-l: Refresh the screen (reprint files in current directory and update
1907 prompt)
1908
1909 Alt-t: Clear program messages
1910
1911 Alt-m: List mountpoints
1912
1913 Alt-b: Launch the Bookmarks Manager
1914
1915 Alt-h: Show directory history
1916
1917 Alt-n: Create new file or directory
1918
1919 Alt-s: Open the Selection Box
1920
1921 Alt-a: Select all files in the current working directory
1922
1923 Alt-d: Deselect all selected files
1924
1925 Alt-p: Change to pinned directory
1926
1927 Alt-1: Switch to workspace 1
1928
1929 Alt-2: Switch to workspace 2
1930
1931 Alt-3: Switch to workspace 3
1932
1933 Alt-4: Switch to workspace 4
1934
1935 Alt-r: Change to root directory
1936
1937 Alt-e, Home: Change to home directory
1938
1939 Alt-u, S-Up: Change to parent directory
1940
1941 Alt-j, S-Left: Change to previous visited directory
1942
1943 Alt-k, S-Right: Change to next visited directory
1944
1945 C-Alt-j: Change to first visited directory
1946
1947 C-Alt-k: Change to last visited directory
1948
1949 C-Alt-o: Switch to previous profile
1950
1951 C-Alt-p: Switch to next profile
1952
1953 C-Alt-a: Archive selected files
1954
1955 C-Alt-e: Export selected files
1956
1957 C-Alt-r: Rename selected files
1958
1959 C-Alt-d: Remove selected files
1960
1961 C-Alt-t: Trash selected files
1962
1963 C-Alt-u: Restore trashed files
1964
1965 C-Alt-b: Bookmark last selected file/directory
1966
1967 C-Alt-g: Open/change-to last selected file/directory
1968
1969 C-Alt-n: Move selected files into the current directory
1970
1971 C-Alt-v: Copy selected files into the current directory
1972
1973 Alt-y: Toggle light mode on/off
1974
1975 Alt-z: Switch to previous sorting method
1976
1977 Alt-x: Switch to next sorting method
1978
1979 C-x: Launch new instance of the program
1980
1981 F1: Go to the manpage
1982
1983 F2: List commands
1984
1985 F3: List keybindings
1986
1987 F6: Open the MIME list file
1988
1989 F7: Open the jump database file
1990
1991 F8: Open the current color scheme file
1992
1993 F9: Open the keybindings file
1994
1995 F10: Open the configuration file
1996
1997 F11: Open the bookmarks file
1998
1999 F12: Quit
2000
2001 NOTE: C stands for Control and S for Shift.
2002
2003 NOTE 2: Some of these keybindings might not work on your console/termi‐
2004 nal emulator, depending on your system. Some useful tips on this re‐
2005 gard:
2006
2007 Haiku terminal: Most of these keybindings won't work on the Haiku ter‐
2008 minal, since Alt plays here the role Ctrl usually plays in most other
2009 systems (see the Haiku documentation). To fix this just set your custom
2010 keybindings.
2011
2012 Kernel built-in console: Key sequences involving the Shift key (S-up,
2013 S-left, and S-right in our case) will just not work. Use the alterna‐
2014 tive key sequences instead: M-u, M-j, and M-k respectively
2015
2016 NetBSD (wsvt25) and OpenBSD (vt220) kernel consoles: Key sequences in‐
2017 volving the Alt key won't work out of the box. Here's how to make it
2018 work:
2019
2020 On OpenBSD:
2021 1) Copy /etc/examples/wsconsctl.conf to /etc (if it does not
2022 already exist)
2023 2) Add the metaesc flag to your current keyboard enconding. For
2024 example keyboard.encoding=us.metaesc
2025 You might need to reboot the machine for changes to take ef‐
2026 fect.
2027
2028 On NetBSD:
2029 Add the metaesc flag to your current encoding in /etc/ws‐
2030 cons.conf. Example: encoding us.metaesc
2031 You might need to reboot the machine for changes to take ef‐
2032 fect.
2033
2034 Konsole: If Shift+left and Shift+right are not already bound to any
2035 function, you need to bind them manually. Go to Settings -> Edit cur‐
2036 rent profile -> Keyboard -> Default (Xfree4), and add these values:
2037 Left+Shift \E[1;2D
2038 Right+Shift \E[1;2C
2039
2040 If they are already bound, by contrast, you only need to unbound
2041 them. Go to "Settings -> Configure keyboard shortcuts", click on
2042 the corresponding keybinding, and set it to "Custom (none)").
2043
2044 Terminology/Yakuake: Shift+left and Shift+right are already bound to
2045 other functions, so that you only need to unbind them or rebind the
2046 corresponding functions to different key sequences.
2047
2048 Of course, the above two procedures should be similar in case of key‐
2049 binding issues in other terminal emulators.
2050
2051 In case some of these keybindings are already used by your Window Man‐
2052 ager, you only need to unbind the key or rebind the corresponding func‐
2053 tion to another key. Since each Window Manager uses its own mechanisms
2054 to set/unset keybindings, you should consult the appropriate manual.
2055
2056 Customizing keybindings
2057
2058 The above are the default keyboard shortcuts. However, they can be
2059 freely modified using the 'kb edit' command (or pressing F9) or just
2060 editing the keybindings file (see the FILES section below) to your lik‐
2061 ing.
2062
2063 Since clifm does not depend on the curses library, keybindings are set
2064 up via ANSI escape codes, for example, "\[17~" for the F6 key. The two
2065 main difficulties with ANSI escape codes are: 1) They are not intuitive
2066 at all, and 2) They vary depending on the terminal emulator used. This
2067 is why we provide a plugin (kbgen) to more easily configure your key‐
2068 bindings.
2069
2070 The plugin can be found in the plugins directory as a C source file.
2071 The first step, therefore, is to compile this source file to produce a
2072 binary file. Compile as follows:
2073
2074 gcc -o kbgen kbgen.c
2075
2076 Note: Depending on your system, you might need to link against the
2077 curses library adding either -lcurses or -lncurses to the above line.
2078
2079 Now, just run the plugin entering './kbgen'. Use either octal, hexadec‐
2080 imal codes or symbols. Example: For F12 'kbgen' will print the follow‐
2081 ing lines:
2082
2083 Hex | Oct | Symbol
2084 ---- | ---- | ------
2085 \x1b | \033 | ESC (\e)
2086 \x5b | \133 | [
2087 \x32 | \062 | 2
2088 \x34 | \064 | 4
2089 \x7e | \176 | ~
2090
2091 In this case, supposing you want to use F12 to open the configuration
2092 file, the keybinding would be any of the following:
2093
2094 open-config:\x1b\x5b\x32\x34\x7e (Hex)
2095 open-config:\033\133\062\064\176 (Oct)
2096 open-config:\e[24~ (Symbol)
2097
2098 GNU emacs escape sequences are also allowed (ex: "\M-a", Alt-a in most
2099 keyboards, or "\C-r" for Ctrl-r). Some codes, especially those involv‐
2100 ing keys like Ctrl or the arrow keys, vary depending on the terminal
2101 emulator and the system settings. These keybindings should be set up
2102 thus on a per terminal basis. You can also consult the terminfo data‐
2103 base via the infocmp command. See terminfo(5) and infocmp(1).
2104
2105 Readline keybindings
2106
2107 System readline keybindings for command line editing, such as Ctrl-a,
2108 to move the cursor to the beginning of the line, or Ctrl-e, to move it
2109 to the end, should work out of the box. Of course, you can modify read‐
2110 line keybindings using the $HOME/.inputrc file, either globally or for
2111 some specific terminal or application. In this latter case, it is pos‐
2112 sible to set keybindings specifically for clifm using the application
2113 construct, that is, telling readline that the following keybindings ap‐
2114 ply only to clifm. For example, to bind the function "kill-whole-line"
2115 to Ctrl-b, add the following lines to your .inputrc file:
2116
2117 $if clifm
2118 "\C-b": kill-whole-line
2119 $endif
2120
2121 Keybindings for plugins
2122
2123 clifm provides four customizable keybindings for custom plugins. The
2124 procedure for setting a keybinding for a plugin is the following:
2125 1) Copy your plugin to the plugins directory (or use any of the
2126 plugins already in there)
2127 2) Link pluginx (where 'x' is the plugin number [1-4]) to your
2128 plugin using the 'actions edit' command. Ex: "plugin1=myplu‐
2129 gin.sh"
2130 3) Set a keybinding for pluginx using the 'kb edit' command.
2131 Ex: "plugin1:\M-7"
2132
2133
2135 All customization settings (theming) are made from a single configura‐
2136 tion file (the color scheme file), installed by default in
2137 XDG_DATA_DIRS/clifm/colors (usuallly /usr/local/share/clifm/colors or
2138 /usr/share/clifm/colors), though color scheme files found in XDG_CON‐
2139 FIG_HOME/clifm/colors (usually HOME/.config/clifm/colors) take prece‐
2140 dence.
2141
2142 Note: Color scheme files are copied automatically into the local colors
2143 directory when running the cs edit command.
2144
2145 Each color scheme file includes:
2146
2147 FiletypeColors = Colors for different file types, such as directory,
2148 regular files, and so on. See the COLORS section below.
2149
2150 InterfaceColors = Colors for clifm's interface, such as ELN's, file
2151 properties bits, suggestions, syntax highlighting, etc. See the COLORS
2152 section below.
2153
2154 ExtColors = Colors for files based of file name's extension. See the
2155 COLORS section below.
2156
2157 DirIconColor = Color for the directory icon (when icons are enabled).
2158 See the COLORS section below. Only when using icons-in-terminal or Ner‐
2159 fonts. If using rather emoji-icons (default build), this option is ig‐
2160 nored.
2161
2162 Prompt = Define CliFM's prompt. See the THE PROMPT section below.
2163
2164 DividingLine = The line dividing the current list of files and the
2165 prompt. See the THE DIVIDING LINE below.
2166
2167 FzfTabOptions = Options to be passed to fzf when using the fzf mode
2168 for TAB completion, including colors. See the BUILT-IN EXPANSIONS sec‐
2169 tion below.
2170
2171 The color scheme (or just theme) can be set either via the command line
2172 (--color-scheme=NAME), via the ColorScheme option in the main configu‐
2173 ration file, or using the cs command, for instance, cs mytheme. Enter
2174 just cs to list available color schemes (TAB completion is available).
2175 To edit the current color scheme enter cs edit.
2176
2177 1. COLORS
2178
2179 All color codes are specified in the corresponding color scheme file
2180 (by default ~/.config/clifm/colors/default.clifm). You can edit this
2181 file pressing F8 or entering cs edit.
2182
2183 Color codes
2184
2185 Colors are specified using the same format used by dircolors(1) and the
2186 LS_COLORS environment variable, namely, a colon separated list of codes
2187 with this general format: filetype=color. This is the list of file type
2188 codes (you'll find them in the FiletypeColors section of the current
2189 color scheme file):
2190
2191 di = directory
2192 ed = empty directory
2193 nd = directory with no read permission
2194 ne = empty directory with no read permission
2195 fi = regular file
2196 ef = empty regular file
2197 nf = file with no access permission
2198 ln = symlink
2199 mh = multi-hardlink file
2200 or = orphaned or broken symlink
2201 bd = block device
2202 cd = character device
2203 pi = FIFO, pipe
2204 so = socket
2205 su = SUID file
2206 sg = SGID file
2207 tw = sticky and other writable directory
2208 st = sticky and not other writable directory
2209 ow = other writable directory
2210 ex = executable file
2211 ee = empty executable file
2212 ca = file with capabilities
2213 no = unknown file type
2214 uf = unaccessible files (fstatat(3) error)
2215
2216
2217 The following codes are used for different interface elements (in the
2218 InterfaceColors section of the current color scheme file):
2219
2220 Suggestions
2221 sb = shell built-ins
2222 sc = aliases and shell command names
2223 sf = ELN's plus bookmarks, file, tag, and directory names
2224 sh = commands history entries
2225 sx = suggestions for clifm's internal commands and parameters
2226 sp = suggestions pointer (ex: 56 > filename, where '>' is the
2227 suggestion pointer)
2228
2229 Syntax highlighting
2230 hb = brackets '()[]{}'
2231 hc = comments (lines starting with '#')
2232 hd = slashes
2233 he = expansion chars '~*'
2234 hn = numbers
2235 hp = option parameters (starting with '-')
2236 hq = quoted strings (both single and double quotes)
2237 hr = process redirection (>)
2238 hs = process separators (; & |)
2239 hv = variable names (starting with '$')
2240
2241 Prompt elements
2242 li = selected files
2243 ti = trash indicator
2244 em = error message indicator
2245 wm = warning message indicator
2246 nm = notice message indicator
2247 si = stealth mode indicator
2248 tx = command line text (regular prompt)
2249 wp = command line text (warning prompt)
2250
2251 File properties
2252 dn = Dash (unset property)
2253 dr = Read permission bit
2254 dw = Write permission bit
2255 dxd = Executable permission bit (directories)
2256 dxr = Executable permission bit (regular files)
2257 dp = SUID, SGID, sticky bit
2258 dg = File ID (UID, GID) whenever the current user owns the file
2259 or is in the file's group
2260 dd = Last modification time
2261 dz = Directories size
2262 do = Octal value for file properties
2263
2264 Miscellaneous interface elements
2265 bm = bookmarked directory in the bookmarks screen
2266 fc = files counter
2267 df = default color
2268 dl = dividing line
2269 el = ELN color
2270 mi = misc indicators (disk usage, sort method, bulk rename,
2271 jump database list)
2272 ts = matching suffix for possible TAB completed entries
2273 tt = tilde for trimmed file names
2274 wc = welcome message
2275 wsN = color for workspace N (1-8)
2276 xs = exit code: success
2277 xf = exit code: failure
2278
2279 Color codes are just traditional ANSI color codes less the escape char‐
2280 acter and the final 'm'. Thus, for instance, if you want non-empty di‐
2281 rectories to be bold blue, add this to the FiletypeColors line in the
2282 corresponding color scheme file: di=01;34. If you want ELN's to be red,
2283 add this code to the InterfaceColors line: el=00;31
2284
2285 Color codes can be used for file extensions as well (regular files
2286 only) using this format: *.ext=color. For example, to print C source
2287 files in bold green, add this to the ExtColors line in the correspond‐
2288 ing color scheme file: *.c=01;32
2289
2290 Note: Non-accessible (non-readable by the current user), executable
2291 (including SUID and SGID) files, and files with capabilities take
2292 precedence over file extensions. For example, the file file.mp3, if ex‐
2293 ecutable, will be printed using the color code associated to executable
2294 files (ex) even if there is a color code associated to .mp3 files.
2295
2296 Six digits hexadecimal color codes are supported as well using this
2297 general format: #RRGGBB[-[1-9]], where 1-9 is a display attribute. For
2298 example, if you want directories to be bold Spring Green: di=#00ff7f-1.
2299
2300 Color variables
2301
2302 Up to 64 custom color variables can be used via the define keyword to
2303 make it easier to build and read theme files. Example:
2304
2305 define RED=00;31
2306 define MY_SPECIAL_COLOR=04;38;2;255;255;0;48;2;0;14;191
2307
2308 FiletpeColors="di=RED:"
2309 InterfaceColors="el=MY_SPECIAL_COLOR:"
2310
2311 These variables can only be used for FiletypeColors, InterfaceColors,
2312 ExtColors, and DirIconColor. The Prompt line (if using a prompt code)
2313 use full ANSI escape sequences instead.
2314
2315 Though by default clifm uses only 8 colors (16 with the high intensity
2316 variant), you can use 256 and RGB colors as well. Example:
2317
2318 fi=04;38;2;245;76;00;48;2;00;00;255
2319
2320 will print regular files underlined and using a bold orange RGB color
2321 on a blue background. In this case, just make sure to use a terminal
2322 emulator supporting RGB colors. To test your terminal color capabili‐
2323 ties use the colors.sh script (in the plugins directory).
2324
2325 NOTE: It might happen that, for some reason, you need to force clifm to
2326 use colors despite the value of the TERM variable. The OpenBSD console,
2327 for example, sets TERM to vt220 by default, which, according to the
2328 terminfo database, does not support color. However, the OpenBSD console
2329 does actually support color. In this case, you can set the
2330 CLIFM_FORCE_COLOR to either true or 1 to use color even if the value
2331 of TERM says otherwise.
2332
2333 To see a colored list of the currently used file color codes run cc or
2334 colors in clifm.
2335
2336 To run colorless use the --no-color command line option or set either
2337 CLIFM_NO_COLOR or NO_COLOR environment variables to any value. For more
2338 information about the no-color initiative see https://no-color.org/
2339
2340 For a full no-color experience recall to edit your prompt removing all
2341 color codes.
2342
2343 2. THE PROMPT
2344
2345 clifm's prompt (regular and warning ones) is taken from the Prompt line
2346 in the color scheme file using a prompt name as defined in the prompts
2347 file, for example, Prompt="security-scanner".
2348
2349 Prompts can be customized via the prompt edit command.
2350
2351 Each prompt is built following almost the same escape codes and rules
2352 used by the Bash prompt, except that it does not accept shell functions
2353 (like conditionals and loops). Command substitution (in the form
2354 $(cmd)), string literals, and escape codes can be used to build the
2355 prompt line and its colors. This is a list of supported escape codes:
2356
2357 \e: Escape character
2358
2359 \s: The name of the shell (everything after the last slash) currently
2360 used by clifm
2361
2362 \S: Current workspace number (or name, if named), colored according to
2363 wsN code in the InterfaceColors section in the color scheme file
2364
2365 \l: Print an 'L' if in light mode
2366
2367 \P: The current profile name
2368
2369 \u: The username
2370
2371 \H: The full hostname
2372
2373 \h: The hostname, up to the first ‘.’
2374
2375 \n: A newline character
2376
2377 \r: A carriage return
2378
2379 \a: A bell character
2380
2381 \d: The date, in abbreviated form (ex: “Tue May 26”)
2382
2383 \t: The time, in 24-hour HH:MM:SS format
2384
2385 \T: The time, in 12-hour HH:MM:SS format
2386
2387 \@: The time, in 12-hour am/pm format
2388
2389 \A: The time, in 24-hour HH:MM format
2390
2391 \w: The full current working directory, with $HOME abbreviated with a
2392 tilde
2393
2394 \W: The basename of $PWD, with $HOME abbreviated with a tilde
2395
2396 \p: A mix of the two above, it abbreviates the current working direc‐
2397 tory only if longer than PathMax (a value defined in the configuration
2398 file).
2399
2400 \z: Exit code of the last executed command (colored according to the xs
2401 (success) and xf (failure) codes in InterfaceColors in the color scheme
2402 file)
2403
2404 \$ '#', if the effective user ID is 0, and '$' otherwise
2405
2406 \nnn: The character whose ASCII code is the octal value nnn
2407
2408 \\: A literal backslash
2409
2410 \[: Begin a sequence of non-printing characters. This is mostly used to
2411 add color to the prompt line
2412
2413 \]: End a sequence of non-printing characters
2414
2415 The following files statistics escape codes are also recognized (not
2416 available in light mode):
2417
2418 \D: Amount of sub-directories in the current directory
2419
2420 \R: Amount of regular files in the current directory
2421
2422 \X: Amount of executable files in the current directory
2423
2424 \.: Amount of hidden files in the current directory
2425
2426 \U: Amount of SUID files in the current directory
2427
2428 \G: Amount of SGID files in the current directory
2429
2430 \F: Amount of FIFO/pipe files in the current directory
2431
2432 \K: Amount of socket files in the current directory
2433
2434 \B: Amount of block device files in the current directory
2435
2436 \C: Amount of character device files in the current directory
2437
2438 \x: Amount of files with capabilities in the current directory
2439
2440 \L: Amount of symbolic links in the current directory
2441
2442 \o: Amount of broken symbolic links in the current directory
2443
2444 \M: Amount of multi-link files in the current directory
2445
2446 \E: Amount of files with extended attributes in the current direc‐
2447 tory.TP
2448
2449 \O: Amount of other-writable files in the current directory
2450
2451 \": Amount of files with the sticky bit set in the current directory
2452
2453 \?: Amount of files of unknown file type in the current directory
2454
2455 \!: Amount of unstatable files in the current directory
2456
2457 Escape codes for prompt notifications (mostly used for custom prompts
2458 which need to handle notifications themselves, in which case Notifica‐
2459 tions should be set to false in the color scheme file to prevent auto‐
2460 matic insertion of notifications at the left of the prompt):
2461
2462 \*: '*' + amount of selected files
2463
2464 \%: 'T' + amount of trashed files
2465
2466 \#: 'R' if root user
2467
2468 \): 'W' + amount of warning messages
2469
2470 \(: 'E' + amount of error messages
2471
2472 \=: 'N' + amount of notice messages
2473
2474 Note: Except for '\#', nothing is printed if the number is zero.
2475
2476 By default, for example, clifm's prompt line is this:
2477
2478 "\[\e[0m\][\S\[\e[0m\]]\l \A \u:\H
2479 \[\e[00;36m\]\w\n\[\e[0m\]<\z\[\e[0m\]>\[\e[0;34m\] \$\[\e[0m\]
2480 "
2481
2482
2483 which once decoded should look something like this:
2484
2485 [1] 13:45 user:hostname /my/path
2486 <0> $
2487
2488 with the workspace number printed in blue, the path in cyan, the last
2489 exit status in green, and the dollar sign in blue.
2490
2491 A more "classic" prompt could be construed as follows:
2492
2493 "\u@\U \w> "
2494
2495 or, using now command substitution:
2496
2497 "$(whoami)@$(hostname) $(pwd)> "
2498
2499
2500 Advanced prompt customization
2501
2502 Besides commands substitution, which allows you to include in the
2503 prompt any information you like via shell scripts or simple shell com‐
2504 mands, the use of Unicode characters allows you to build colorful and
2505 modern prompts.
2506
2507 Inserting Unicode characters in the prompt can be made in two ways:
2508
2509 a) Pasting the character itself using a text editor
2510
2511 b) Entering the octal code corresponding to the character. Use hex‐
2512 dump(1) as follows to get the appropriate hex code:
2513
2514 echo -ne "[paste the char here]" | hexdump -c
2515
2516 The first line of the output will be something along these lines:
2517
2518 00000000 256 234 356 |...|
2519
2520 In this case, the octal code is: "256 234 356". So, to insert this Uni‐
2521 code character in the prompt, add it as follows:
2522
2523 Prompt="... \256\234\356 ..."
2524
2525 Note: Make sure you have installed a font able to display Unicode char‐
2526 acters.
2527
2528 A few advanced prompt examples can be found in the prompts file.
2529
2530 A simple use case for the files statistics escape codes
2531
2532 We all want to keep our systems safe. One of the many ways to get a bit
2533 of safety is by checking that there is not file in our file system that
2534 could somehow endanger our machines. SUID, SGID, executable, and other-
2535 writable files are to be count among these dangers. This is why it
2536 could be useful to build a little files scanner for our prompt using
2537 the above mentioned files statistics escape codes. This is the code for
2538 our scanner:
2539
2540 \[\e[0m\]\[\e[1;31m\]\U\[\e[0m\]:\[\e[1;33m\]\G\[\e[0m\]:
2541 \[\e[1;32m\]\O\[\e[0m\]:\[\e[1;34m\]\X\[\e[0m\]"
2542
2543 By adding this code to our prompt line, we get something like this:
2544
2545 24:2:-:2389
2546
2547 This tells us that in the current directory we have 24 SUID files
2548 (printed in bold red), 2 SGID files (bold yellow), no other-writable
2549 file, and 2389 executable files.
2550
2551 NOTE: A predefined prompt with this files scanner integrated can be
2552 found in the prompts.clifm file.
2553
2554 NOTE 2: Most of the information these escape codes rely on depends on
2555 stat(3). Now, since stat(3) is not used when running in light mode (for
2556 performance reasons), this information won't be available in light mode
2557 either.
2558
2559
2560 Prompt notifications
2561
2562 A bold red 'R' at the left of the prompt reminds the user that the pro‐
2563 gram is running as root. A bold green asterisk indicates that there are
2564 elements in the Selection Box. In the same way, a yellow 'T' means that
2565 there are currently files in the trash can, just as a bold blue 'S'
2566 means that the program is running in stealth mode. Finally, clifm makes
2567 use of three kind of messages: errors (a red 'E' at the left of the
2568 prompt), warnings (a yellow 'W'), and simple notices (a green 'N').
2569
2570 If Notifications is set to "false" in the prompts file, the above noti‐
2571 fications won't be printed by the prompt, but is still available to the
2572 user as escape codes (see above) and environment variables (see the EN‐
2573 VIRONMENT section below) to build custom prompts.
2574
2575 The Warning Prompt
2576
2577 The suggestions system includes a secondary, warning prompt, used to
2578 highlight wrong/invalid/non-existent command names. Once an invalid
2579 command is entered, the regular prompt will be switched to the warning
2580 prompt and the whole input line will turn dimmed red (though it can be
2581 customized to your liking).
2582
2583 The wrong command name check is omitted if the input string:
2584
2585 Is quoted (ex: "string" or 'string')
2586 Is bracketed (ex: (string), [string], or {string})
2587 It starts with a stream redirection character (ex: <string or
2588 >string)
2589 Is a comment (ex: #string)
2590 It starts with one or more spaces
2591 Is an assignment (ex: foo=var)
2592 It is escaped (ex: \string)
2593
2594 The warning prompt could be customized by means of the same rules used
2595 by the regular prompt. To use a custom warning prompt just modify the
2596 WarningPrompt line in the prompts file (via the prompt edit command).
2597 It defaults to
2598
2599 "\[\e[0m\]\[\e[00;02;31m\](!) > "
2600
2601 the last line of the regular prompt will become "(!) > ", printed in a
2602 dimmed red color, including the input string.
2603
2604 To change the color of the input text while in the warning prompt use
2605 the wp color code (see the COLOR CODES section above). It defaults to
2606 dimmed red, just as the warning prompt itself.
2607
2608 To disable this feature use the --no-warning-prompt command line switch
2609 or set the EnableWarningPrompt option to false in the prompts file.
2610
2611 NOTE: Bear in mind that the warning prompt depends on the suggestions
2612 system, so that it won't be available if this system is disabled.
2613
2614
2615 3. THE DIVIDING LINE
2616
2617 The line dividing the current list of files and the prompt. It could be
2618 customized via the DividingLine option in the color scheme file to fit
2619 your prompt design and/or color scheme.
2620
2621 DividingLine accepts one or more ASCII or Unicode characters (in both
2622 cases you only need to type/paste here the chosen character(s)). If
2623 only one character is specified (by default, "-"), it will be repeat‐
2624 edly printed to fulfill the current line up to the right edge of the
2625 screen or terminal window. If you don't want to cover the whole line,
2626 just specify three or more characters, in which case only these charac‐
2627 ters (and no more) will be used as dividing line. For example:
2628 "------->". To use an empty line, set DividingLineChar to "0" (that is,
2629 as a character, not as a number). Finally, is this value is not set, a
2630 special line drawn with box-drawing characters will be used (box-draw‐
2631 ing characters are not supported by all terminal-emulators).
2632
2633 The color of this line is set via the dl color code in the color scheme
2634 file. Consult the COLOR CODE section above for more information.
2635
2636 4. FZF WINDOW
2637 Refer to the TAB completion section below.
2638
2639
2640
2641 9. BUILT-IN EXPANSIONS
2642
2643 The SEL keyword
2644
2645 clifm will automatically expand the 'sel' keyword: 'sel' indeed amounts
2646 to 'file1 file2 file3 ...' In this way, you can use the 'sel' keyword
2647 with any command.
2648
2649 If you want to set the executable bit on several files, for instance,
2650 simply select the files you want and then run this command: 'chmod +x
2651 sel'. Or, if you want to copy or move several files into some direc‐
2652 tory: 'cp sel 12', or 'mv sel 12' (provided the ELN 12 corresponds to a
2653 directory), respectively.
2654
2655 If the destiny directory is omitted, selected files are copied into the
2656 current working directory, that is to say, 'mv sel' amounts to 'mv sel
2657 .'.
2658
2659 To trash or remove selected files, simply run 'tr sel' or 'rm sel' re‐
2660 spectively. The same goes for wildcards and braces: 'chmod +x *', for
2661 example, will set the executable bit on all files (excluding hidden
2662 files) in the current working directory, while 'chmod +x file{1,2,3}'
2663 will do it for file1, file2, and file3 respectively.
2664
2665 If using the FZF mode for TAB completion (see below), you can operate
2666 only on some selected files as follows: type 'CMD sel' and, without ap‐
2667 pending any space char, press TAB: the list of selected files will be
2668 displayed. Choose one or more of them (use TAB to mark entries) to op‐
2669 erate only on those specific files. For example, to print the file
2670 properties of some specific selected files: p sel->TAB, select the
2671 files you want via TAB, press Enter or Right (marked files will be in‐
2672 serted in the command line), and the press Enter, as usual.
2673
2674 TAB completion
2675
2676 There are four modes for TAB completion: standard (interface provided
2677 by readline), fzf, which depends on FZF (https://github.com/june‐
2678 gunn/fzf) (version 0.18.0 or later), fzy (https://github.com/leo-
2679 arch/fzy), and smenu (https://github.com/p-gen/smenu). By default, if
2680 the fzf binary is found in PATH, clifm will attempt to use fzf to dis‐
2681 play completions. You can force the use of the remaining modes via the
2682 --std-tab-comp, --fzytab, and --smenutab command line switches. The
2683 TabCompletionMode option in the configuration file can be used to per‐
2684 manently set the TAB completion mode.
2685
2686 If using the fzf mode, the completions interface can be customized us‐
2687 ing the FzfTabOptions option in the color scheme file. --height, --mar‐
2688 gin, +i/-i, --read0, --query, and --ansi will be appended to set up
2689 some details of the completions interface. Set this value to none to
2690 pass no option, to the empty string to load the default values, or to
2691 any other custom value. Unless set to none, any option specified here
2692 will override FZF_DEFAULT_OPTS.
2693
2694 Default values for this option are:
2695 --color=16,prompt:6,fg+:-1,pointer:4,hl:5,hl+:5,gut‐
2696 ter:-1,marker:2 --bind tab:accept,right:accept,left:abort --in‐
2697 line-info --layout=reverse-list
2698
2699 Consult fzf(1) for more information.
2700
2701 If set neither in FzfTabOptions nor in FZF_DEFAULT_OPTS (in this or‐
2702 der), the height of the FZF window is set to the default value: 40% of
2703 the current terminal amount of line/rows.
2704
2705 To use FZF global values (defined in FZF_DEFAULT_OPTS), just set
2706 FzfTabOptions to none.
2707
2708 If using the smenu mode, the interface can be customized using the
2709 CLIFM_SMENU_OPTIONS environment variable. For example:
2710
2711 export CLIFM_SMENU_OPTIONS="-a t:2,b b:4 c:r ct:2,r sf:6,r
2712 st:5,r mt:5,b"
2713
2714 Consult smenu(1) for more information.
2715
2716 For information about how to customize fzy consult fzy(1).
2717
2718 clifm can perform fuzzy TAB completion (just as suggestions, if en‐
2719 abled) for file names and paths (e.g. 'dwn<TAB>' is completed as 'Down‐
2720 loads'). To enable this feature use the --fuzzy-match command line
2721 switch.
2722
2723 Besides the default TAB completion for command names and paths, you can
2724 also expand ELN's using the TAB key. Example: type 'o 12', press TAB,
2725 and it becomes 'o filename ', or, if 12 refers to a directory, 'o
2726 dir/'. clifm uses a Bash-style quoting system, so that this file name:
2727 "this is a test@version{1}" is expanded as follows: this\ is\ a\
2728 test\@version\{1\}
2729
2730 ELN's and ELN ranges will be also automatically expanded, provided the
2731 corresponding ELN's actually exist, that is to say, provided some file
2732 name is listed on the screen under those numbers. For example: 'diff 1
2733 118' will only expand '1', but not '118', if there is no ELN 118. In
2734 the same way, the range 1-118 will only be expanded provided there are
2735 118 or more elements listed on the screen.
2736
2737 Since ranges could be a bit tricky, TAB completion is available to make
2738 sure this range actually includes the desired file names.
2739
2740 If this feature somehow conflicts with the command you want to run,
2741 say, 'chmod 644 ...', because the current amount of files is equal or
2742 larger than 644 (in which case clifm will expand that number), then you
2743 can simply run the command as external: ';chmod 644 ...'
2744
2745 TAB completion for commands, paths, users home directory, workspaces,
2746 wildcards*, file types*, environment variables, bookmarks, profiles,
2747 color schemes, file tags, search patterns, commands history, directory
2748 history (via the jump command), remote resources, sort methods,
2749 ranges*, the 'sel' keyword*, trashed files*, plus the deselect* and the
2750 open-with commands (ow) is also available. To make use of the bookmarks
2751 completion, make sure to specify some name for your bookmarks, since
2752 these names are used by the completion function.
2753
2754 * When using FZF mode for TAB completion, multi-selection is available:
2755 Press TAB to expand possible selections, then press TAB again to mark
2756 desired entries. Once desired entries are marked, press Enter or the
2757 Right arrow key: marked entries will be inserted into the command line.
2758 Multi-selection is also available for the following commands, provided
2759 there is no slash in the query string: ac, ad, bb, br, d/dup,
2760 p/pr/prop, r, s, t/tr/trash, and te.
2761
2762 Of course, combinations of all these features is also possible. Exam‐
2763 ple: 'cp sel file* 2 23-31 .' will copy all selected files, plus all
2764 files whose name starts with "file", plus those files corresponding to
2765 the ELN's 2, and 23 to 31, into the current working directory.
2766
2767 In addition to completions and expansions, an auto-suggestions system
2768 is also available. See the AUTO-SUGGESTIONS section below.
2769
2770
2772 As clifm's built-in resource opener, Lira takes care of opening files
2773 when no opening application has been specified in the command line. It
2774 does this by automatically parsing a MIME list file (see the FILES sec‐
2775 tion below): it looks first for a matching pattern (either a MIME type
2776 or a file name), then checks the existence of the command associated to
2777 this pattern, and finally executes it.
2778
2779 Lira is controlled via the mime command. File associations are stored
2780 in the MIME list file.
2781
2782 When running for the first time, or whenever the MIME list file cannot
2783 be found, clifm will copy the MIME definitions file from the DATADIR
2784 directory (usually /usr/share/clifm/mimelist.clifm) to the local con‐
2785 figuration directory.
2786
2787 Lira will check the file line by line, and if a matching line is found,
2788 and if at least one of the specified applications exists, this applica‐
2789 tion will be used to open the corresponding associated file. Else, the
2790 next line will be checked. In other words, the precedence order is top
2791 to bottom (for lines) and left to right (for applications).
2792
2793 NOTE: In case of directories (whose MIME type is inode/directory), the
2794 entry will be used only for the open-with command (ow).
2795
2796 This MIME list file follows a few simple syntax rules:
2797
2798 Each line in the MIME list file consists of:
2799
2800 a) 'X' or '!X' to specify GUI and non-GUI environments respectively;
2801
2802 b) 'N' to instruct Lira to match a file name instead of a MIME type;
2803
2804 c) A left value, containing either a file name or a MIME type to be
2805 matched. Regular expressions are supported;
2806
2807 d) A right value, a list of semicolon separated commands (and option‐
2808 ally the commands parameters) to be associated to the corresponding
2809 left value;
2810
2811 Note that the syntax departs here from the Freedesktop specification in
2812 that we do not rely on desktop files (mostly used by desktop environ‐
2813 ments), but rather on commands and parameters. In general thus, the
2814 syntax is this:
2815
2816 [!]X[:N]:REGEX=CMD [ARGS] [%f];CMD [ARGS] [%f]; ...
2817
2818 Use the %f placeholder to specify the position of the file name to be
2819 opened in the command. For example, 'mpv %f --terminal=no' will be
2820 translated into 'mpv FILE --terminal=no'. If the placeholder is not
2821 specified, the file name will be appended to command string. Thus,
2822 this: 'mpv --terminal=no' amounts to this: 'mpv --terminal=no FILE'.
2823
2824 Running the opening application in the background:
2825
2826 For GUI applications:
2827
2828 APP %f &>/dev/null &
2829
2830 For terminal applications:
2831
2832 TERM -e APP %f &>/dev/null &
2833
2834 Replace 'TERM' and 'APP' by the corresponding values. The -e option
2835 might vary depending on the terminal emulator used (TERM).
2836
2837 NOTE: In case of archives, the built-in ad command could be used as
2838 opening application.
2839
2840 NOTE 2: Environment variables (e.g. $EDITOR, $VISUAL, $BROWSER, and
2841 even $PAGER) are also recognized by Lira. You can even set custom envi‐
2842 ronment variables to be used exclusively by clifm. For example, you can
2843 set CLIFM_TERM, CLIFM_EDITOR, and CLIFM_PDF, and then use them to de‐
2844 fine some associations:
2845
2846 X:text/plain=$CLIFM_TERM -e $CLIFM_EDITOR %f &
2847 X:N:.*\.pdf$=$CLIFM_PDF %f &
2848
2849 Examples:
2850
2851 Match a full file name:
2852
2853 X:N:some_filename:leafpad;mousepad;kate;gedit
2854
2855 Note: the 'N' character indicates that this rule is intended to match a
2856 file name instead of a MIME type, just as 'X' means that this rule is
2857 aimed to graphical environments and '!X' that it is aimed rather to
2858 non-graphical environments.
2859
2860 Note 2: If the file name contains a dot, quote it like this: some_file‐
2861 name.ext (to prevent the REGEX parser from interpreting the dot)
2862
2863 Match multiple file names (starting with 'str'):
2864
2865 X:N:^str.*:leafpad;mousepad;kate;gedit
2866
2867 Match a single extension:
2868
2869 X:N:.*\.txt$:leafpad;mousepad;kate;gedit
2870 !X:N:.*\.^txt$:nano;vim;vi;emacs
2871
2872 Match multiple extensions:
2873
2874 X:N:.*\.(sh|c|py|pl)$:geany;leafpad;nano
2875
2876 Match single mimetype:
2877
2878 X:^audio/mp3$=mpv %f --terminal=no;ffplay -nodisp -au‐
2879 toexit;mpv;mplayer
2880
2881 Match mutiple mimetypes:
2882
2883 X:^audio/.*=mplayer;mplayer2;vlc;gmplayer;smplayer;totem
2884
2885 In case of MIME types, you can also write the entire expression without
2886 relying on any regular expression. For example:
2887
2888 !X:text/plain=$TERM -e $EDITOR %f &>/dev/null &
2889
2890 For more information take a look at the mimelist file itself (F6 or mm
2891 edit).
2892
2893 Using clifm as a standalone resource opener
2894
2895 Thought clifm is a file manager, it can be used as a simple resource
2896 opener via the --open command line option. For example:
2897
2898 clifm --open /path/to/my_file.jpg
2899 clifm --open /path/to/my_dir
2900 clifm --open https://some_domain
2901
2902 NOTE: When opening web resources clifm will query the mimelist file us‐
2903 ing text/html as MIME type. Whatever association it finds for this spe‐
2904 cific MIME type will be used to open the web resource.
2905
2906 Positional parameters could be used as well, provided the parameter
2907 does not point to a directory name, in which case it will be used as
2908 clifm starting path. For instance:
2909
2910 clifm /path/to/my_file.jpg
2911 clifm https://some_domain
2912
2913
2915 Gemini is a built-in suggestions system (similar to that provided by
2916 the Fish shell). As you type, Gemini will suggest possible completions
2917 right after the current cursor position.
2918
2919 The following checks are availabe (the order can be customized, see be‐
2920 low):
2921
2922 a. ELN's
2923
2924 b. clifm commands and parameters (including the sel keyword)
2925
2926 c. Entries in the command history list (already used commands)
2927
2928 d. File names in the current working directory
2929
2930 e. Entries in the jump database
2931
2932 f. Aliases names
2933
2934 g. Bookmarks names
2935
2936 h. Program names in PATH
2937
2938 i. Shell builtins
2939
2940 NOTE: The shell name is taken from /bin/sh. The following shell are
2941 supported: bash, dash, fish, ksh, tcsh, and zsh. Command names are
2942 checked in the following order: clifm internal commands, commands in
2943 PATH, and shell builtins.
2944
2945 To accept the entire suggestion, just press Right or Ctrl-f: the cursor
2946 will move to the end of the suggested command and the suggestion color
2947 will change to that of the typed text; next, you can press Enter to ex‐
2948 ecute the command as usual. Otherwise, if the suggestion is not ac‐
2949 cepted, it will be simply ignored and you can continue editing the cur‐
2950 rent command line however you want.
2951
2952 To aceppt the first suggested word only (up to first slash or space),
2953 press rather Alt-Right or Alt-f. Not available for ELN's, aliases and
2954 bookmarks names.
2955
2956 Bear in mind that suggestions for ELN's, aliases and bookmarks names,
2957 and the jump function (invoked by the j command) do not work as the re‐
2958 maining suggestions: they do not suggest possible completions for the
2959 current input, but rather the value pointed to by it. For example, if
2960 you type "12" and the current list of files includes a file name whose
2961 ELN is '12', the file name corresponding to this ELN will be printed
2962 next to "12" as follows: 12_ > filename (where the underscore is the
2963 current cursor position). Press 'Right' or 'Ctrl-f' to accept the sug‐
2964 gestion, in which case the text typed so far will be replaced by the
2965 suggestion.
2966
2967 The order of the suggestion checks could be customized via the Sugges‐
2968 tionStrategy option in the configuration file. Each check is assigned a
2969 lowercase letter:
2970
2971 a = Aliases names
2972 b = Bookmark names
2973 c = Possible completions
2974 e = ELN's
2975 f = Files in the current directory
2976 h = Entries in the commands history
2977 j = Entries in the jump database
2978
2979 The value taken by SuggestionStrategy is a string of seven(7) charac‐
2980 ters containing the above letters. The letters order in this string
2981 specifies the order in which the suggestion checks will be performed.
2982 For example, to perform all checks in the same order above, the value
2983 of the string should be abcefhj (without quotes). Or, if you prefer to
2984 run the history check first: habcefj. Finally, you can ignore one or
2985 more checks using a dash (-). So, to ignore the bookmarks and aliases
2986 checks, set SuggestionStrategy to h--cefj. The default value for this
2987 option is ehfjbac.
2988
2989 Note: The check for program names in PATH is always executed at last,
2990 except when the ExternalCommands option is disabled, in which case sug‐
2991 gestions for them are simply not displayed.
2992
2993 Suggestions will be printed using one of the following color codes (see
2994 the COLOR CODES section above):
2995
2996 sf: Used for file and directory names. This includes suggestions for
2997 ELN's, bookmarks names, files in the current directory, and possible
2998 completions. Default value: 02;04;36 (dimmed underlined cyan)
2999
3000 sh: Used for entries in the commands history. Default value: 02;35
3001 (dimmed magenta)
3002
3003 sc: Used for aliases and program names in PATH. Default value: 02;31
3004 (dimmed red)
3005
3006 sx: Used for clifm internal commands and parameters. Default value:
3007 02;32 (dimmed green)
3008
3009 sp: Greater-than sign (>) used when suggesting ELN's, bookmarks, and
3010 aliases names. Default value: 02;31 (dimmed red)
3011
3012 You can set SuggestFiletypeColor to "true" in the configuration file to
3013 use the color of the file type of the current file name (as set in the
3014 color scheme file) instead of the value of sf. For example, if a sug‐
3015 gestion is printed for a file that is a symbolic link, ln or or (if a
3016 broken link) will be used instead of sf.
3017
3018 Note: Suggestions are disabled for the FreeBSD and the NetBSD default
3019 consoles. Take a look at the Wiki for more information.
3020
3021
3023 clifm includes a few shell functions to perform specific actions (cd-
3024 on-quit, file-picker, and subshell-notice). Take a look at the corre‐
3025 sponding files, in /usr/share/clifm/functions, and follow the instruc‐
3026 tions. Needles to say, you can write your own functions.
3027
3028
3030 Plugins are just scripts or programs (written in any language) aimed to
3031 add, extend or improve CliFM's functionalities. They are linked to ac‐
3032 tions names defined in a dedicated configuration file (XDG_CON‐
3033 FIG_HOME/clifm/profiles/PROFILE/actions.clifm): entering the action
3034 name immediately executes the corresponding plugin.
3035
3036 Note: In stealth mode, since access to configuration files is not al‐
3037 lowed, plugins are disabled.
3038
3039 Though several plugins are provided at installation time (in the plug‐
3040 ins directory), you can write your owns as you like, with any language
3041 you like, and for whatever goal you want. Writing plugins is generally
3042 quite easy; but your mileage may vary depending on what you are trying
3043 to achieve. A good place to start is examining the provide plugins and
3044 reading the actions command description, and the ENVIRONMENT and FILES
3045 sections below.
3046
3047 A convenient helper script is provided to get a consistent look across
3048 all plugins, specially those running FZF. This helper script is located
3049 in DATADIR/clifm/plugins/plugins-helper, but it will be overridden by
3050 XDG_CONFIG_HOME/clifm/plugins/plugins-helper if found. The location of
3051 this file is set by clifm itself in the CLIFM_PLUGINS_HELPER environ‐
3052 ment variable to be used by plugins. Source the file and use any of the
3053 functions and variables provided by it to write a new FZF plugin:
3054
3055 # Source our plugins helper
3056 if [ -z "$CLIFM_PLUGINS_HELPER" ] || ! [ -f "$CLIFM_PLUGINS_HELPER"
3057 ]; then
3058 printf "clifm: Unable to find plugins-helper file\n" >&2
3059 exit 1
3060 fi
3061 # shellcheck source=/dev/null
3062 . "$CLIFM_PLUGINS_HELPER"
3063
3064 Plugins can talk to CliFM via a dedicated pipe created for this purpose
3065 and exposed via an environment variable (CLIFM_BUS). Just write to the
3066 pipe and clifm will hear and handle the message immediately after the
3067 plugin's execution. If the message is a path, clifm will run the open
3068 function, changing the current directory to the new path, if a direc‐
3069 tory, or opening it with the resource opener, if a file. Otherwise, if
3070 the message is not a path, it will be taken and executed as a command.
3071 Examples:
3072
3073 ´echo "/tmp" > "$CLIFM_BUS"´ tells clifm to change the current di‐
3074 rectory to /tmp
3075
3076 ´echo "s *.png" > "$CLIFM_BUS"´ makes clifm select all files in the
3077 current directory ending with ".png"
3078
3079 The pipe (CLIFM_BUS) is deleted immediately after the execution of its
3080 content and recreated before running any other plugin.
3081
3082 This is a list of available plugins:
3083
3084 ┌────────────┬──────────────────────────────────────────┬─────────────────────┬────────────────────────────────────────────────────────────┐
3085 │Action name │ Description │ Plugin │ Dependencies │
3086 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3087 │bn │ Create files in batch │ batch_create.sh │ - │
3088 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3089 │bcp │ Copy files in batch │ batch_copy.sh │ - │
3090 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3091 │bi │ Import bookmarks │ bm_import.sh │ - │
3092 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3093 │clip │ Interact with the primary clipboard │ clip.sh │ xlip │
3094 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3095 │ │ Test you terminal colors capability │ colors.sh │ - │
3096 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3097 │cr │ Copy files to remote location │ cprm.sh │ fzf, and scp, ffsend, or croc │
3098 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3099 │da │ Disk usage analyzer │ disk_analyzer.sh │ du, fzf │
3100 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3101 │dr │ Drag and drop files │ dragondrop.sh │ dragon or dragon-drag-and-drop │
3102 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3103 │fdups │ Find and remove file duplicates │ fdups.sh │ find, md5sum, sort, uniq, xargs, sed, stat │
3104 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3105 │+ │ Find files in the current directory │ finder.sh │ fzf or rofi │
3106 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3107 │_ (under‐ │ Quickly change directory │ fzcd.sh │ fzf │
3108 │score) │ │ │ │
3109 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3110 │dh │ Browse the directory history │ fzfdirhist.sh │ fzf │
3111 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3112 │h │ Browse the commands history │ fzfhist.h │ fzf │
3113 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3114 │- (yes, │ Navigate/select/preview files │ fzfnav.sh/BFG.sh │ See the section below │
3115 │just a │ │ │ │
3116 │dash) │ │ │ │
3117 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3118 │* │ Select files │ fzfsel.sh │ fzf │
3119 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3120 │** │ Deselect files │ fzfdesel.sh │ fzf │
3121 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3122 │ │ Show git repo status │ git.sh │ git │
3123 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3124 │ih │ Browse clifm's manpage │ ihelp.sh │ fzf │
3125 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3126 │i │ Image thumbnails previewer │ img_viewer.sh │ sxiv, feh or lsix │
3127 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3128 │++ │ Jump to a directory in the jump database │ jumper.sh │ fzf or rofi │
3129 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3130 │kbgen │ Get escape codes for keybindings │ kbgen.c │ Needs to be compiled first (gcc -o kbgen kbgen.c -lcurses) │
3131 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3132 │kd │ Decrypt a GnuPG encrypted file │ decrypt.sh │ gpg, tar, sed, grep │
3133 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3134 │ke │ Encrypt files/dirs using GnuPG │ encrypt.sh │ gpg, tar, sed, fzf, awk, xargs │
3135 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3136 │ml │ List files by a given MIME type │ mime_list.sh │ fzf, file │
3137 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3138 │music │ Create a music playlist │ music_player.sh │ mplayer │
3139 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3140 │gg │ Pipe files in CWD through a pager │ pager.sh │ less, column │
3141 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3142 │ptot │ Preview PDF files as text │ pdf_viewer.sh │ pdftotext │
3143 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3144 │rrm │ Recursively remove files │ recur_rm.sh │ find, fzf │
3145 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3146 │// │ Search files by content │ rgfind.sh │ fzf, ripgrep │
3147 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3148 │ │ Update plugins │ update.sh │ - │
3149 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3150 │vid │ Preview video files thumbnails │ vid_viewer.sh │ ffmpegthumbnailer │
3151 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3152 │vt │ Virtual directory for sets of files │ virtualize.sh │ sed │
3153 ├────────────┼──────────────────────────────────────────┼─────────────────────┼────────────────────────────────────────────────────────────┤
3154 │wall │ Set image as wallpaper │ wallpaper_setter.sh │ feh, xloadimage, or hsetroot │
3155 └────────────┴──────────────────────────────────────────┴─────────────────────┴────────────────────────────────────────────────────────────┘
3156
3157 Dependencies of the previewer plugin (fzfnav.sh)
3158
3159 archives: atool, bsdtar, or tar
3160 images: kitty terminal, imagemagick, and ueberzug or viu or catimg or
3161 img2txt or pixterm
3162 fonts: fontpreview or fontforge
3163 docs: libreoffice, catdoc, odt2txt, pandoc
3164 PDF: pdftoppm, pdftotext or mutool
3165 epub: epub-thumbnailer
3166 DjVu: djvulibre or djvutxt
3167 postscript: ghostscript
3168 videos: ffmpegthumbnailer
3169 audio: ffmpeg, mplayer, or mpv
3170 web: w3m, links, elinks, or pandoc
3171 markdown: glow
3172 highlight: bat, highlight, or pygmentize
3173 torrent: transmission-cli
3174 json: python or pq
3175 file info: exiftool, mediainfo, or file
3176
3177
3178 To run the pager.sh plugin, for example, you only need to enter the
3179 corresponding action name, in this case gg. In case of need, all plug‐
3180 ins provide a -h,--help switch for a brief usage description.
3181
3182 Note: The fzfnav plugin uses fzf(1) to navigate the file system and BFG
3183 (a script located in the plugins directory) to show previews (to show
3184 files preview BFG requires ueberzug to be installed or the Kitty proto‐
3185 col via the Kitty terminal). A configuration file (BFG.cfg, in the
3186 plugins directory itlsef) is provided to customize the previewer's be‐
3187 havior.
3188
3189 In addition to the built-in BFG previewer, fzfnav supports the use of
3190 both Ranger's scope.sh script and pistol. To use scope, just edit the
3191 BFG configuration file and set USE_SCOPE to 1 and SCOPE_FILE to the
3192 correct path to the scope.sh file (normally $HOME/.con‐
3193 fig/ranger/scope.sh). To use pistol instead, set USE_PISTOL to 1.
3194
3195 Note 2: The git_status plugin is not intended to be used as a normal
3196 plugin, that is, executed via an action name, but rather to be executed
3197 as a prompt command:
3198
3199 promptcmd /usr/share/clifm/plugins/git_status.sh
3200
3201 Whereas this plugin provides basic Git integration, it could be easily
3202 modified (it is just a few lines long) to include whatever git function
3203 you might need.
3204
3205 Take a look at the Wiki for more information:
3206 https://github.com/clifm/wiki/Advanced#plugins
3207
3208
3210 Heavily inspired by Vifm, the autocommands function allows the user a
3211 fine-grained control over clifm settings. It is mostly devised as a way
3212 to improve performance for remote file systems (usually slower than lo‐
3213 cal ones) by allowing you to turn off some features (like the files
3214 counter) that might greatly affect performance under some circumstances
3215 (like remote connections). However, this function is not restricted to
3216 this use: use it for whatever purpose you find useful.
3217
3218 Add a line preceded by the autocmd keyword to the config file. The gen‐
3219 eral syntax is: autocmd PATTERN cmd,cmd,cmd
3220
3221 PATTERN is a glob expression to match directory names. If no glob
3222 metacharacter is provided, the string will be compared as is to the
3223 current working directory. To invert the meaning of a pattern, prepend
3224 an exclamation mark: !PATTERN
3225
3226 PATTERN is followed by a comma separated list of commands:
3227
3228 !CMD: The exclamation mark allows you to run shell commands, custom bi‐
3229 naries or scripts
3230
3231 The following codes are used to control clifm's files list:
3232
3233 Code Description Example
3234 cs Color scheme cs=zenburn
3235 fc Files counter fc=0
3236 hf Hidden files hf=0
3237 lm Light mode lm=1
3238 lv Long/detail view lv=0
3239 mf Max files mf=100
3240 mn Max file name length mn=20
3241 od Only directories od=1
3242 pg Pager pg=0
3243 st Sort method st=5
3244 sr Reverse sort sr=1
3245
3246 A few example lines:
3247
3248 1. Run in light mode and disable the files counter for the remotes di‐
3249 rectory:
3250 autocmd /media/remotes/** lm=1,fc=0
3251
3252 2. Just a friendly reminder:
3253 autcomd ~/important !printf "Important: keep your fingers outta
3254 here!\n" && read -n1
3255
3256 3. This directory has thousands of files. Show only the first hundred
3257 and enable the pager:
3258 autocmd /usr/bin mf=100,pg=1
3259
3260 4. Lots of media files (with large file names). Trim file names to 20
3261 chars max and run the files previewer:
3262 autocmd ~/Downloads mn=20,!~/.config/clifm/plugins/fzfnav.sh
3263
3264 5. Mmm, just because I can. Be creative!
3265 autocmd /home/user hf=0,cs=nord,lv=1
3266 autocmd / lv=1,fc=0,cs=solarized,st=5
3267
3268
3269 The first example is the recommended configuration for directories con‐
3270 taining remote file systems
3271
3272 As seen in the fifth example, plugins could be used here as well: in
3273 this case, we want to run fzfnav (to make use of the files preview ca‐
3274 pability) whenever we enter into the Downloads directory, usually con‐
3275 taining videos, music, and images.
3276
3277 NOTE: If you decide to use a plugin, bear in mind that it won't be able
3278 to communicate with clifm, because autocommands always executes com‐
3279 mands as external applications using the system shell.
3280
3281 Autocommand files: .cfm.in and .cfm.out
3282
3283 Two files are specifically checked by the autocommands function:
3284 .cfm.in and .cfm.out.
3285
3286 The content of these files is a single instruction, either a shell com‐
3287 mand or, if you need more elaborated stuff, a script (or custom bi‐
3288 nary). Note that codes to modify clifm's settings (as described above)
3289 are not available here.
3290
3291 If a directory contains a file named .cfm.in, clifm will execute (via
3292 the system shell) its content when entering this directory (before
3293 listing files). If the file is named rather .cfm.out, its content will
3294 be executed immediately after leaving this directory (and before list‐
3295 ing the new directory's content).
3296
3297 For example, if you want a simple notification whenever you enter or
3298 leave your home directory, just create both .cfm.in and .cfm.out files
3299 in the home directory with the following content:
3300
3301 For .cfm.in:
3302 printf "Entering %s ...\n" "$PWD"
3303
3304 For .cfm.out:
3305 printf "Leaving %s ...\n" "$OLDPWD"
3306
3307
3309 Etiqueta is clifm's built-in files tagging system
3310
3311 1. How Etiqueta works?
3312
3313 File tags are created via symlinks using an specific directory under
3314 the user's profile: ${XDG_CONFIG_DIR:-/home/USER/.config}/clifm/pro‐
3315 files/USER/tags
3316
3317 Every time a new tag is created, a new directory named as the tag it‐
3318 self is created in the tags directory. Tagged files are just symbolic
3319 links to the actual files created in the appropriate directory. For ex‐
3320 ample, if you tag ~/myfile.txt as work, a symbolic link to ~/my‐
3321 file.txt, named myfile.txt will be created in tags/work.
3322
3323 2. Handling file tags
3324
3325 tag is the main Etiqueta command and is used to handle file tags. Its
3326 syntax is as follows:
3327
3328 tag [ls, list] [new] [rm, remove] [mv, rename] [untag] [merge]
3329 [FILE]... [[:]TAG]
3330
3331 NOTE: the :TAG notation is used for commands taking both file and tag
3332 names: 'tag FILES(s) :TAG ...', to tag files, and 'tag untag :TAG file1
3333 file2', to untag files. Otherwise, TAG is used (without the leading
3334 colon). For example: 'tag new docs', to create a new tag named docs, or
3335 'tag remove png', to delete the tag named png.
3336
3337 The following command shortcuts are available:
3338 ta Tag files
3339 td Delete tag(s)
3340 tl List tags or tagged files
3341 tm Rename (mv) tag
3342 tn Create new tag(s)
3343 tu Untag file(s)
3344 ty Merge two tags
3345
3346 3. Usage examples
3347
3348 - List available tags:
3349
3350 tl
3351
3352 - Tag all .PNG files in the current directory as both images and png:
3353
3354 ta *.png :images :png
3355
3356 NOTE: Tags are created if they do not exist
3357
3358 - Tag all selected files as special:
3359
3360 ta sel :special
3361
3362 - List all files tagged as work and all files tagged as documents:
3363
3364 tl work documents
3365
3366 - Rename the tag documents as docs:
3367
3368 tm documents docs
3369
3370 - Merge the tag png into images:
3371
3372 ty png images
3373
3374 NOTE: All files tagged as png will be now tagged as images, and the png
3375 tag will be removed.
3376
3377 - Remove the tag images (untag all files tagged as images):
3378
3379 td images
3380
3381 - Untag a few files from the work:
3382
3383 tu :work file1 image.png dir2
3384
3385 NOTE: TAB completion is available to complete tagged files. If using
3386 the FZF mode, multi-selection is also available via the TAB key.
3387
3388 4. Operating on tagged files
3389
3390 The t:TAG construct (or tag expression) is used to operate on tagged
3391 files via any command, be it internal or external. A few examples:
3392
3393 - Print the file properties of all files tagged as docs:
3394
3395 p t:docs
3396
3397 NOTE: TAB completion is available to expand tag expressions into one or
3398 more of the corresponding tagged files. If using the FZF mode, multi-
3399 selection is also available via the TAB key.
3400
3401 - Remove all files tagged as images:
3402
3403 r t:images
3404
3405 - Run stat(1) over all files tagged as work and all files tagged as
3406 docs:
3407
3408 stat t:work t:docs
3409
3410 4.1 Operating on specific tagged files
3411
3412 NOTE: This feature, as always when multi-selection is involved, is only
3413 available when TAB completion mode is set to FZF. See the TAB comple‐
3414 tion subsection of the BUILT-IN-EXPANSIONS section above.
3415
3416 You might not want to operate on all files tagged as some specific tag,
3417 say work, but rather on some files tagged as work. TAB completion is
3418 used to achieve this aim.
3419
3420 Let's suppose you have a tag named work which contains ten tagged
3421 files, but you need to operate (say, print the file properties) only on
3422 two of them, say, work1.odt and work2.odt:
3423
3424 p t:work<TAB>
3425
3426 The list of files tagged as work will be displayed via FZF. Now just
3427 mark the two files you need using TAB, press Enter or Right, and the
3428 full path to both files will be inserted into the command line. So, 'p
3429 t:work' will be replaced by 'p /path/to/work1.odt /path/to/work2.odt'.
3430
3431
3433 CliFM is able to read and list files from the standard input stream
3434 (STDIN). Each file in the list should be an absolute path, terminated
3435 with a new line character (\n) and stripped from extra characters not
3436 belonging to the path itself. The size of the input stream buffer is
3437 262MiB (65536 paths, provided each path takes PATH_MAX bytes (4096 by
3438 default)).
3439
3440 Each file passed via standard input is stored as a symbolic link point‐
3441 ing to the original file in a temporary directory (called here virtual
3442 directory) with read-only (0500) permissions. This directory, and all
3443 its contents, will be deleted at program exit. Use the --virtual-dir
3444 command line flag to specify a custom directory (it if does not exist,
3445 it will be created) instead of the default one, created in the system
3446 temporary directory (usually /tmp/clifm/USER/vdir.XXXXXX, where XXXXXX
3447 is a random six digits string).
3448
3449 The user can operate on these files as if they were any other regular
3450 file, since all operations performed on these symbolic links (provided
3451 the current working directory is the virtual directory where all these
3452 files are stored) are performed on the target files and NOT on the sym‐
3453 bolic links themselves.
3454
3455 Once in the virtual directory, files are listed by default using only
3456 the base name of the target file. For example, if the target file is
3457 /home/user/Downloads/myfile.tar.gz, this file will be listed as my‐
3458 file.tar.gz. If this file already exists in the virtual directory (be‐
3459 cause there is another target file with the same base name, say,
3460 /home/user/Documents/tars/myfile.tar.gz), a random six digits suffix
3461 will be appended to the file (for instance, myfile.tar.gz.12Rgj6).
3462
3463 Since this listing mode does not allow the user to get a clear idea of
3464 the actual location of each listed file, a keybinding (by default Alt-
3465 w) is available to toggle short (base names only) and long file names:
3466 in this latter case, file names are listed using the full path to the
3467 target file, replacing slashes by colons (:). For example, if the tar‐
3468 get file is /home/user/Downloads/myfile.tar.gz, it will be listed in
3469 the virtual directory as home:user:Downloads:myfile.tar.gz.
3470
3471 If you prefer the long names approach, you can use the --virtual-dir-
3472 full-paths command line flag.
3473
3474 Note: Bear in mind that the restore last path function is disabled when
3475 listing in this way.
3476
3477 CliFM provides to ways of using virtual directories:
3478
3479 1. Reading files from the standard input
3480
3481 2. Listing sets of files via the virtualize.sh plugin (which is in fact
3482 a special use case of point 1)
3483
3484 1. Standard input
3485
3486 Examples:
3487
3488 ls -Ad /var/* | clifm
3489
3490 This command will pass all files in the directory /var to CliFM
3491
3492 If you need to perform more specific queries, you can use find(1) as
3493 follows:
3494
3495 find -maxdepth 1 -size +500k -print0 | tr ' ' '0 | sed 's/.//g' | clifm
3496
3497 The above command will pass all files in the current directory bigger
3498 than 500KiB to CliFM.
3499
3500 You can also use stream redirection:
3501
3502 ls -Ad $PWD/* > list.txt
3503 clifm < list.txt
3504
3505 2. The virtualization plugin
3506
3507 The virtualize.sh plugin, bound by default to the vt action name, is
3508 intended to provide an easy way of listing sets or collections of
3509 files, such as selected, tagged, or bookmarked files. For example, to
3510 send all selected files to a virtual directory, you can issue this com‐
3511 mand:
3512
3513 vt sel
3514
3515 and, if you want rather files tagged as PDF:
3516
3517 vt t:PDF
3518
3519 Of course, individual files can also be used:
3520
3521 vt file1 file2 file3
3522
3523 Once executed, the vt plugin will launch a new instance of CliFM (on a
3524 new terminal emulator window) where you can operate on the specified
3525 files as if they were just normal files. Once done, quit this new in‐
3526 stance (via the q command) to return to the primary instance of CliFM.
3527
3528 Note: By default, the terminal emulator used is xterm(1), but can eas‐
3529 ily be customized by just editing the plugin script (virtualize.sh).
3530
3531 If navigating the file system, you can quickly go back to the virtual
3532 directory using the -d option: vt -d. The navigation keys (see the KEY‐
3533 BOARD SHORTCUTS section above) and the CLIFM_VIRTUAL_DIR environment
3534 variable are also available (Shift-Left/Shift-Right or cd $CLIFM_VIR‐
3535 TUAL_DIR).
3536
3537 Tip: Write an alias to make this even easier:
3538
3539 alias vtd='cd $CLIFM_VIRTUAL_DIR'
3540
3541
3543 clifm is by itself quite fast by default, but if speed is still an is‐
3544 sue, it is possible to get some extra performance.
3545
3546 The two most time consuming features are:
3547
3548 1) The files counter, used to print the amount of files contained by
3549 listed directories. Disabling this option produces a nice performance
3550 boost.
3551
3552 2) In normal mode, fstatat(3) is used to gather information about
3553 listed files. Since this function, especially when executed hundreds
3554 (and even thousands) of times, is quite time consuming, the light mode
3555 was implemented as an alternative listing process omitting all calls to
3556 it.
3557
3558 When running in light mode, however, a few features are lost:
3559
3560 1. Only basic file classification is performed, namely, that provided
3561 by the d_type field of a dirent struct (see readdir(3)). Bear in mind,
3562 nonetheless, that whenever _DIRENT_HAVE_D_TYPE was not set at compile
3563 time, or in case of a DT_UNKNOWN value for a given entry (we might be
3564 facing a file system not returning the d_type value, for example, loop
3565 devices), clifm will fall back to stat(3) to get basic files classifi‐
3566 cation.
3567
3568 2. Color per file extension is disabled for performance reasons.
3569
3570 3. The marker for selected files (*) is lost as well: to keep track of
3571 selected files and thus recognize them in the current list of files, we
3572 make use of files device and inode number, which is provided by fs‐
3573 tatat(3).
3574
3575 Besides these two features, a few more things can be disabled to get
3576 some extra speed (though perhaps unnoticeable): icons (if enabled),
3577 columns, colors, and, if already running without colors, file type in‐
3578 dicators. Because listing lots of files could be expensive and time
3579 consuming, you can also try to limit the amount of files printed for
3580 each visited directory (see the mf command above).
3581
3582 Despite the above, however, it is important to bear in mind that list‐
3583 ing speed does not only depend on the program's code and enabled fea‐
3584 tures, but also on the terminal emulator used. Old, basic terminal emu‐
3585 lators like Xterm, Aterm, and the kernel built-in console are really
3586 slow compared to more modern ones like Urxvt, Lxterminal, ST, and Ter‐
3587 minator, to name just a few.
3588
3589 If using Xterm, a nice speed boost is provided by the fast scroll op‐
3590 tion: set fastScroll to true in your ~/.Xresources file. See xterm(1).
3591
3592
3594 The directory jumper function is designed to learn the navigation
3595 habits of the user. The information is stored in a database (see the
3596 FILES section below) used to get the best match for a given string pro‐
3597 vided by the user. In this sense, Kangaroo is like a quick, smart, and
3598 evolved cd function.
3599
3600 The information stored in the database, always per directory, is:
3601 a) Number of visits
3602 b) Date of first visit (seconds since the Unix epoch)
3603 c) Date of the last visit
3604 d) The full path to each visited directory
3605
3606 With this information it is possible to construct a ranking of directo‐
3607 ries to offer the user the most accurate matches for each query string.
3608 The matching algorithm takes into account mainly two factors: frequency
3609 and recency (which is why this kind of algorithm is often called a fre‐
3610 cency algorithm).
3611
3612 After getting an initial list of matches based on the query string(s)
3613 entered by the user, the frequency algorithm is applied on each entry
3614 in the list. The algorithm is quite simple: (visits * 100) / days-
3615 since-first-visit. As a result, we get the average of visits per day
3616 since the day of the first visit (what we call the directory rank).
3617
3618 There are however some further steps in the ranking process: Bonus
3619 points.
3620
3621 Extra credits or penalties are assigned based on the directories last
3622 access time according to the following simple algorithms:
3623 Within last hour: rank * 4
3624 Within last day: rank * 2
3625 Within last week: rank / 2
3626 More than a week: rank / 4
3627
3628 If the last query string matches the basename of a directory, the entry
3629 for this directory has 300 extra credits. This is done simply because
3630 we normally use directory basenames as query strings: they are easier
3631 to remember.
3632
3633 In the same way, pinned directories get 1000 extra credits, bookmarked
3634 directories 500 credits, and directories currently in a workspace 300
3635 credits.
3636
3637 For example: if the query string is "test", /media/data/test will be
3638 matched. Now, if this directory was accessed within the last hour, and
3639 its rank was 200, it becomes 800. But, because the search string
3640 matches its basename, it gets 300 extra credits, and, if this directory
3641 is in addition bookmarked and pinned, it gets 1500 extra credits. In
3642 this way the total rank of this directory in the matching process is
3643 2600. In doing this, we have more chances of matching what the user ac‐
3644 tually wanted to match.
3645
3646 Once all entries in the initial list of matches have been filtered via
3647 the above procedure and ranked, we can return the best ranked entry.
3648 The higher rank a directory has, the more priority it has over the re‐
3649 maining entries in the initial list of matches.
3650
3651 Automatic maintenance is done on the database applying a few simple
3652 procedures:
3653
3654 a) Each entry in the database is checked at startup to remove non-ex‐
3655 istent directories.
3656
3657 b) Once the rank of a directory falls below MinJumpRank (by default
3658 10), it is forgotten and deleted from the database. The MinJumpRank
3659 value can be customized in the configuration file. To make non-fre‐
3660 quently visited directories disappear quicker from the database, in‐
3661 crease this value.
3662
3663 c) Once the sum total of ranks reaches MaxJumpTotalRank (by default
3664 100000), each individual rank is divided by a dynamic factor so that
3665 the total rank becomes less than or equal to MaxJumpTotalRank. If some
3666 rank falls in the process below MinJumpRank, it is removed from the
3667 database. MaxJumpTotalRank can be modified in the configuration file.
3668 The higher the value of MaxJumpTotalRank, the more time directories
3669 will be kept in the database.
3670
3671 NOTE: Directories visited in the last 24 hours will not be removed from
3672 the database, no matter what their rank is.
3673
3674 The idea of 'frecency' was, as far as I know, first devised and de‐
3675 signed by Mozilla. See https://wiki.mozilla.org/User:Mcon‐
3676 nor/Past/PlacesFrecency. However, it is also implemented, though using
3677 different algorithms, by different projects like autojump, z.lua, and
3678 zoxide.
3679
3680
3682 The following variables are read at initialization time:
3683
3684 NO_COLOR
3685 If set to any value, clifm will run colorless
3686
3687 CLIFM_NO_COLOR
3688 Same as NO_COLOR, but specific to clifm
3689
3690 CLIFM_FILE_COLORS
3691 A colon separated list of file type color codes in the same form
3692 specified above in the COLOR CODES section
3693
3694 CLIFM_EXT_COLORS
3695 Same as above, but for file extensions
3696
3697 CLIFM_IFACE_COLORS
3698 Same as above, but for different element of ClIFM's interface
3699
3700 CLIFM_FORCE_COLOR
3701 Force the use of colors, even if the terminal informs that it
3702 does not support colors
3703
3704 CLIFM_FILTER
3705 Define a file filter. If set, this variable overrides the Filter
3706 option in the configuration file
3707
3708 CLIFM_SUDO_CMD
3709 Name of the authenticator program (used by the X command, to
3710 launch a new instance of CliFM as root, and the Alt-v keybind‐
3711 ing, to prepend the authenticator program name (by default
3712 "sudo", or "doas" if compiled on OpenBSD) to the current command
3713 line
3714
3715 FZF_DEFAULT_OPTS
3716 A quoted list of options to be passed to FZF (if used for TAB
3717 completion)
3718
3719 Except when running in stealth mode, clifm sets the following environ‐
3720 ment variables:
3721
3722 CLIFM This variable is set to the path to the configuration directory.
3723 By inspecting this variable other programs can find out if they
3724 were spawned by clifm. It can also be used to quickly jump into
3725 the configuration directory: 'cd $CLIFM' or just '$CLIFM'
3726
3727 CLIFM_PLUGINS_HELPER
3728 Set to the full path to the plugins-helper script used by many
3729 plugins.
3730
3731 CLIFM_PROFILE
3732 This variable is set to the current profile of clifm (if using
3733 two or more instances of clifm under different profiles, the
3734 last one will be used). Specially useful to develop clifm plug‐
3735 ins on a per profile basis.
3736
3737 CLIFM_SELFILE
3738 The path to the current selection file.
3739
3740 CLIFM_COLORLESS
3741 Set to 1 if running colorless (via the NO_COLOR or
3742 CLIFM_NO_COLOR environment variables, or the --no-color command
3743 line option).
3744
3745 CLIFM_BUS
3746 This variable contains the path to a pipe by means of which
3747 plugins can talk to clifm. See the PLUGINS section for more in‐
3748 formation..TP CLIFM_VIRTUAL_DIR This variable is set to the path
3749 to the currently used virtual directory only if (and while) the
3750 virtual directory function is exectued. See the VIRTUAL DIRECTO‐
3751 RIES section above.
3752
3753 If Notifications is set to false for the current prompt, the following
3754 variables are exported to the environment to be used, if needed, by
3755 your custom prompt:
3756
3757 CLIFM_STAT_SEL
3758 Current amount of selected files
3759
3760 CLIFM_STAT_TRASH
3761 Current amount of trashed files
3762
3763 CLIFM_STAT_ERROR_MSGS
3764 Current amount of error messages
3765
3766 CLIFM_STAT_WARNING_MSGS
3767 Current amount of warning messages
3768
3769 CLIFM_STAT_NOTICE_MSGS
3770 Current amount of notice messages
3771
3772 CLIFM_STAT_WS
3773 Current workspace number
3774
3775 CLIFM_STAT_EXIT
3776 Exit code of the last executed command
3777
3778 CLIFM_STAT_ROOT
3779 1 if user is root (UID = 0), 0 otherwise
3780
3781 CLIFM_STAT_STEALTH
3782 1 if running in stealth mode, 0 otherwise
3783
3784
3786 Since clifm executes OS commands, it needs to provide a way to securely
3787 run these commands, specially when it comes to untrusted environments.
3788 Two features are provided to achieve this aim: secure environment and
3789 secure commands.
3790
3791 Both features are aimed to protect the program and the system as such
3792 from malicious input, either coming from environment variables or from
3793 indirect input, that is to say, input coming not from the command line
3794 (in which is assumed that it is the user herself who is executing the
3795 given command), but from files: this is the case of default associated
3796 applications (the mime command), autocommands, (un)mount commands (via
3797 the net command), just as profile and prompt commands.
3798
3799 In an untrusted environment, an attacker could cause unexpected and in‐
3800 secure behavior (even command injection) using environment variables,
3801 or inject malicious commands via indirect input, commands which will be
3802 later executed by clifm without the user's consent (i.e. automati‐
3803 cally). This is why we provide a mechanism to minimize this danger: if
3804 running in an untrusted environment, the secure environment and secure
3805 commands features are there to prevent (at least as far as possible)
3806 this kind of attacks.
3807
3808 A) Secure environment
3809
3810 Programs inherit the environment from the parent process. However, if
3811 this inherited environment is not trusted, not secure, it is always a
3812 good idea to sanitize it using only sane values, preventing thus unde‐
3813 sired and uncontrolled input that might endanger the program and the
3814 system itself.
3815
3816 The secure-environment function forces clifm to run on a such a sani‐
3817 tized environment.
3818
3819 There are two secure-environment modes, the regular, and the full one.
3820 To enable the regular mode, run clifm with the --secure-env command
3821 line option. Otherwise, enable the full mode using --secure-env-full.
3822
3823 a) Regular: in this mode, the inherited environment is cleared, though
3824 a few variables are preserved to keep clifm running as stable as possi‐
3825 ble. These preserved variables are: TERM, DISPLAY, LANG, TZ, and, if
3826 FZF TAB completion mode is enabled, FZF_DEFAULT_OPTS.
3827
3828 The following variables are set in an environment agnostic way (that
3829 is, securely):
3830 - HOME, SHELL, and USER are retrieved using getpwuid(3)
3831 - PATH is set consulting _PATH_STDPATH (or _CS_PATH if the
3832 former is not available)
3833 - IFS is set to a sane, hard-coded value: " \n\t"
3834
3835 b) Full: this mode is just like the regular mode, except that nothing
3836 is imported from the environment at all and only PATH and IFS are set
3837 (as described above). Everything else remains unset, and is the user's
3838 responsibility to set environment variables (via the export function),
3839 as needed. In this case, you might want to set, at least, TERM, and, if
3840 running in a graphical environment, DISPLAY.
3841
3842 Be aware that enabling secure-environment might break some functions,
3843 depending on the system configuration.
3844
3845 B) Secure commands
3846
3847 Some commands are automatically executed by clifm: (un)mount commands
3848 (via the net command), opening applications (via Lira), just as prompt,
3849 profile, and autocommands. These commands are read from a configuration
3850 file and then executed. Now, if an attacker has access to any of these
3851 files, she might force clifm to run any arbitrary command, and thereby
3852 possibly exposing the whole system.
3853
3854 Every time a command is thus automatically executed via the system
3855 shell (i.e. without the user's direct consent), the secure commands
3856 function performs three different, though intrinsically related tasks
3857 aimed to mitigate command injection and/or unexpected behavior:
3858
3859 a) Only command base names are allowed: nano, for instance, is allowed,
3860 while /usr/bin/nano is not. In this way we can guarantee that only com‐
3861 mands found in a sanitized PATH (see the point c below) will be exe‐
3862 cuted. This is done in order to prevent the execution of custom bina‐
3863 ries/scripts, for example: /tmp/exec_file.
3864
3865 b) Commands are validated using a whitelist of safe characters (mostly
3866 to prevent stream redirection, conditional execution, and so on, for
3867 example, 'your_command;some_injected_command'). This set of safe char‐
3868 acters slightly vary depending on the command being executed (because
3869 they use different syntaxes):
3870
3871 Net command: a-zA-Z -_.,/=
3872 Prompt, profile, autocommands: a-zA-Z -_.,/"'
3873 Mime command: a-zA-Z -_.,%&
3874
3875 Commands containing at least one unsafe character will be rejected. Of
3876 course, we cannot (and should not) prevent what looks like legitimate,
3877 benign commands from being executed. But we can stop commands that, in
3878 an untrusted environment, look suspicious. This is specially the case
3879 of stream redirection (>), pipes (|), sequential (;) and conditional
3880 execution (&&, ||), command substitution ($(cmd)), and environment
3881 variables ($VAR).
3882
3883 c) Unless already running in a secure environment (via the --secure-env
3884 or --secure-env-full options), a sanitized environment will be created
3885 for the command to be executed (returning afterwards to the original
3886 environment). The values for this secure environment are as follows:
3887
3888 PATH Taken from _PATH_STDPATH (or _CS_PATH)
3889 IFS " \t\n"
3890 USER, HOME, SHELL Retrieved from the password database via
3891 getpwuid(3)
3892 LOGNAME Same as USER
3893 DISPLAY, TZ, LANG, TERM Imported from the environment and sani‐
3894 tized
3895 LC_ALL Same as LANG
3896
3897
3899 Sequential and conditional execution of commands:
3900
3901 For each of the internal commands (see the COMMANDS section above) you
3902 can use the semicolon to execute them sequentially and/or the double
3903 ampersand to execute them conditionally. Example: cmd1; cmd2 && cmd3.
3904
3905 Though you can use here external commands as well, bear in mind that,
3906 whenever at least one internal command is involved in a chained list of
3907 commands, clifm will take care of executing this list (simply because
3908 the system shell isn't able to understand any of these commands), so
3909 that no shell inter-process function (like pipes), nor any stream redi‐
3910 rection or shell expression (like IF blocks or FOR loops) will be
3911 available. However, the shell is still used to run single external com‐
3912 mands found in the chained list, but in isolation from the remaining
3913 commands in this list.
3914
3915 As a rule of thumb, when using chained commands make sure to always ex‐
3916 pand ELN's to avoid undesired consequences. If, for instance, you issue
3917 this command: touch aaa && r 3, you will end up deleting a file you
3918 were not intended to delete, simple because after the successful execu‐
3919 tion of the first command, the ELN 3 corresponds now to a different
3920 file.
3921
3922
3923 External commands:
3924
3925 clifm is not limited to its own set of internal commands, like open,
3926 sel, trash, etc., but it can run any external command as well, provided
3927 external commands are allowed (see the -x option, the ext command, or
3928 the configuration file). By beginning the external command by a colon
3929 or a semicolon (':', ';') you tell clifm not to parse the input string,
3930 but instead letting this task to the system shell. However, bear in
3931 mind that clifm is not intended to be used as a shell, but as the file
3932 manager it is.
3933
3934
3935 Terminal emulators and non-ASCII characters:
3936
3937 It depends on the terminal emulator you use to correctly display
3938 non-ASCII characters and characters from the extended ASCII charset.
3939 If, for example, you create a file named "ñandú" (the Spanish word for
3940 'rhea'), it will be correctly displayed by the Linux console, Lxtermi‐
3941 nal, and Urxvt, but not thus by Xterm or Aterm.
3942
3943
3944 .Xresources:
3945
3946 clifm will create $HOME/.Xresources, if it doesn't already exist, for
3947 keybindings to work correctly. However, some (and even all) of these
3948 keybindings might not work in some terminals, though they do work fine
3949 on the console (TTY), xvt-like terminal emulators like Urxvt and Aterm,
3950 and xterm-like ones. However, keybinding can be edited freely to make
3951 them work on any terminal emulator.
3952
3953
3954 Spaces and escape codes:
3955
3956 When dealing with file names containing spaces, you can use both single
3957 and double quotes (ex: "this file" or 'this file') plus escape se‐
3958 quences (ex: this\ file).
3959
3960
3961 Starting path:
3962
3963 By default, clifm starts in the current working directory. However, you
3964 can always specify a different path by passing it as positional parame‐
3965 ter. Ex: clifm /home/user/misc. You can also permanently set up the
3966 starting path in the clifm configuration file. If the RestoreLastPath
3967 option is set to true, clifm will start instead in the last visited di‐
3968 rectory (and in the last used workspace), unless the starting path (and
3969 optionally the workspace number) is specified via command line.
3970
3971
3972 Default profile:
3973
3974 clifm's default profile is "default". To create alternative profiles
3975 use the -P command line option or the 'pf add' command (see above).
3976
3977
3979 CONFIGURATION FILE
3980 The configuration file is $XDG_CONFIG_HOME/clifm/profiles/PRO‐
3981 FILE/clifmrc. It will be copied from DATADIR/clifm (usually
3982 /usr/local/share/clifm), and if not found, it will be created
3983 anew with default values. Here you can permanently set up clifm
3984 options, define aliases, prompt commands, and autocommands.
3985
3986 A description for each option in the configuration file can be
3987 found in the configuration file itself.
3988
3989 PROFILE FILE
3990 The profile file is $XDG_CONFIG_HOME/clifm/profiles/PROFILE/pro‐
3991 file.clifm. In this file you can add those commands you want to
3992 be executed at startup. You can also permanently set here some
3993 custom variables, ex: 'dir="/path/to/dir"'. This variable may be
3994 used as a shortcut to that directory, for instance: 'cd $dir'.
3995 Custom variables could also be temporarily defined via the com‐
3996 mand prompt: Ex: user@hostname ~ $ var="This is a test". Tempo‐
3997 rary variables will be removed at program exit.
3998
3999 PROMPTS FILE
4000 This file contains prompts definitions and is located in
4001 DATADIR/clifm/prompts.clifm. It will be copied automatically
4002 into $XDG_CONFIG_HOME/clifm/prompts.clifm if it doesn't exist.
4003 The Prompt line in the color scheme file should point to one of
4004 the prompt names defined in this file. See the PROMPT section
4005 for more information.
4006
4007 KEYBINDINGS FILE
4008 The keybindings file is $XDG_CONFIG_HOME/clifm/keybindings,cfm.
4009 It will be copied from DATADIR/clifm (usually /usr/share/clifm),
4010 and if not found, it will be created anew with default values.
4011 This file is used to specify the keyboard shortcuts used for
4012 some ClifM's functions. The format for each keybinding is always
4013 "keyseq:function", where 'keyseq' is an escape sequence in GNU
4014 emacs style. A more detailed explanation can be found in the
4015 keybindings file itself.
4016
4017 PLUGINS DIRECTORY
4018 The directory used to store programs or scripts pointed to by
4019 actions (in other words, plugins) is DATADIR/clifm/plugins (usu‐
4020 ally /usr/share/clifm/plugins). To edit these plugins copy them
4021 to $XDG_CONFIG_HOME/clifm/plugins and edit them to your liking.
4022 Plugins in this local directory take precedence over those in
4023 the system one.
4024
4025 COLORS DIRECTORY
4026 This directory, $DATADIR/clifm/colors, contains available color
4027 schemes (or just themes) as files with a .clifm extension. You
4028 can copy these themes to the local colors directory ($XDG_CON‐
4029 FIG_HOME/clifm/colors) and edit them to your liking (or just
4030 create new themes from the ground up). Themes in the local col‐
4031 ors directory take precedence over those in the system direc‐
4032 tory. You can create as many themes as you want by just dropping
4033 them into the local colors directory. The default color scheme
4034 file (default.clifm) can be used as a guide.
4035
4036 ACTIONS FILE
4037 The file used to define custom actions is $XDG_CON‐
4038 FIG_HOME/clifm/profiles/PROFILE/actions.clifm. It will be copied
4039 from DATADIR/clifm (usually /usr/share/clifm), and if not found,
4040 it will be created anew with default values.
4041
4042 MIMELIST FILE:
4043 The mime list file is $XDG_CONFIG_HOME/clifm/profiles/PRO‐
4044 FILE/mimelist.clifm. It is a list of file types and file exten‐
4045 sions and their associated applications used by lira. It will be
4046 copied from DATADIR/clifm (usually /usr/share/clifm).
4047
4048 BOOKMARKS FILE
4049 The bookmarks file is $XDG_CONFIG_HOME/clifm/profiles/PRO‐
4050 FILE/bookmarks.clifm Just the list of the user's bookmarks used
4051 by the bookmarks function.
4052
4053
4054 HISTORY FILE
4055 The history file is ~/.config/clifm/profiles/PROFILE/his‐
4056 tory.clifm. A list of commands entered by the user and used by
4057 the history function.
4058
4059 LOG FILE
4060 The log file is $XDG_CONFIG_HOME/clifm/profiles/PRO‐
4061 FILE/log.clifm. This file contains CliFM's logs. There are two
4062 kinds of logs: 1. messages, and 2. commands.
4063
4064 Message logs are a record of errors and warnings and have the
4065 following form: "m:[date] msg". Enable these logs using the Logs
4066 option in the configuration file, the --enable-logs flag, or the
4067 log command.
4068
4069 Command logs keep track of external commands and internal com‐
4070 mands able to modify the filesystem. These logs have this form:
4071 "c:[date] current_working_directory:cmd". Enable these logs via
4072 the CmdLogs option in the configuration file.
4073
4074 KANGAROO DATABASE
4075 The directory jumper database is stored in $XDG_CON‐
4076 FIG_HOME/clifm/profiles/PROFILE/jump.clifm.
4077
4078 NOTE: If $XDG_CONFIG_HOME is not set, $HOME/.config/ is used instead.
4079
4080
4082 NOTE: Always try TAB. TAB completion is available for many things
4083
4084 NOTE 2: Suggestions for possible completion will be printed next to the
4085 text typed so far. To accept the given suggestion, press Right (or Alt-
4086 f to accept only the first suggested word). Otherwise, the suggestion
4087 is just ignored
4088
4089 Get help: F1: manpage F2: keybindings F3: commands
4090
4091 - Change directory to /etc:
4092
4093 /etc
4094
4095 - Change-to/open the directory/file whose ELN is 5 in the current di‐
4096 rectory:
4097
4098 5
4099
4100 TIP: Press TAB to make sure 5 is the file you want. If the suggestions
4101 system is enabled, just pay attention to the suggestion. Press Left to
4102 accept the given suggestion
4103
4104 - Open myfile.txt (with the default associated application):
4105
4106 myfile.txt
4107
4108 - Open myfile.txt using vi:
4109
4110 myfile.txt vi (or vi myfile.txt)
4111
4112 - Open the file whose ELN is 24 in the background:
4113
4114 24&
4115
4116 - Jump to ~/media/data/docs/work/mike/xproject:
4117
4118 j xproj
4119
4120 NOTE: This depends however on the database ranking. For more accuracy:
4121 'j mike xproj'
4122
4123 - Go back to the directory you came from:
4124
4125 b (or Shift-Left or Alt-j)
4126
4127 NOTE: Enter f, or press Shift-Right or Alt-k to go back to the first
4128 directory
4129
4130 - Create a new file named myfile and a new directory named mydir:
4131
4132 n myfile mydir/
4133
4134 NOTE: Since clifm is integrated to the system shell, you can also use
4135 any of the shell commands you usually use to create new files. Ex:
4136 'touch myfile' or 'nano myfile'
4137
4138 - Change to detail/long view mode:
4139
4140 Alt-l
4141
4142 - Print the properties of the file whose ELN is 4:
4143
4144 p4
4145
4146 - Reprint the list of files in the current directory:
4147
4148 rf
4149
4150 - Select all c files in the current directory:
4151
4152 s *.c
4153
4154 - Select multiple files in the current directory by ELN:
4155
4156 s 1-4 8 19-26
4157
4158 - List selected files:
4159
4160 sb
4161
4162 - Deselect a few files:
4163
4164 ds
4165
4166 - Send a few files to the trash can:
4167
4168 t 1-3 *.old
4169
4170 - Undelete trashed files:
4171
4172 u
4173
4174 - Remove files from the trash can:
4175
4176 t del
4177
4178 - Empty the trash can:
4179
4180 t empty
4181
4182 - Tag all PDF files in the current directory as mypdfs:
4183
4184 ta *.pdf :mypdfs
4185
4186 - Print the file properties of all files tagged as mypdfs:
4187
4188 p t:mypdfs
4189
4190 - Search for all PDF files in the current dirctory:
4191
4192 /*.pdf
4193
4194 - Create a directory named mydir and cd into it:
4195
4196 n mydir/ && mydir
4197
4198 - Copy selected files into the current directory:
4199
4200 c sel
4201
4202 - Remove all selected files:
4203
4204 r sel
4205
4206 NOTE: To remove files in bulk via a text editor use the rr command.
4207
4208 - Rename the file whose ELN is 12:
4209
4210 m12
4211
4212 - Bookmark mydir:
4213
4214 bm add mydir
4215
4216 - Open the bookmarks screen. Once there, enter the bookmark ELN (1 ...)
4217 or its hotkey ([xx]) to open it:
4218
4219 bm (or Ctrl-b)
4220
4221 - Switch to workspace 2:
4222
4223 ws2 (or Alt-2)
4224
4225 - View and/or edit the configuration file:
4226
4227 edit (or F10)
4228
4229 - Change to profile test:
4230
4231 pf set test
4232
4233 - Show hidden files:
4234
4235 hf on (or Alt-.)
4236
4237 List available actions/plugins:
4238
4239 actions
4240
4241 - Want file previews?
4242
4243 - (yes, just a dash)
4244
4245 NOTE: This runs the plugin fzfnav.sh. Take a look at the manpage for
4246 needed dependencies
4247
4248 - Want icons?
4249
4250 icons on
4251
4252 - I'm tired, quit:
4253
4254 q
4255
4256 There is a lot more you can do, but this should be enough to get you
4257 started.
4258
4259
4261 clifm returns the exit status of the last executed command
4262
4263
4265 clifm is C99 compliant, and, if compiled with the _BE_POSIX flag, it is
4266 POSIX.1-2008 compliant as well. If not, just a single non-POSIX func‐
4267 tion is used: statx(2) (Linux specific), to get files birth time.
4268
4269
4271 Report at <https://github.com/leo-arch/clifm/issues>
4272
4273
4275 L. M. Abramovich
4276
4277
4278
4279clifm 1.7 Aug 24, 2022 CLIFM(1)