Crate unistore_tray

Crate unistore_tray 

Source
Expand description

§unistore-tray

跨平台系统托盘能力 - UniStore 能力生态的一部分。

§功能特性

  • 跨平台: 支持 Windows/macOS/Linux
  • 统一 API: 屏蔽平台差异,提供一致的接口
  • 异步友好: 与 tokio 运行时无缝集成
  • 事件驱动: 通过 broadcast channel 订阅托盘事件
  • 可扩展菜单: 灵活的菜单构建器 API

§快速开始

use unistore_tray::{SystemTray, TrayConfig, TrayEvent, MenuBuilder};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 创建托盘配置
    let config = TrayConfig::builder()
        .tooltip("My App v1.0")
        .build();

    // 创建系统托盘(需要在主线程)
    let tray = SystemTray::new(config)?;

    // 设置菜单
    let menu = MenuBuilder::new()
        .item("open", "打开主窗口")
        .separator()
        .item("exit", "退出")
        .build();
    tray.set_menu(menu)?;

    // 订阅事件
    let mut rx = tray.subscribe();
     
    // 事件处理循环
    while let Ok(event) = rx.recv().await {
        match event {
            TrayEvent::MenuItemClicked(id) if id.as_str() == "exit" => break,
            _ => {}
        }
    }

    Ok(())
}

Structs§

Menu
菜单
MenuBuilder
菜单构建器
MenuItemId
菜单项唯一标识
SystemTray
系统托盘
TrayConfig
托盘配置
TrayConfigBuilder
托盘配置构建器
TrayIcon
托盘图标

Enums§

MenuItem
菜单项
TrayError
托盘操作错误
TrayEvent
托盘事件

Type Aliases§

TrayResult
托盘操作结果