6 个版本

0.8.2 2024年6月5日
0.8.1 2024年2月10日
0.8.0 2023年10月18日
0.7.2 2023年2月28日
0.1.0 2022年12月19日

#116GUI

Download history 151/week @ 2024-06-05 2/week @ 2024-06-12

每月 316 次下载

GPL-3.0 许可

15KB
179

Findex 插件系统指南

本指南解释了 findex 插件系统,供用户和开发者使用。

对于用户

  • 下载插件。如果它没有编译,请使用 cargo build --release 以发布模式编译
  • 转到 target/release 文件夹。
  • 您将看到一个扩展名为 .so 的文件。将其复制到方便的位置。
  • 将以下行添加到您的 settings.toml 并编辑它以使 findex 使用插件
PLUGIN = { path = "PLUGIN PATH", prefix = "OPTIONAL USER DEFINED PREFIX", keyboard_shortcut = "OPTIONAL USER DEFINED KEYBOARD SHORTCUT", config = {} }
属性 描述
path 插件 .so 文件的路径
prefix 可选的用户定义前缀,findex 将使用此前缀而不是插件中指定的前缀。
config 插件配置。请参阅插件的文档以获取更多信息。
keyboard_shortcut 可选的自定义键盘快捷键,用于触发插件(将插件前缀插入到搜索框中)。必须是一个有效的 Gtk 加速键。
  • 有关更多信息,请参阅您使用的插件的文档。

注意:始终确保您使用的插件与您使用的 Findex 版本兼容。

对于开发者

仅支持基于 Rust 的插件。

  • 首先创建一个 cdylib
  • findex-pluginabi_stable 添加为依赖项
  • 将以下代码添加到 src/lib.rs
use findex_plugin::{define_plugin, FResult};
use abi_stable::std_types::*;

fn init(config: &RHashMap<RString, RString>) -> RResult<(), RString>  {
    // Set up your plugin using the config if necessary
    // Return RErr if something went wrong
    
    // Returning this indicates that the plugin initialization is successful
    ROk(())
}

fn handle_query(query: RStr) -> RVec<FResult> {
    let mut result = vec![];
    
    /* Do stuff here */
    
    RVec::from(result)
}

define_plugin!("prefix!", init, handle_query);
// or add the following if you want to have custom shortcut for triggering the plugin.
// The following sets the shortcut to Ctrl+Shift+P.
// define_plugin!("prefix!", "<Ctrl><Shift>P", init, handle_query);
  • 编辑此代码以创建您的插件。
  • 编写代码后,按照用户指南测试您的插件

说明

前缀

用于调用插件的查询处理程序。这是 define_plugin! 宏的第一个参数。用户可以通过提供自定义前缀来覆盖此值,如下所示

PLUGIN = { prefix = "custom_prefix!", path = "plugin_path", config = {} }

键盘快捷键

此功能用于通过快捷键调用插件的查询处理程序。这是宏 define_plugin! 的第二个参数。在底层,当按下时,Findex 会将插件的名称前缀插入到搜索框中。

PLUGIN = { keyboard_shortcut = "<Ctrl><Shift>P", path = "plugin_path", config = {} }

init 函数

init 函数是 Findex 在启动时调用的函数。插件可以使用它进行必要的初始化。不需要初始化的插件可以简单地返回而不执行任何操作。该函数的第一个参数是插件特定的配置。

用户可以提供以下格式的配置

PLUGIN = { path = "plugin_path", config = { key1 = "value1", key2 = "value2" } }

如你所见,每个键都将有一个字符串值。此函数是宏 define_plugin! 的第三个参数。

handle_query 函数

每次用户通过输入前缀调用插件时,都会调用此函数。第一个参数是用户在输入前缀之后输入的查询。该函数预期返回一个包含结果(如有)的 RVec。此函数是宏 define_plugin! 的第四个参数。

依赖关系

~4–13MB
~169K SLoC