pub trait Plugin: Send {
Show 27 methods
// Required methods
fn id(&self) -> &str;
fn name(&self) -> &str;
fn init(&mut self, ctx: &mut PluginContext) -> Result<(), Box<dyn Error>>;
// Provided methods
fn handle_key(&mut self, _key: KeyEvent) -> bool { ... }
fn handle_mouse(&mut self, _event: &MouseEvent) -> bool { ... }
fn render(&self, _f: &mut Frame<'_>, _area: Rect) { ... }
fn tick(&mut self) { ... }
fn on_focus(&mut self) { ... }
fn on_blur(&mut self) { ... }
fn on_theme_change(&mut self, _theme: &Theme) { ... }
fn on_user_update(&mut self, _user: Option<&User>) { ... }
fn status_hints(&self) -> Vec<(String, String)> { ... }
fn commands(&self) -> Vec<PluginCmdItem> { ... }
fn handle_palette_command(&mut self, _index: usize) { ... }
fn on_plugin_message(&mut self, _from: &str, _action: &str, _data: &str) { ... }
fn shutdown(&mut self) { ... }
fn binary_path(&self) -> Option<&Path> { ... }
fn is_alive(&self) -> bool { ... }
fn is_ready(&self) -> bool { ... }
fn has_dim_overlay(&self) -> bool { ... }
fn can_background(&self) -> bool { ... }
fn set_capabilities(&mut self, _caps: Vec<String>) { ... }
fn persistent(&self) -> bool { ... }
fn set_persistent(&mut self, _persistent: bool) { ... }
fn take_pending_esc_result(&mut self) -> Option<bool> { ... }
fn process_pending_requests(
&mut self,
_db: &mut dyn DbAccess,
_auth: Option<&Arc<dyn AuthHandle>>,
) { ... }
fn drain_pending_launch(&mut self) -> Option<(String, String)> { ... }
}Required Methods§
fn id(&self) -> &str
fn name(&self) -> &str
fn init(&mut self, ctx: &mut PluginContext) -> Result<(), Box<dyn Error>>
Provided Methods§
fn handle_key(&mut self, _key: KeyEvent) -> bool
fn handle_mouse(&mut self, _event: &MouseEvent) -> bool
fn render(&self, _f: &mut Frame<'_>, _area: Rect)
fn tick(&mut self)
fn on_focus(&mut self)
fn on_blur(&mut self)
fn on_theme_change(&mut self, _theme: &Theme)
fn on_user_update(&mut self, _user: Option<&User>)
fn status_hints(&self) -> Vec<(String, String)>
Sourcefn commands(&self) -> Vec<PluginCmdItem>
fn commands(&self) -> Vec<PluginCmdItem>
Palette commands that this plugin registers (category, label).
Sourcefn handle_palette_command(&mut self, _index: usize)
fn handle_palette_command(&mut self, _index: usize)
Called when a palette command from this plugin is selected.
index is the position in commands().
Sourcefn on_plugin_message(&mut self, _from: &str, _action: &str, _data: &str)
fn on_plugin_message(&mut self, _from: &str, _action: &str, _data: &str)
Called when a plugin-to-plugin message arrives.
Sourcefn shutdown(&mut self)
fn shutdown(&mut self)
Called before the plugin is unloaded (hot-reload or app exit).
The plugin should flush state, close handles, and prepare to be dropped.
For IPC plugins this sends Shutdown (non-blocking) — the child process
is killed later in Drop/kill() when the channel senders are dropped.
Sourcefn binary_path(&self) -> Option<&Path>
fn binary_path(&self) -> Option<&Path>
Return the filesystem path to this plugin’s binary, if it runs as an
external process. None for in-process plugins. Used by the hot-reload
mechanism to detect when the binary has been updated on disk.
Sourcefn is_alive(&self) -> bool
fn is_alive(&self) -> bool
Whether the plugin process is still running.
Returns true for in-process plugins.
IPC plugins override this to check the child process.
Sourcefn is_ready(&self) -> bool
fn is_ready(&self) -> bool
Whether the plugin has completed initialization and is ready to render.
In-process plugins are ready immediately. IPC plugins become ready once
the child process responds to the Init message.
Sourcefn has_dim_overlay(&self) -> bool
fn has_dim_overlay(&self) -> bool
Whether the plugin’s last render included a dim overlay (search palette, dialog, etc.). The host uses this to extend the dim to the status bar.
Sourcefn can_background(&self) -> bool
fn can_background(&self) -> bool
Whether the plugin supports running in the background when the user
presses Esc (e.g., audio players that should keep playing).
Default is false. Override to return true for background-capable plugins.
Sourcefn set_capabilities(&mut self, _caps: Vec<String>)
fn set_capabilities(&mut self, _caps: Vec<String>)
Set runtime capabilities (e.g. "background") declared in the plugin manifest.
Default is no-op; IPC plugins override this to store the value.
Sourcefn persistent(&self) -> bool
fn persistent(&self) -> bool
Whether this plugin should stay loaded when the user presses Esc.
Persistent plugins are blurred but not shut down, keeping their
palette entries and background processes alive.
Default is false. Override to return true for plugins that
must not be unloaded (e.g., the registry plugin).
Sourcefn set_persistent(&mut self, _persistent: bool)
fn set_persistent(&mut self, _persistent: bool)
Mark this plugin as persistent. Default is no-op; IPC plugins override this to store the value.
Sourcefn take_pending_esc_result(&mut self) -> Option<bool>
fn take_pending_esc_result(&mut self) -> Option<bool>
Check if a pending Esc key response has been resolved.
Returns Some(consumed) if resolved, None if still pending
or no Esc was sent.
IPC plugins override this; in-process plugins don’t need it.
Sourcefn process_pending_requests(
&mut self,
_db: &mut dyn DbAccess,
_auth: Option<&Arc<dyn AuthHandle>>,
)
fn process_pending_requests( &mut self, _db: &mut dyn DbAccess, _auth: Option<&Arc<dyn AuthHandle>>, )
Process any pending requests from the plugin (e.g. DB read/write,
authentication). Called once per main loop iteration.
The default implementation is a no-op. IPC plugins override this
to forward PluginRequest variants to the host.
Sourcefn drain_pending_launch(&mut self) -> Option<(String, String)>
fn drain_pending_launch(&mut self) -> Option<(String, String)>
Drain any pending launch request from this plugin.
Returns Some((id, name)) if a launch was requested, None otherwise.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".