#icons #ls #nerd-font #terminal #cli

app lsf

A beautiful ls replacement with Nerd Font icons, git status, and colors

1 stable release

5.1.0 Mar 7, 2026

#722 in Command line utilities

MIT license

110KB
2.5K SLoC

πŸ“‚ ls-f

GitHub release (latest by date) License: MIT GitHub Sponsors

ls-f is a modern, blazing-fast ls replacement. Originally a bash wrapper, it has been completely rewritten in Rust (v5.0.0) to provide superior performance, a native tree view, and zero runtime dependencies.

Example output screenshot


✨ Key Features

  • πŸš€ Performance: Native Rust implementation, matching GNU ls speed even with icons and colors.
  • 🎨 Nerd Font Icons: Rich set of icons for hundreds of file types and extensions.
  • 🌳 Tree View: Recursive tree visualization built-in via --tree.
  • 🌿 Git Integration: View file git status (staged, modified, etc.) with --git.
  • 🌈 ANSI Colors: Intelligent colorization for file types, permissions, and metadata.
  • βš™οΈ GNU Compatibility: Supports standard flags: -l, -a, -R, -h, -t, -S, -v, and more.
  • πŸ“¦ Zero Dependencies: Single static binaryβ€”no Bash or Python required for the Rust version.

πŸ“Š Benchmarks (v5.0.0)

lsf is optimized for speed. Benchmarked against GNU ls (coreutils 9.1) with --color=always.

Scenario GNU ls lsf Winner
Small dir (grid) 0.75 ms 0.65 ms πŸ† lsf
Large dir (7.3k files) 10.2 ms 12.9 ms πŸ† GNU ls
Long format (large dir) 18.4 ms 18.3 ms πŸ† lsf
Tree View (recursive) N/A 17.2 ms πŸ† lsf

Icons add ~0% measurable overhead to lsf. See BENCHMARKS.md for details.


πŸš€ Installation

Prerequisites

  • A Nerd Font must be set in your terminal for icons to render.

The Rust version (v5.0.0) provides the best performance and features.

git clone https://github.com/swadhinbiswas/ls-f.git
cd ls-f
make install  # Installs to /usr/local/bin

Or via cargo: cargo install --path .


πŸ“– Usage

Simply use lsf where you would use ls.

lsf              # Grid view with icons
lsf -la          # Long format, hidden files
lsf --tree       # Recursive tree view
lsf --git        # Show git status indicators
lsf --depth 2    # Limit tree/recursive depth

Setting up the Alias

Add this to your shell profile (.bashrc, .zshrc, or .config/fish/config.fish):

alias ls='lsf'

πŸ”§ Troubleshooting

  • Icons look like boxes? You need a Nerd Font. Check terminal font settings.
  • Command not found? Ensure /usr/local/bin or ~/.local/bin is in your $PATH.
  • Colors missing? Ensure your terminal supports ANSI colors. Try lsf --color=always.

Detailed guides:


🀝 Contributing

Contributions are welcome!

  1. Fork the repo.
  2. Create your branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add AmazingFeature').
  4. Push to the branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

πŸ’– Support the Project

If you find ls-f helpful, consider supporting its development:

  • GitHub Sponsors: swadhinbiswas
  • Binance Pay / Crypto: swadhinbiswas.cse@gmail.com

Recent Sponsors


πŸ“„ License

Distributed under the MIT License. See LICENSE for details.


Created by swadhinbiswas

Dependencies

~4.5–9.5MB
~194K SLoC