Lf Versions Save

Terminal file manager

r32

3 weeks ago

Changelog

  • (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).

r31

7 months ago

Changelog

  • (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).

r30

11 months ago

Changelog

  • (New) A new builtin command jumps is addded to display the jump list (#1233) (by @joelim-work).
  • (New) A new possible field filter is added to ruler option to display the filter indicator (#1223) (by @joelim-work).
  • (Fix) Broken mappings for bottom command due to recent changes are fixed (#1240) (by @joelim-work).
  • (Fix) Selecting a file does not scroll to bottom anymore (#1222) (by @joelim-work).
  • (Fix) Broken builds on some platforms due to recent changes are fixed (#1168).

r29

11 months ago

Changelog

  • (Breaking) Three new options cursoractivefmt, cursorparentfmt and cursorpreviewfmt have been added (#1086 and #1106) (by @ilyagr). The default style for the preview cursor is changed to underline. You can revert back to the old style with set cursorpreviewfmt "\033[7m".
  • (Breaking) An alternative boolean option syntax set option true/false is added in addition to the previous syntax set option/nooption (#758). If you have set option true in your configuration, then there is no need for any changes as it was already working as expected accidentally. If you have set option false in your configuration, then previously it was enabling the option instead accidentally but now it is disabling the option as intended. Any other syntax including set option on/off are now considered errors and result in error messages. Boolean option toggling set option! remains unchanged with no new alternative syntax added.
  • (Breaking) Cursor is now placed at the file extension by default in rename prompts (#1162) (by @rrveex).
  • (Breaking) The environment variable VISUAL is checked before EDITOR for the default editor choice (#1197) (by @rumaks-xyz).
  • (New) Mouse wheel events with the Control modifier have been bound to scrolling by default (#1051) (by @ilyagr).
  • (New) Option values for tagfmt and errorfmt have been simplified to be able to avoid the reset sequence (#1086) (by @ilyagr).
  • (New) Two default command line bindings for <down> and <up> have been added for cmd-history-next and cmd-history-prev respectively (#1112) (by @Limero).
  • (New) A new command invert-below is added to invert all selections below the cursor (#1101) (by @ilyagr).
  • (New) Two new commands maps and cmaps have been added to display the current list of bindings (#1146) (#1201) (by @jackielii and @ilyagr).
  • (New) A new option numberfmt is added to customize line numbers (#1177) (by @joelim-work).
  • (New) A new environment variable lf_count is now exported to use the count in shell commands (#1187) (by @joelim-work).
  • (New) A new environment variable lf is now exported to be used as the executable path (#1176) (by @ilyagr).
  • (New) An example mkdir binding is added to the example configuration (#1188) (by @ilyagr).
  • (New) An example binding to show execution results is added to the example configuration (#1188) (by @ilyagr).
  • (New) Commands top and bottom now accepts counts to move to a specific line (#1196) (by @joelim-work).
  • (New) A new option ruler is added to customize the ruler information with a new addition for free disk space (#1168 and #1205) (by @rrveex and @joelim-work).
  • (Fix) Example lfcd files have been made safer to be able to alias the commands as lf (#1049) (by @ilyagr).
  • (Fix) Backspace should not exit from rename: mode anymore (#1060) (by @ilyagr).
  • (Fix) Preview is now refreshed even if the selection does not change (#1074) (by @joelim-work).
  • (Fix) Stale directory cache entry is now deleted during rename (#1138) (by @joelim-work).
  • (Fix) File information is now updated properly after reloading (#1149) (by @joelim-work).
  • (Fix) Window widths are now calculated properly when drawbox is enabled (#1150) (by @joelim-work).
  • (Fix) Line number widths are now calculated properly when there are exactly 10 entries (#1151) (by @joelim-work).
  • (Fix) Preview is not redrawn in async shell commands (#1164) (by @joelim-work).
  • (Fix) A small delay is added before showing loading text in preview pane to avoid flickering (#1154) (by @joelim-work).
  • (Fix) Hard-coded box drawing characters are replaced with Tcell constants to enable the fallback mechanism (#1170) (by @joelim-work).
  • (Fix) Option relativenumber now shows zero in the current line (#1171) (by @joelim-work).
  • (Fix) Completion is not stuck in an infinite loop anymore when a match is longer than the window width (#1183) (by @p-ouellette).
  • (Fix) Completion now inserts the longest match even if there is no word before the cursor (#1184) (by @p-ouellette).
  • (Fix) Command doc should now work even if lf is not in the PATH variable (#1176) (by @ilyagr).
  • (Fix) Directory option changes should not crash the program anymore (#1204) (by @joelim-work).
  • (Fix) Option selmode is now validated for the accepted values (#1206) (by @joelim-work).

r28

1 year ago

Changelog

  • (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).

r27

2 years ago

Changelog

  • (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.

r26

2 years ago

Changelog

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

r25

2 years ago

Changelog

  • (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).

r24

2 years ago

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.

r23

2 years ago

Changelog

  • (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. \033[K) used in some command outputs should now be ignored properly.