系统托盘
本机应用程序系统托盘。
设置
在taui .conf.json上配置systemTray对象:
在macOS和Linux上,iconPath指向一个PNG文件,并且必须存在一个。ico文件以支持Windows。
iconAsTemplate是一个布尔值,它决定了该图像在macOS上是否代表一个模板图像。
创建系统托盘
要创建一个本地系统托盘,请导入SystemTray类型:
使用金牛座的::SystemTray;
初始化一个新的托盘实例:
let tray = SystemTray::new();
配置系统托盘上下文菜单#
您还可以添加一个上下文菜单,当右键单击托盘图标时,该菜单是可见的。导入SystemTrayMenu, SystemTrayMenuItem和CustomMenuItem类型:
使用tauri::{CustomMenuItem, SystemTrayMenu, SystemTrayMenuItem};
创建SystemTrayMenu:
//这里’ “quit”.to_string() ‘定义了菜单项的id,第二个参数是菜单项的标签。
let quit = CustomMenuItem::new(“quit”.to_string(), “quit”);
let hide = CustomMenuItem::new(“hide”.to_string(), “hide”);
let tray_menu = SystemTrayMenu::new()
.add_item(辞职)
.add_native_item (SystemTrayMenuItem::分隔符)
.add_item(隐藏);
将托盘菜单添加到SystemTray实例中:
let tray = SystemTray::new().with_menu(tray_menu);
配置应用程序系统托盘#
创建的SystemTray实例可以使用tauri::Builder结构上的system_tray API来设置:
使用tauri::{CustomMenuItem, SystemTray, SystemTrayMenu};
fn main () {
let tray_menu = SystemTrayMenu::new();//在这里插入菜单项
let system_tray = SystemTray::new()
.with_menu (tray_menu);
金牛座的::建造者::默认()
.system_tray (system_tray)
.run(金牛座的::generate_context ! ())
.expect(“运行tauri应用程序时发生错误”);
}
监听系统托盘事件#
当单击时,每个CustomMenuItem都会触发一个事件。此外,Tauri会发出托盘图标点击事件。使用on_system_tray_event API来处理它们:
使用tauri::{CustomMenuItem, SystemTray, SystemTrayMenu};
使用金牛座的::经理;
fn main () {
let traymenu = SystemTrayMenu::new();//在这里插入菜单项
金牛座的::建造者::默认()
.system_tray (SystemTray::新().with_menu (tray_menu))
.on_system_tray_event(|app,事件|匹配事件{
SystemTrayEvent: LeftClick {
位置:,
大小:,
..
} = > {
println !(“系统托盘收到左键点击”);
}
SystemTrayEvent: RightClick {
位置:,
大小:,
..
} = > {
println !(“系统托盘收到右击”);
}
SystemTrayEvent: DoubleClick {
位置:,
大小:,
..
} = > {
println !(“系统托盘收到双击”);
}
SystemTrayEvent::MenuItemClick {id, ..} = > {
匹配id.as_str () {
“退出”= > {
过程std::::退出(0);
}
“隐藏”= > {
让window = app.get_window(“main”).unwrap();
.unwrap window.hide () ();
}
= > {}
}
}
_ = > {}
})
.run(金牛座的::generate_context ! ())
.expect(“运行tauri应用程序时发生错误”);
}
更新系统托盘#
AppHandle结构体有一个tray_handle方法,它返回一个系统托盘的句柄,允许更新托盘图标和上下文菜单项:
更新上下文菜单项#
使用tauri::{CustomMenuItem, SystemTray, SystemTrayMenu};
使用金牛座的::经理;
fn main () {
let traymenu = SystemTrayMenu::new();//在这里插入菜单项
金牛座的::建造者::默认()
.system_tray (SystemTray::新().with_menu (tray_menu))
.on_system_tray_event(|app,事件|匹配事件{
SystemTrayEvent::MenuItemClick {id, ..} = > {
//获取被点击菜单项的句柄
//注意’ tray_handle ‘可以在任何地方调用,
//在setup钩子上使用’ app.handle() ‘获取一个’ AppHandle ‘实例
//并将其移动到另一个函数或线程
让item_handle = app.tray_handle().get_item(&id);
匹配id.as_str () {
“隐藏”= > {
让window = app.get_window(“main”).unwrap();
.unwrap window.hide () ();
//你也可以’ set_selected ‘, ‘ set_enabled ‘和’ set_native_image ‘(仅适用于macOS)。
item_handle.set_title(“秀”).unwrap ();
}
= > {}
}
}
_ = > {}
})
.run(金牛座的::generate_context ! ())
.expect(“运行tauri应用程序时发生错误”);
}
更新托盘图标#
注意,tauri::Icon在Linux上必须是Path的变体,在Windows和macOS上必须是Raw的变体。
app.tray_handle () .set_icon(金牛座的::图标::生(include_bytes !(“. . /道路/ / myicon.ico “))) .unwra