Concepts

Introduction to lla's plugin system and architecture. Learn how to extend lla's core functionality through plugins that can add new commands, modify displays, and integrate with external tools. Includes overview of installation, management, and updates.

Extending lla's Capabilities

lla supports plugins through a stable, message-based system. It’s version-independent and efficient.

Core Design

The plugin system uses Protocol Buffers for communication. This provides:

  • Isolated execution for stability and security
  • Seamless compatibility across lla versions
  • Consistent interface for developers
  • Sophisticated data handling capabilities

Getting Started

Install and manage plugins:

Note: You will need to install rust to be able to install plugins. you can install rust by running the following command:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install plugins
lla install --git https://github.com/user/plugin     # From Git repository
lla install --dir path/to/plugin                     # From local directory
 
# Manage your plugins
lla use                    # Interactive management
lla --enable-plugin name   # Enable functionality
lla --disable-plugin name  # Disable when needed

Plugin Organization

Plugin locations:

  • Standard path: ~/.config/lla/plugins
  • Custom location: Define via plugins_dir in config

Keeping Current

Update plugins:

lla update                 # Refresh all plugins
lla update plugin_name     # Update specific functionality

Enhancement Categories

Plugins can add:

  1. Visual Enhancements

    • Custom view formats
    • Enhanced information display
    • Visual styling options
  2. Tool Integration

    • Version control awareness
    • External tool connectivity
    • Custom file handlers
  3. Command Extensions

    • New functionality
    • Custom operations
    • Workflow automation

Plugin Management

Configure plugins:

# In ~/.config/lla/config.toml
 
# Active plugins
enabled_plugins = ["git_status", "file_hash"]
 
# Custom plugin location
plugins_dir = "~/custom/plugin/path"