Skip to main content
Functional plugins extend Yazi’s capabilities by adding new commands, integrating external tools, and automating workflows.

What Are Functional Plugins?

Functional plugins are Lua modules with an entry() function that executes when called. They can:
  • Add interactive commands
  • Integrate with external tools
  • Automate file operations
  • Process selections
  • Show custom dialogs

Basic Structure

Example: Directory Jumping with Zoxide

Let’s examine Yazi’s zoxide integration:
Bind it in keymap.toml:

Example: Fuzzy Finding with FZF

Integrate fzf for file selection:

Example: Archive Extraction

A plugin that extracts archives:
Call from command line:

Plugin Job Object

The job parameter contains:

Interactive UI

User Input

Confirmation Dialog

Hide UI for External Commands

When running interactive external commands:

State Management

Use ya.sync() for persistent state:

Event Subscription

Listen to Yazi events:

Remote Commands

Register commands callable from CLI:

File Operations

Processing Selection

Batch Operations

Running Commands

Synchronous

Asynchronous

Streaming Output

Best Practices

Notify users of success/failure:
Don’t block the UI:
Check before operating:
Always kill child processes:

Next Steps

Previewers

Create custom file previewers

Fetchers

Build metadata fetchers