What's new in LF - Terminal File Manager r32

Apr 1, 2024
  • (Breaking) The example script etc/lfcd.cmd is updated to use the -print-last-dir option instead of -last-dir-path (#1444) (by @atahrijouti and @joelim-work). Similar changes have been made for etc/lfcd.ps1 (#1491) (by @alunegov), etc/lfcd.fish (#1503) (by @postsolar), and etc/lfcd.nu (#1575) (by @ZennoZenith).
  • (Breaking) The documentation from lf -doc and the doc command is now generated from Markdown using pandoc (#1474) (by @gokcehan).
  • (New) A new option hidecursorinactive is added to hide the cursor when the terminal is not focused (#965) (by @laktak).
  • (New) A new special command on-redraw is added to be able to run a command when the screen is redrawn or when the terminal is resized (#1479) (by @joelim-work).
  • (New) Options cutfmt, copyfmt and selectfmt are added to configure the indicator color for cut/copied/selected files respectively (#1540) (by @joelim-work).
  • (New) zsh completion is added for the lfcd command (#1564) (by @postsolar).
  • (New) The file stat information now falls back to displaying user/group ID if looking up the user/group name fails (#1590) (by @jantatje).
  • (New) A new environment variable lf_mode is now exported to indicate which mode lf is currently running in (#1594) (by @joelim-work).
  • (New) Default icons are added for Docker Compose files (#1626) (by @nuckle).
  • (Fix) Default value of rulerfmt option is now left-padded with spaces to visually separate it from the file stat information (#1437) (by @joelim-work).
  • (Fix) Previews should now work for files containing lines with 65536 characters or more (#1447) (by @joelim-work).
  • (Fix) Sixel previews should now work when using lfcd scripts (#1451) (by @joelim-work).
  • (Fix) Colors and icons should now display properly for character device files (#1469) (by @joelim-work).
  • (Fix) The selection file is now immediately synced to physical storage after writing to it (#1480) (by @joelim-work).
  • (Fix) Timestamps are preserved when moving files across devices (#1482) (by @joelim-work).
  • (Fix) Fix crash for high and low commands when scrolloff is set to a large value (#1504) (by @joelim-work).
  • (Fix) Documentation is updated with various spelling and grammar fixes (#1518) (by @hankertrix).
  • (Fix) Files beginning with a dot (e.g. .gitignore) are named correctly after paste if another file with the same name already exists (#1525) (by @joshuali925).
  • (Fix) Prevent potential race condition when sorting directory contents (#1526) (by @Michael-Gallo).
  • (Fix) Signals are now handled properly even after receiving and ignoring SIGINT (#1549) (by @mtoohey31).
  • (Fix) The file stat information should now update properly after using the cd command to change to a directory for the first time (#1536) (by @joelim-work).
  • (Fix) Previous error messages should now be cleared after a mark-save/mark-remove operation (#1544) (by @joelim-work).
  • (Fix) Fix high CPI usage issue when viewing CryFS filesystems (#1607) (by @Michael-Gallo).
  • (Fix) Invalid entries in the marks and tags files now raise an error message instead of crashing (#1614) (by @joelim-work).
  • (Fix) Startup time is improved on Windows (#1617) (by @Catalyn45).
  • (Fix) Sixel previews are now resized properly when the horizontal size of the preview window changes (#1629) (by @joelim-work).
  • (Fix) The cut buffer is only cleared if the paste operation succeeds (#1652) (by @joelim-work).
  • (Fix) The extension after . is ignored to set the cursor position when renaming a directory (#1664) (by @Limero).
  • (Fix) The option period should not cause flickers in sixel previews anymore (#1666) (by @joelim-work).

New in LF - Terminal File Manager r31 (Sep 17, 2023)

  • (Breaking) There has been some changes in the server protocol. Make sure to kill the old server process when you update to avoid errors (i.e. lf -remote 'quit!').
  • (Breaking) A new server command query is added to expose internal state to users (#1384) (by @joelim-work). A new builtin command cmds is added to display the commands. The old builtin command jumps is now removed. The builtin commands maps and cmaps now use the new server command.
  • (Breaking) Environment variable exporting for files and options are not performed anymore while previewing and cleaning to avoid various issues with race conditions (#1354) (by @joelim-work). Cleaning program should now instead receive an additional sixth argument for the next file path to be previewed to allow comparisons with the previous file path. User options (i.e. user_{option}) are now exported whenever they are changed (#1418) (by @raslop).
  • (Breaking) Command outputs are now exclusively attached to stderr to allow printing the last directory or selection to stdout (#1399 and #1402) (by @joelim-work). Two new command line options -print-last-dir and -print-selection are added to print the last directory and selection to stdout. The example script etc/lfcd.sh is updated to use -print-last-dir instead. Other lfcd scripts are also likely to be updated in the future to use the new method (patches are welcome).
  • (Breaking) The option ruler is now deprecated in favor of its replacement rulerfmt (#1386) (by @joelim-work). The new rulerfmt option is more capable (i.e. displays option values, supports colors and attributes, and supports optional fields) and more consistent with the rest of our options. See the documentation for more information.
  • (New) Modifier keys (i.e. control, shift, alt) with special keys (e.g. arrows, enter) are now supported for most combinations (#1248) (by @joelim-work).
  • (New) A new option borderfmt is added to configure colors for pane borders (#1251) (by @joelim-work).
  • (New) New lf specific environment variables, LF_CONFIG_HOME on Windows and LF_CONFIG/DATA_HOME on Unix, are now supported to set the configuration directory (#1253) (by @alok-mishra).
  • (New) Tilde (i.e. ~) expansion is performed during completion to be able to use expanded tilde paths as command arguments (#1246) (by @joelim-work).
  • (New) A new option preserve is added to preserve attributes (i.e. mode and timestamps) while copying (#1026) (by @raslop).
  • (New) The file etc/icons.example is updated for nerd-fonts v3.0.0 (#1271) (by @MunifTanjim).
  • (New) A new builtin command clearmaps is added to clear all default keybindings except for read (i.e. :) and cmap keybindings to be able to :quit (#1286) (by @joelim-work).
  • (New) A new option statfmt is added to configure the status line at the bottom (#1288) (by @joelim-work).
  • (New) A new option truncatepct is added to determine the location of truncation from the beginning in terms of percentage (#1029) (by @raslop).
  • (New) A new option dupfilefmt is added to configure the names of duplicate files while copying (#1315) (by @Limero).
  • (New) Shell scripts etc/lf.nu and etc/lfcd.nu are added to the repository to allow completion and directory change with Nushell (#1341) (by @mauerlaeufer).
  • (New) Sixels are now supported for previewing (#1211) (by @horriblename). A new option sixel is added to enable this behavior.
  • (New) A new configuration keyword setlocal is added to configure directory specific options (#1381) (by @gokcehan).
  • (New) A new command line command cmd-delete-word-back (default a-backspace and a-backspace2) is added to use word boundaries when deleting a word backwards (#1409) (by @janpeterd).
  • (Fix) Cursor positions in the directory should now be preserved after file operations that changes the directory (e.g. create or delete) (#1247) (by @joelim-work).
  • (Fix) Option reverse should now respect to sort stability requirements (#1261) (by @joelim-work).
  • (Fix) Backspace should not exit filter mode anymore (#1269) (by @jdujava).
  • (Fix) Truncated double width characters should not cause misalignment for the file information (#1272) (by @joelim-work).
  • (Fix) Piping shell commands should not refresh the preview anymore (#1281) (by @joelim-work).
  • (Fix) Cursor position should now update properly after a terminal resize (#1290) (by @joelim-work).
  • (Fix) Directories should now be reloaded properly after a delete operation (#1292) (by @joelim-work).
  • (Fix) Executable file completion should not add entries to the log file anymore (#1307) (by @joelim-work).
  • (Fix) Blank input lines are now allowed in piping shell commands (#1308) (by @joelim-work).
  • (Fix) Shell commands arguments on Windows should now be quoted properly to fix various issues (#1309) (by @joelim-work).
  • (Fix) Reloading in a symlink directory should not follow the symlink anymore (#1327) (by @joelim-work).
  • (Fix) Command load should not flicker image previews anymore (#1335) (by @joelim-work).
  • (Fix) Asynchronous shell commands should now trigger load automatically when they are finished (#1345) (by @joelim-work).
  • (Fix) Changing the value of preview option should now clear image previews (#1350) (by @jdujava).
  • (Fix) Cursor position in the status line at the bottom should now consider double width characters properly (#1348) (by @joelim-work).
  • (Fix) Filenames should only be quoted for cmd on Windows to avoid quoting issues for powershell (#1371) (by @joelim-work).
  • (Fix) Inaccessible files should now be included in the directory list and display their lstat errors in the status line at the bottom (#1382) (by @jantatje).
  • (Fix) Command line command cmd-delete-word should now add the deleted text to the yank buffer (#1409) (by @janpeterd).

New in LF - Terminal File Manager r30 (May 20, 2023)

  • (New) A new builtin command jumps is addded to display the jump list
  • (New) A new possible field filter is added to ruler option to display the filter indicator
  • (Fix) Broken mappings for bottom command due to recent changes are fixed
  • (Fix) Selecting a file does not scroll to bottom anymore
  • (Fix) Broken builds on some platforms due to recent changes are fixed

New in LF - Terminal File Manager r28 (Dec 24, 2022)

  • (Breaking) Extension matching for colors and icons are now case insensitive (#908) (by @maicher and @desbma).
  • (New) Three new commands high, middle, and low are added to move the current selection relative to the screen (#824) (by @laktak).
  • (New) Backspace on empty prompt now switches to normal mode (#836) (by @SeekingBlues).
  • (New) A new history option is now added to be able to disable history (#866) (by @segf00lt).
  • (New) A new special expansion %S spacer is added for promptfmt to be able to right align parts (#867) (by @laktak).
  • (New) A new command-line command cmd-menu-accept is now added to accept the currently selected match (#934) (by @p-ouellette).
  • (New) Command-line commands should now be shown in completion for map and cmap (#934) (by @p-ouellette).
  • (New) Italic escape codes should now be working in previews (#936) (by @p-ouellette).
  • (New) Position and size information are now also passed to the cleaner script as arguments (#945) (by @phillbush).
  • (New) A new option dirpreviews is now added to also pass directories to the previewer script (#842) (by @ilmari-h).
  • (New) A new option selmode is now added to be able to limit the selection to the current directory (#849) (by @laktak).
  • (New) User defined options with user_ prefix are now supported (#865) (by @laktak).
  • (New) Adding or removing $/%/!/& characters in : mode should now change the mode accordingly (#960) (by @ilyagr).
  • (New) A new special command on-select is now added to be able to run a command after the selection changes (#864) (by @laktak).
  • (New) Mouse support is extended to be able to click filenames for selection and opening (#963) (by @p-ouellette).
  • (New) Two new environment variables lf_width and lf_height are now exported for shell commands.
  • (Fix) Option tagfmt can now be changed properly.
  • (Fix) User name, group name, and link count should now be displayed as before where available (#829) (by @SeekingBlues).
  • (Fix) Tagging files with colons in their names should now work as expected (#857) (by @amano-kenji).
  • (Fix) Some multibyte characters should now be handled properly for completion (#934) (by @p-ouellette).
  • (Fix) Menu completion for a file in a subdirectory should now be working properly (#934) (by @p-ouellette).
  • (Fix) File completion should now be escaped properly in menu completion (#934) (by @p-ouellette).
  • (Fix) First use of cmd-menu-complete-back should now select the last completion as expected (#934) (by @p-ouellette).
  • (Fix) Broken symlinks should now be working properly in completion (#934) (by @p-ouellette).
  • (Fix) Files with stat errors should now be skipped properly in completion (#934) (by @p-ouellette).
  • (Fix) Empty search with incsearch option should now be handled properly (#944) (by @p-ouellette).
  • (Fix) History position is now also reset when leaving command line (#953) (by @p-ouellette).
  • (Fix) Mouse drag events are now ignored properly to avoid command repetition (#962) (by @p-ouellette).
  • (Fix) Environment variables HOME and USER should now be used as fallback for locations on some systems (#972) (by @GaetanLepage).
  • (Fix) File information is now displayed in the status line at first launch when there are no errors in the configuration file (#994) (by @valoq).

New in LF - Terminal File Manager r27 (Apr 3, 2022)

  • (Breaking) Creation of log files are now disabled by default (with @desbma). Instead, a new command line option -log is provided.
  • (Breaking) Copy selections are now kept after paste (by @laktak). You can use map p :paste; clear to get the old behavior.
  • (Breaking) Socket file is now created in XDG_RUNTIME_DIR when set with a fall back to the temporary directory otherwise (with @desbma).
  • (Breaking) Directory counting with dircounts option is moved from ui drawing to directory reading to be run asynchronously without locking the ui. With this change, manual reload commands might be necessary when dircounts is changed at runtime. Indicators for errors are changed to ! instead of ? to distinguish them from missing values.
  • (Breaking) The default icons are now replaced with ascii characters to avoid font issues.
  • (New) Files and options are now exported for previewer and cleaner scripts (with @lucas-mior). For cleaner scripts, this can be used to detect if the file selection is changed or not (e.g. $1 == $f) and act accordingly (e.g. skip cleaning).
  • (New) A new tempmarks option is added to set some marks as temporary (by @laktak).
  • (New) Pattern *filename is added for colors and icons (by @lmburns).
  • (New) A new calcdirsize command is added to calculate directory sizes (by @laktak).
  • (New) Two new options infotimefmtnew and infotimefmtold are added to configure the time format used in info (by @maicher and @laktak).
  • (New) Two new commands jump-next (default ]) and jump-prev (default [) are added to navigate the jumplist (by @laktak).
  • (New) Colors and icons file support is now added to be able to configure without environment variables. Example colors and icons files are added to the repository under etc directory. See the documentation for more information.
  • (New) For Windows, an example open command in now provided in the powershell example configuration (by @seantwie03).
  • (New) Two new commands scroll-up (default <c-y>) and scroll-down (default <c-e>) are added to be able to scroll the file list without moving (by @sbinnee).
  • (New) A new special command on-quit is added to be able to run a command before quitting.
  • (New) Two new commands tag and tag-toggle (default t) are now added to be able to tag files (by @sant0s12).
  • (Fix) Chmod calls in the codebase are now removed to avoid TOC/TOU exploits (with @desbma). Instead, file permissions are now set at file creations.
  • (Fix) Socket and log files are now created with only user permissions (with @desbma).
  • (Fix) On Windows, PWD variable is not quoted properly.
  • (Fix) Shell commands % and & are now run in a separate process group (by @laktak).
  • (Fix) Navigation initialization is now delayed after the evaluation of configuration files to avoid startup races and redundant loadings (with @laktak).
  • (Fix) The error message shown when the current working directory does not exist at startup is made more clear.
  • (Fix) Trailing slashes in PWD variable are now handled properly.
  • (Fix) Files with stat errors are now skipped while reading directories.

New in LF - Terminal File Manager r26 (Oct 22, 2021)

  • (Fix) On windows, input handling is properly resumed after shell commands.

New in LF - Terminal File Manager r25 (Oct 10, 2021)

  • (New) A new dironly option is added to only show directories and hide regular files (by @mtoohey31).
  • (New) A new dircache option is added to disable caching of directories (by @sigasigasiga).
  • (New) Two new commands filter and setfilter is added along with a new option incfilter and a promptfmt expansion %F to implement directory filtering feature (by @SPFabGerman).
  • (New) A new special command pre-cd is added to run a command before a directory is changed (by @SPFabGerman).
  • (New) cmap command now accepts all expressions similar to map (by @SPFabGerman).
  • (Fix) Marking a symlink directory should now save the symlink path instead of the target path (by @SeerLite).
  • (Fix) A number of crashes have been fixed when hidden option is changed (by @kmarius).

New in LF - Terminal File Manager r24 (Jun 20, 2021)

  • Changelog:
  • (Fix) Data directory is automatically created before the selection file is written.
  • (Fix) An error is returned for remote commands when the given id is not connected to the server.
  • (Fix) Prompts longer than the width should not crash the program anymore.

New in LF - Terminal File Manager r23 (Jun 8, 2021)

  • (Breaking) There has been some changes in the server protocol. Make sure to kill the old server process when you update to avoid errors.
  • (Breaking) Server load and save commands are now removed. Instead a local file is used to record file selections (e.g. ~/.local/share/lf/files). See the documentation for more information.
  • (Breaking) Clients are now disconnected from server on quit. The old server quit command is renamed to quit! to act as a force quit by closing connected client connections first. A new quit command is added to only quit when there are no connected clients left.
  • (New) A new autoquit option is added to automatically quit server when there are no connected clients left. This option is disabled by default to keep the old behavior. This is added as an option to avoid respawning server repeatedly when there is often a single client involved but more clients are spawned from time to time.
  • (New) A new -single command line flag is added to avoid spawning and/or connecting to server on startup. Remote commands would not work in this case as the client does not connect to a server. Local versions of internal load and sync commands are implemented properly.
  • (New) Errors for remote commands are now also shown in the output in addition to the server log file.
  • (New) Bright ansi color escape codes (i.e. 90-97 and 100-107) are now supported.
  • (Fix) Lookahead size for escape codes are increased to recognize longer escape codes used in some image previewers.
  • (Fix) File preview cache is invalidated when the terminal height changes to fill the screen properly.
  • (Fix) File preview cache is invalidated when drawbox option changes and true image previews should be triggered to be drawn at updated positions.
  • (Fix) A crash scenario is fixed when hidden option is changed.
  • (Fix) Pane widths should now be calculated properly when big numbers are used in ratios (by @kmarius).
  • (Fix) Special bookmark ' is preserved properly after sync commands (by @kmarius).
  • (Fix) On some platforms, a bug has been fixed on tcell side to avoid an extra key press after terminal suspend/resume and the tcell version used in lf is bumped accordingly to include the fix.
  • (Fix) Prompt line should now scroll accordingly when the text is wider than the screen.
  • (Fix) Text width in the prompt line should now be calculated properly when non-ascii characters are involved.
  • (Fix) Erase line escape codes (i.e. 33[K) used in some command outputs should now be ignored properly.

New in LF - Terminal File Manager r22 (Apr 14, 2021)

  • Changelog:
  • (New) A new -config command line flag is added to use a custom config file path (by @SPFabGerman).
  • (New) Current working directory is now exported as PWD environment variable (by @SeerLite). Subshells in symlink directories should now start in their own paths properly.
  • (New) Initial working directory is now exported as OLDPWD environment variable.
  • (New) A new shellflag option is added to customize the shell flag used for passing commands (i.e. default -c for unix and /c for windows).
  • (New) Command cmd-enter during find and find-back now jumps to the first match (by @gotroyb127).
  • (New) A new waitmsg option is added to customize the prompt message after shell-wait commands (i.e. default Press any key to continue) (by @gotroyb127).
  • (Fix) A regression bug is fixed to print a newline in the prompt message properly after shell-wait commands (by @gotroyb127).
  • (Fix) A regression bug is fixed to avoid CPU stuck at 100% when the terminal is closed unexpectedly.
  • (Fix) A regression bug is fixed to make shell commands use the alternate screen properly and keep the terminal history after quit.
  • (Fix) Enter keypad terminfo sequence is now sent on startup so delete key should be recognized properly in st terminal.

New in LF - Terminal File Manager r21 (Feb 28, 2021)

  • Changelog:
  • (Breaking) Copy and move do not follow symlinks anymore and copy them as symlinks. Broken symlinks can now be used in copy and move (by @sh1r4s3).
  • (New) User name, group name, and hard link counts are now shown in the statusline at the bottom when available (by @kmarius).
  • (New) Number of selected, copied, and cut files are now shown in the ruler at the bottom when they are non-zero.
  • (New) Hard-coded shell commands with stty (unix) and pause (windows) to implement "Press any key to continue" behavior are now implemented properly with Go terminal handling library. With this change, requirement for a POSIX compatible shell for shell option is now dropped and other shells might be used.
  • (Fix) A longstanding issue regarding ui suspend/resume for shell commands in MacOS is now fixed in tcell (by @gdamore).
  • (Fix) Renaming a symlink to its target or a symlink to another with the same target should now be handled properly (by @sh1r4s3).
  • (Fix) Autocompletion in a directory containing a broken symlink should now work as intended (by @sh1r4s3).
  • (Fix) Setting shellopts to empty in the configuration file should not pass an extra empty argument to the shell commands anymore.
  • (Fix) Previously given tip to trap SIGPIPE in the preview script to enable caching is now updated in the documentation. Trapping the signal in the preview script avoids sending the signal to the program when enough lines are read. This may result in reading redundant lines escpecially for big files. Recommended method is now to add a trailing || true to each command exiting with a non-zero return code after a SIGPIPE.

New in LF - Terminal File Manager r20 (Jan 31, 2021)

  • (Breaking) A new mouse option is added to enable mouse events. This option is disabled by default to leave mouse events to the terminal. Also unbind mouse events when mouse is enabled should now show unknown mapping error in the message line.
  • (Fix) Newline characters in the output of % commands should no longer shift the content up which was a bug introduced in the previous release due to a fix to handle combining characters in texts.
  • (Fix) Redundant preview loadings for search and find commands are now avoided (by @neeshy).
  • (Fix) Scanner now only considers ascii characters for spaces and digits which should avoid unexpected splits in some non-ascii inputs.

New in LF - Terminal File Manager r19 (Jan 25, 2021)

  • Changes have been made to enable the use of true image previews (by @Naheel-Azawy, @Provessor, and @neeshy). See the documentation and the previews wiki page for more information.
  • (Breaking) Non-zero exit codes should now make the preview volative to avoid caching. Programs that may not behave well to SIGPIPE may trigger this behavior unintentionally. You may trap SIGPIPE in your preview script to get the old behavior.
  • (Breaking) Preview scripts should now get arguments as the current file path, width, height, horizontal position, and vertical position. Note that height is still passed as an argument but its order is changed.
  • (New) A new cleaner option is added to set the path to a file to run when the preview is changed.
  • (Fix) Redundant preview loadings for movement commands are now avoided.
  • (Breaking) Expansion %w in promptfmt is changed back to its old behavior without a trailing separator (by @SPFabGerman). Instead, a new expansion %d is added with a trailing separator. Expansion %w is meant to be used to display the current working directory, whereas %d%f is meant to be used to display the current file.
  • (Breaking) A new LF_COLORS environment variable is now checked to be able to make lf specific configurations. Also, environment variables for colors are now read cumulatively starting from the default behavior (i.e. default, LSCOLORS, LS_COLORS, LF_COLORS).
  • (New) Full path, dir name, file name, and base name matching patterns are added to colors and icons (by @SPFabGerman and @mohkale). See the updated documentation for more information.
  • (New) Powershell keybinding example has been added to etc/lfcd.ps1 (by @sitiom).
  • (New) Powershell autocompletion script has been added as etc/lf.ps1 (by @sitiom).
  • (New) Multiple -command flags can now be given (by @kmarius).
  • (New) Basic mouse support has been added. Mouse buttons (e.g. <m-1> for primary button, <m-2> for secondary button, <m-3> for middle button etc.) and mouse wheels (e.g. <m-up> for wheel up, <m-down> for wheel down etc.) can be used in bindings.
  • (New) Commands top and bottom are now allowed in cmap mappings in addition to movement commands.
  • (Fix) Extension sorting should now handle extensions with different lenghts properly (by @kmarius).
  • (Fix) Heuristic used to show info should now take into account number and icons options properly.
  • (Fix) Environment variable id is now set to process id instead to avoid two clients getting the same id when launched at the same time (by @edganiukov).
  • (Fix) Unicode combining characters in texts should now be displayed properly.

New in LF - Terminal File Manager r18 (Dec 20, 2020)

  • Changelog:
  • (Breaking) Options ignorecase and ignoredia should now also apply to sorting in addition to searching.
  • (Breaking) Option ignoredia is now enabled by default to be consistent with ignorecase.
  • (Breaking) Terminal UI library tcell has been updated to version 2 (by @Provessor).
  • This version highlights adding 24-bit true colors on Windows and better support for colors on Unix.
  • Variable TCELL_TRUECOLOR is not required anymore so that terminal themes and true colors can be used at the same time.
  • (Breaking) Deprecated option color256 is now removed.
  • (New) Two new command line commands cmd-menu-complete and cmd-menu-complete-back are added for completion menu cycling (by @tarasyarema).
  • (New) Simple configuration files for Windows etc/lfrc.cmd.example and etc/lfrc.ps1.example are now added to the repository.
  • (New) Bash completion script etc/lf.bash is now added to the repository.
  • (New) Time formats in info option should now show year instead of hh:mm for times older than the current year.
  • (Fix) Signals SIGHUP, SIGQUIT, and SIGTERM should now quit the program properly.
  • (Fix) Setting info to an empty value should not print errors to the log file anymore.
  • (Fix) Natural sorting is optimized to work faster using less memory.
  • (Fix) Files and directories that incorrectly show modification times in the future (e.g. Linux builtin exFAT driver) should not cause cpu hogging anymore.
  • (Fix) Keybinding example in etc/lfcd.fish is now updated to avoid hanging in shell commands (by @crivaronicolini).
  • (Fix) Using bottom command immediately after startup should not crash the program anymore.
  • (Fix) Changing sorting options during sorting operations should not crash the program anymore.
  • (Fix) Output in piping shell commands now uses lazy redrawing so that verbose commands should not block the program anymore.
  • (Fix) Server is now daemonized properly on Unix so that it is not killed anymore when the controlling terminal is killed (by @neeshy).

New in LF - Terminal File Manager r17 (Oct 10, 2020)

  • Terminal UI library has been changed from termbox-go to tcell as the former has been unmaintained for a while (by @Provessor). Some of the changes are listed below, though the list may not be complete as this is a relatively big change:
  • (Breaking) Some special key names are changed to be consistent with tcell documentation (e.g. <bs> renamed to <backspace>). On the other hand, there are also additional keybindings that were not available before (e.g. <backtab> for Shift+Tab). You can either check tcell documentation for the list of keys or hit the key combination in lf to read the name of the key from the unknown mapping error message.
  • (New) 24-bit true colors are now supported on unix systems. See the updated documentation for more information. There is an ongoing version 2.0 development in tcell that we plan to switch once it becomes stable and it is expected to add support for true colors in Windows console as well.
  • (New) Additional platforms are now supported and the list of pre-built binaries provided are updated accordingly.
  • (Fix) Wide characters are now displayed properly in Windows console.
  • (New) Descriptions of commands and options are now added to the documentation. Undocumented behaviors should now be considered documentation bugs and they can be reported.
  • (New) Keys are now evaluated with a lazy drawing approach so push commands to set the prompt and pasting something to the command line should feel instantaneous.
  • (Fix) Corrupted history files should no longer crash the program.
  • (Fix) Server now only listens connections from localhost on Windows so firewall permission is not required anymore (by @spapas).
  • (Fix) Push commands that change the operation mode should now work consistently as expected.
  • (Fix) Loading directories should now display the previous file list if any, which was a regression due to a bug fix in a previous release.
  • (Fix) Piping shell commands should now automatically update previews when necessary.
  • (Fix) Errors from failed shell commands should not be overwritten by file information anymore.
  • (Fix) Server can now also be started automatically when the program is called with a relative path, which was a regression due to a bug fix in a previous release (by @Provessor).
  • (Fix) Environment variables are now exported automatically for preview scripts without having to call a shell command first (by @gotroyb127).
  • (Fix) Escape key can now be bind to a key for when it is used on it own and not to escape a keybind combination, which was a regression due to a bug fix in a previous release (by @YerinAlexey).
  • (Fix) Changing option hiddenfiles should now automatically trigger directory updates when necessary.

New in LF - Terminal File Manager r16 (Aug 20, 2020)

  • (New) Option values are now available in shell commands as environmental variables with a lf_ prefix (e.g. $lf_hidden, $lf_ratios) (by @YerinAlexey).
  • (Fix) Directories containing internal Windows links that shows permission denied errors should now display properly.

New in LF - Terminal File Manager r15 (Jul 25, 2020)

  • (Breaking) Command toggle does not move the selection down anymore. Default binding for <space> is now assigned to :toggle; down instead to keep the default behavior same as before.
  • (Breaking) Expansion %w in option promptfmt should now have a trailing slash. Default value of promptfmt is now changed accordingly. The default value should not display double slashes in the root directory anymore.
  • (Breaking) Key <esc> is now used as the escape key. It should not display an error message when used to cancel a keybinding menu as before. However, it is not possible to bind <esc> key to another command anymore.
  • (New) Symbolic link destinations are now shown in the bottom status line (by @wedens).
  • (New) A new hiddenfiles option which takes a list of globs is implemented to customize which files should be hidden (by @adamtabrams).
  • (New) Expressions consisting of multiple commands can now use counts (by @gotroyb127).
  • (New) Moving operations now fall back to copy and then delete strategy automatically for cross-device linking.
  • (New) Option hidden now works in windows.
  • (New) Command toggle can now take optional arguments to toggle given names instead of the current file (by @gotroyb127).
  • (New) A new option truncatechar is implemented to customize the truncate character used in long filenames (by @YerinAlexey).
  • (New) Copy and move operations now display a success message when they are finished (by @YerinAlexey).
  • (Fix) SIGHUP and SIGTERM signals are now properly handled. Log files should not remain when terminals are directly closed (by @Provessor).
  • (Fix) Option info should now align properly when used with option number and relativenumber (by @gotroyb127).
  • (Fix) Tilde ~ is now only expanded at the beginning of path for cd and select commands (by @gotroyb127).
  • (Fix) Command rename should now work properly with names differing only cases on case-insensitive filesystems.
  • (Fix) Tab characters are now expanded to spaces in windows.
  • (Fix) Option incsearch now respects the search direction accordingly.
  • (Fix) Server is now started in the home folder and will not hold mounted filesystems busy (by @shabahengam).
  • (Fix) Trailing spaces in configuration files do not confuse the parser anymore.
  • (Fix) Termbox version is updated to fix a keyboard problem in FreeBSD (by @doronbehar).
  • (Fix) Async commands do not leave zombie processes anymore (by @gotroyb127).
  • (Fix) Option hidden now works consistently as expected when set at the initial launch.
  • (Fix) Command rename should now select the new file after the operation.
  • (Fix) Command rename should now handle absolute paths properly.
  • (Fix) Command select should now work properly on loading directories. Custom commands that select a file after an operation should now work properly without an explicit load operation beforehand.
  • (Fix) Previous errors in the bottom message line should not persist through the prompt usage anymore.
  • (Fix) Command push should not fail with non-ascii characters anymore.
  • (Fix) Command select should not fail with broken links anymore.
  • (Fix) Command load should not clear toggled broken links anymore.
  • (Fix) Copy and move operations do not overwrite broken links anymore.

New in LF - Terminal File Manager r14 (Apr 13, 2020)

  • (New) Command delete now shows a prompt with the current filename or the number of selected files (by @Limero).
  • (New) Backslash can now be escaped with a backslash even without the quotes.
  • (New) A new desktop entry file lf.desktop is added (by @doronbehar).
  • (New) Three new sortby types are added, access time (i.e. atime), change time (i.e. ctime), and extension (i.e. ext). New default keybindings are added for these sorts correspondingly (i.e. sa, sc, and se). Option info can now also contain atime and ctime values accordingly (by @kmwenja).
  • (New) A new shell completion for zsh is added to etc/lf.zsh (by @JurisMajors).
  • (New) Command delete now works asynchronously and shows the progress (by @JurisMajors).
  • (New) Completion and directory change scripts are added for csh and tcsh as etc/lf.csh and etc/lfcd.csh respectively (by @nereusx).
  • (New) A new special command on-cd is added to run a shell command when the directory is changed. See the documentation for more information. (by @ath3).
  • (Fix) Some directories with special permissions that previously show a file icon now shows a directory icon properly (by @Naheel-Azawy).
  • (Fix) Script etc/lfcd.cmd can now also change to a different volume drive (by @YongJieYongJie).
  • (Fix) The proper use of setsid for opening files is now added to the example configuration and the documentation (by @LukeSmithxyz).
  • (Fix) Home directory abbreviation ~ is now only applied properly to paths starting with the home directory (by @arolle).
  • (Fix) Command rename now cancels the operation if old and new paths are the same (by @Limero).
  • (Fix) Autocompletion and word movements should now work properly with all unicode characters.
  • (Fix) Command shell-pipe which was broken some time ago should now work as expected.
  • (Fix) Variable $TERM can now work with values containing tmux with custom $TERMINFO values (by @doronbehar). @doronbehar now maintains a termbox fork for lf (https://github.com/doronbehar/termbox-go).

New in LF - Terminal File Manager r13 (Jul 22, 2019)

  • (New) A new wrapscroll option is added to wrap top and bottom while scrolling (by @Limero).
  • (New) Movement commands up, down and their variants, updir, and open are now allowed in cmap mappings.
  • (New) Two new glob-select and glob-unselect commands are added to use globbing for toggling files (by @JurisMajors).
  • (New) A new mark-remove (default ") command is added to remove a mark (by @JurisMajors).
  • (New) An experimental icon support is added with icon option. See the wiki page for more details.
  • (New) A new builtin rename command is added (by @JurisMajors).
  • (Fix) Command cmd-history-next now remains in command mode after the last item (by @Limero).
  • (Fix) Command select does not change directory anymore when used on a directory.
  • (Fix) Working directory is now changed to the first argument when it is a directory.
  • (Fix) Option ratios is now checked before preview to avoid crashes (by @ath3).
  • (Fix) Previous error messages are now cleared after successful commands (with @JurisMajors).
  • (Fix) Symlink to directories are now colored as symlinks (by @nvllsvm).
  • (Fix) Permission errors for directories are now displayed properly instead of showing empty (by @JurisMajors).

New in LF - Terminal File Manager r11 (Mar 4, 2019)

  • (Breaking) Copy and move operations are now implemented as builtins instead of using the underlying shell primitives (i.e. cp and mv). Users who want the old behavior can define a custom paste command. See the updated documentation for more information. Please report bugs regarding this change.
  • (New) Copy and move operations now run asynchronously and the progress is shown in the bottom ruler.
  • (New) Two new commands echomsg and echoerr are added to print a message to the message line and to the log file at the same time.
  • Terminal initialization errors are now shown in the terminal instead of the log file.
  • Preview messages (i.e. empty, binary, and loading...) are now shown with reverse attribute.

New in LF - Terminal File Manager r10 (Feb 11, 2019)

  • (Breaking) Ability to map normal commands in cmap is removed. This has caused a number of bugs in the previous release. A different mechanism for a similar functionality is planned.
  • (New) A new command line flag -command has been added to execute a command on client initialization (by @TeddyDD).
  • (New) A select command is now executed after initialization if the first command line argument is a file.
  • (New) A prompting mechanism has been added to the builtin delete command.
  • (Fix) Input and output in shell-pipe commands were broken with cmap patch. This should now work as before.
  • (Fix) Some push commands were broken with cmap patch and sometimes ignored command line mode for some keys to execute as in normal mode. This should now work as before.
  • (Fix) Read and shell commands should now also work when typed manually (e.g. typing :shell should switch the prefix to $).
  • (Fix) Configuration files are now read after initialization.
  • (Fix) Background colors are removed from defaults to avoid confusion with selection highlighting.

New in LF - Terminal File Manager r9 (Feb 1, 2019)

  • (Breaking) Default number of colors is set to 8 to have better defaults in some terminals. A new option color256 is added to use 256 colors instead. Users who want the old behavior should enable this option in their configuration files.
  • (New) A new incsearch option is added to enable incremental matching while searching.
  • (New) Two new options ignoredia and smartdia are added to ignore diacritics in latin letters for search and find (by @martinlebeda).
  • (New) A new builtin delete command is added for file deletion (by @Kallinteris-Andreas). This command is not assigned to a key by default to prevent accidental deletions. In the future, a prompting mechanism may be added to this command for more safety.
  • (New) Normal mode commands can now be used in cmap which can be used to immediately finish command mode and execute a normal command afterwards.
  • (New) A new fish completion script is added to etc folder (by @TeddyDD).
  • (New) Two new options number and relativenumber are added to enable line numbers in directories (by @tomarticek).
  • (Fix) Autocompletion should now show only a single match for redefined builtin commands.

New in LF - Terminal File Manager r8 (Aug 30, 2018)

  • (New) Four new commands find, find-back, find-next, and find-prev are added to implement file finding. Two options anchorfind and findlen are added to customize the behavior of these commands.
  • (New) A new quit command is added to the server protocol to quit the server.
  • (New) A new $LF_LEVEL variable is added to show the nesting level.
  • (Fix) Commands load and reload now work properly when the current directory is deleted. Also lf does not start in deleted directories anymore.
  • (Fix) Server is now started as a detached process in windows so its lifetime is not tied to the command line window anymore.
  • (Fix) Clients now try to reconnect to the server at startup with exponentially increasing intervals when they fail. This is to avoid connection failures due to server not being ready for the first client that automatically start the server.
  • (Fix) The old index is now kept when the current selection is deleted.
  • (Fix) Command shell-pipe now triggers load instead of reload.
  • (Fix) Error messages are now more informative when lf fails to start due to either $HOME or $USER variables being empty or not set.
  • Searching for the next/prev item is now based on the direction of the initial search.

New in LF - Terminal File Manager r6 (Jun 29, 2018)

  • (Breaking) Commands yank, delete, and put are renamed to copy, cut, and paste respectively. In the example configuration, remove command is renamed to delete.
  • (Breaking) Special command open-file to configure file opening is renamed to open.
  • (New) A new option shellopts is added to be able to pass command line arguments to the shell interpreter (i.e. {shell} {shellopts} -c {cmd} -- {args}) which is useful to set safety options for all shell commands (i.e. sh -eu ..). See the example configuration file for more information.
  • (New) Special keys <home>, <end>, <pgup>, and <pgdn> are mapped to top, bottom, page-up, and page-down commands respectively by default.
  • (New) A new command source is added to read a configuration file.
  • (New) Support is added to read a system-wide configuration file on startup located in /etc/lfrc on unix and C:ProgramDatalflfrc on windows. Documentation is updated to show the locations of all configuration files.
  • (New) Environmental variables used for configuration (i.e. $EDITOR, $PAGER, $SHELL) are set to their default values when they are not set or empty and they are exported to shell commands.
  • (New) A new environmental variable $OPENER is added to configure the default file opener using the previous default values and it is exported to shell commands.
  • (Fix) Executable completion now works on windows as well.

New in LF - Terminal File Manager r5 (Jun 22, 2018)

  • (New) Server is automatically restarted on startup if it does not work anymore.
  • (New) A new option period is added to set time duration in seconds for periodic refreshes. Setting the value of this option to zero disables periodic refreshes which is the default behavior.
  • (New) A new command load is added to refresh only modified files and directories which is more efficient than reload command.
  • (Fix) cmd-word-back does not change the command line anymore.
  • (Fix) Modified files and directories are automatically detected and refreshed when they are loaded from cache.
  • (Fix) All clients are now refreshed when put command is used.
  • (Fix) Correct hidden parent is selected when hidden option is changed.
  • (Fix) Preview is properly updated when hidden option is changed.