lsicon

January 8, 2026 ยท View on GitHub

Joknarf Tools Build and Release Packages bash bash Licence Packages

lsicon

Simplest and fastest ls command enhancer in less than 20K (only uses bash/ls/tree/awk)

image image

Much faster than other "modern" tools (here /usr containing ~150000 files):

ToolCommandTime (wsl ubuntu)Time (centos9)
tty nottytty notty
GNU lsls -lR --color /usr 10.250s 6.001s2.011s 1.049s
lsiconls+ -lR /usr 10.878s 6.096s3.202s 1.269s
lsdlsd -lR /usr 27.941s 13.698s8.564s 2.627s
ezaeza --icons -lR /usr31.340s 28.509s8.795s 4.751s

features

  • all GNU ls features except
    • -T displays tree view
    • currently fixed time format +%y-%m-%d %H:%M
  • display colors/icons according to file types/extensions/permissions
  • display symlink target according to target file types/permissions
  • display broken symlink
  • highlight current user/groups and permissions
  • dir/files tree with -T
  • easy customization for colors/icons/extensions

Prerequisites

  • GNU ls
    • on BSD/MacOS/Alpine coreutils package needed
  • GNU awk or mawk
    • on BSD/MacOS/Alpine gawk or mawk package needed
  • tree >= 1.6.0 (for tree view only)
  • bash
  • Nerd Font in your Terminal

Install

You can use a plugin manager, like the famous joknarf/thefly

. <(curl https://raw.githubusercontent.com/joknarf/thefly/main/thefly) install
fly add joknarf/lsicon

or Use your prefered method according to your OS:

brew install joknarf/tools/lsicon
sudo dnf install https://github.com/joknarf/lsicon/releases/latest/download/lsicon.rpm
curl -OL https://github.com/joknarf/lsicon/releases/latest/download/lsicon.deb
sudo dpkg -i lsicon.deb
curl -OL https://github.com/joknarf/lsicon/releases/latest/download/lsicon.apk
sudo apk add --allow-untrusted lsicon.apk
curl -OL https://github.com/joknarf/lsicon/releases/latest/download/lsicon.pkg
sudo installer -pkg lsicon.pkg -target /

or just clone the repo, and put ls+* files in dir in your PATH, or just create a link to ls+

git clone https://github.com/joknarf/lsicon

Usage

The lsicon command ls+ is used with exactly same options as GNU ls, except the -T or --tree will display directory/files tree.

Additional parameters for ls+ tree (ls+ -T|--tree):

  • -P limit files matching pattern for tree view
  • -L limit tree depth for tree view
  • -f full file path in tree
  • --prune when -I or -P hide directories without matching entries
ls+
ls+ -alrt
ls+ -Talrt -P '*.py|*.css' --prune
...

You may want to replace the ls command with ls+ using:

alias ls='ls+'

By default with stdout not a tty, ls+ falls back to ls command, if want to pipe to pager (less...) with icons/colors:

ls+ --color |less -RESX

Customize

You can customize all icons association :

  • editing ls+.icons
  • creating a ~/.config/ls+/icons file
  • format of file : <icon> .<ext> [.<ext>...]

You can customize all colors association :

  • editing ls+.colors
  • creating a ~/.config/ls+/colors file
  • format of file : <colorname> .<ext> [.<ext>...]

You can customize all theme colors :

  • editing ls+.theme
  • creating a ~/.config/ls+/theme file
  • format of file : <colorname> <r;g;b>
  • creating an empty theme, will use standard 16 colors