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
- 菜单
- Menu
Builder - 菜单构建器
- Menu
Item Id - 菜单项唯一标识
- System
Tray - 系统托盘
- Tray
Config - 托盘配置
- Tray
Config Builder - 托盘配置构建器
- Tray
Icon - 托盘图标
Enums§
Type Aliases§
- Tray
Result - 托盘操作结果