Skip to content

Chaoses-Ib/IbEverythingLib

Repository files navigation

IbEverythingLib

Rust binding for Everything's plugin SDK.

Features:

  • Load and save config with Serde
  • Make options pages GUI using Winio in MVU (Elm) architecture
  • Log with tracing

Example:

mod options;

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct Config {
    s: String,
}

pub struct App {
    config: Config,
}

impl PluginApp for App {
    type Config = Config;

    fn new(config: Option<Self::Config>) -> Self {
        Self {
            config: config.unwrap_or_default(),
        }
    }

    fn config(&self) -> &Self::Config {
        &self.config
    }

    fn into_config(self) -> Self::Config {
        self.config
    }
}

plugin_main!(App, {
    PluginHandler::builder()
        .name("Test Plugin")
        .description("A test plugin for Everything")
        .author("Chaoses-Ib")
        .version("0.1.0")
        .link("https://github.com/Chaoses-Ib/IbEverythingLib")
        .options_pages(vec![
            OptionsPage::builder()
                .name("Test Plugin")
                .load(ui::winio::spawn::<options::MainModel>)
                .build(),
        ])
        .build()
});

A C++17 implementation of Everything's (IPC) SDK.

Features

  • Higher performance. Compared with the official SDK, it reduces the query time by about 30%.
  • Better asynchronous. Its sending blocking time is only 40% of the SDK. And it is based on std::future, which gives you more features about asynchronous.
  • Support named instances.
  • Header-only and does not depend on the official DLL.

See also

Rust bindings (depending on the official DLL) for Everything's (IPC) SDK:

About

Rust/C++ bindings for voidtool's Everything

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages