lla - Advanced File Listing Utility
lla is a high-performance, extensible alternative to the traditional ls command, written in Rust. It offers enhanced functionality, customizable output, and a plugin system for extended capabilities.

Features
- Efficient file listing: Optimized for speed, even in large directories
- Multiple view modes:
- Default view
- Long format (
-l) - Tree view (
-t) - Recursive listing (
-R)
- Advanced sorting:
- Alphabetical (default)
- File size (
-s size) - Modification date (
-s date)
- Flexible filtering: Filter by filename or extension (
-f, --filter) - Customizable recursion: Set maximum depth for subdirectory traversal (
-d, --depth) - Extensible plugin system: Develop and integrate custom functionality
Installation
From crates.io
For NetBSD users
(we see you, netbsd. we appreciate you.)
how to play
lla [OPTIONS] [DIRECTORY]
Core Options
-l, --long: Use long listing format-R, --recursive: List subdirectories recursively-t, --tree: Display files in a tree structure-s, --sort <CRITERIA>: Sort by "name", "size", or "date"-f, --filter <PATTERN>: Filter files by name or extension-d, --depth <DEPTH>: Set maximum recursion depth
Plugin Management
--enable-plugin <NAME>: Enable a specific plugin--disable-plugin <NAME>: Disable a specific plugin--plugins-dir <PATH>: Specify custom plugins directory
Utility Commands
lla install: Install plugins--github <URL>: Install from a GitHub repository--dir <PATH>: Install from a local directory
lla list-plugins: Display all available pluginslla init: Initialize configuration file
Configuration
lla uses a TOML configuration file located at ~/.config/lla/config.toml. Initialize with default settings:
Example configuration:
= "name"
= "default"
= ["git_status", "file_hash"]
= "/home/user/.config/lla/plugins"
= 3
Install Plugins
You can instll plugins from a local directory or from a GitHub repository.
From GitHub
From Local Directory
You can install official plugins by running the following command:
Plugin Development
Develop custom plugins to extend lla's functionality. Plugins are dynamic libraries that implement the Plugin trait from the lla_plugin_interface crate.
Plugin Structure
-
Create a new Rust library:
-
Add dependencies to
Cargo.toml:[] = { = "/path/to/lla_plugin_interface" } [] = ["cdylib"] -
Implement the
Plugintrait:
use ;
;
declare_plugin!;
-
Build your plugin:
-
Install the plugin:
Plugin Interface
The lla_plugin_interface crate provides the following key components:
Plugintrait: Core interface for plugin functionalityEntryDecoratortrait: Methods for decorating and formatting file entriesDecoratedEntrystruct: Represents a file entry with metadata and custom fields
Refer to the lla_plugin_interface documentation for detailed API information.
Examples
# Long format, sorted by size, showing only .rs files, max depth 3
# enable git status plugin
# disanble git status plugin
Contributing
Contributions are welcome! Please feel free to submit pull requests, report bugs, and suggest features.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.