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日 |
#116 在 GUI
每月 316 次下载
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-plugin
和abi_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