上节继续,研究下系统托盘。

一、tauri.conf.json配置启用系统托盘

二、Rust中添加托盘

运行效果:

但是只有一个托盘图标,点了啥反应都没有。

三、给托盘加菜单

效果:

接下来,给托盘及托盘菜单添加事件响应:

use tauri::{
CustomMenuItem, Manager, SystemTray, SystemTrayEvent, SystemTrayMenu, SystemTrayMenuItem,
}; fn main() {
let quit = CustomMenuItem::new("quit".to_string(), "关闭窗口");
let hide = CustomMenuItem::new("hide".to_string(), "隐藏窗口");
let tray_menu = SystemTrayMenu::new()
.add_item(quit)
.add_native_item(SystemTrayMenuItem::Separator)
.add_item(hide); let system_tray = SystemTray::new().with_menu(tray_menu); tauri::Builder::default()
.system_tray(system_tray)
.on_system_tray_event(|app, event| menu_handle(app, event))
.run(tauri::generate_context!())
.expect("failed to run app");
} fn menu_handle(app_handle: &tauri::AppHandle, event: SystemTrayEvent) {
match event {
SystemTrayEvent::LeftClick {
position: _,
size: _,
..
} => {
println!("鼠标-左击");
}
SystemTrayEvent::RightClick {
position: _,
size: _,
..
} => {
println!("鼠标-右击");
}
SystemTrayEvent::DoubleClick {
position: _,
size: _,
..
} => {
println!("鼠标-双击");
}
SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() {
"quit" => {
std::process::exit(0);
}
"hide" => {
let item_handle = app_handle.tray_handle().get_item(&id);
let window = app_handle.get_window("home").unwrap();
if window.is_visible().unwrap() {
window.hide().unwrap();
item_handle.set_title("显示窗口").unwrap();
} else {
window.show().unwrap();
item_handle.set_title("隐藏窗口").unwrap();
}
}
_ => {}
},
_ => {}
}
}

核心都在menu_handle函数中

参考文章:

https://tauri.app/v1/guides/features/system-tray

tauri学习(6)-系统托盘systemTray的更多相关文章

  1. 小菜学习Winform(七)系统托盘

    前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...

  2. QT中自定义系统托盘的实现—c++语言为例

    将要介绍的是:QT中自定义系统托盘(systemtray)的一个Demo,希望能帮需要的读者快速上手. 前提假设是诸位已经知道QT中的signals .slot以及资源文件,所以关于这些不会再累述. ...

  3. WP7系统托盘和应用程序栏

    (一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...

  4. 用Qt写软件系列四:定制个性化系统托盘菜单

    导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...

  5. Java应用程序使用系统托盘资源

    要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可: 1.线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯 2.获得一个Syste ...

  6. JavaSE 初学系统托盘图标SystemTray类

    文章目录 1.预备知识 2.使系统托盘显示图标 3.添加提示 4.添加弹出菜单 设置Java程序的系统托盘图标,用到SystemTray类和TrayIcon类. 1.预备知识 JavaAPI对于Sys ...

  7. QT系统托盘应用程序

    在QT中QSystemTrayIcon类提供了创建系统托盘程序的功能. QSystemTrayIcon类为系统托盘中的应用程序提供图标.现代操作系统通常会在桌面上提供一个称为系统托盘(system t ...

  8. Swing实现系统托盘

    /* 实现系统托盘化 */ protected void setToolSystemTray() { // 系统是否支持系统托盘 if (SystemTray.isSupported()) { // ...

  9. WinForm 程序在系统托盘显示

    前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...

  10. java程序加到系统托盘的方法

    package swingtest; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; impor ...

随机推荐

  1. AD 侦查-SMB_2

    本文通过 Google 翻译 AD Recon – NetBIOS (137/138/139) and SMB (445) Part-2 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校 ...

  2. 问题描述:libGL.so.1: cannot open shared object file: No such file or directory

    问题截图: 在实验室服务器上跑代码,报如上错误 解决方案: sudo apt update sudo apt install libgl1-mesa-glx 因遇见多次该错误,特此记录下 (据说该问题 ...

  3. ASP.NET Core Minimal API之optional route parameter with default value and optional route parameter

    public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); var app = ...

  4. numpy.tile用法

    先说下在numpy中,个人对array的维度的比较形象的理解: array的维度就是从最外边的[]出发(可理解为array的声明),一直找到具体数值而经过的[]的数量(含最后的数值,它是最后一维) 比 ...

  5. 修改Tomcat默认端口方法

    找到Tomcat的配置文件conf目录下的server 例如我的具体地址:C:\moliy\code\resourse\apache-tomcat-9.0.13-windows-x64\apache- ...

  6. trim()与String index out of range: 0

    当使用trim()处理字符串后,发现 String index out of range: 0报错? 而且觉得代码无懈可击?一时想不出来什么时候会为空? 注意特殊情况处理的字符元素都是空格,eg:&q ...

  7. L2-2、示范教学与角色扮演:激发模型"模仿力"与"人格"

    一.Few-shot 教学的核心原理与优势 在与大语言模型交互时,Few-shot(少样本)教学是一种强大的提示技术.其核心原理是通过提供少量示例,引导模型理解我们期望的输出格式和内容风格. Few- ...

  8. Lombok 类库使用详解

    Lombok 是一个 Java 库,通过注解自动生成常用的样板代码(如 getter/setter.构造函数.日志声明等),显著减少代码量,同时提高代码整洁度. 一.配置方法 (1)IDE:需安装 L ...

  9. CSP-S 2020全国开放赛前冲刺模拟训练题1信友队集训队员周镇东出题 小结

    题目&官方题解下载 我的题解 CSP-S 2020模拟训练题1-信友队T1 四平方和 CSP-S 2020模拟训练题1-信友队T2 挑战NPC 我仍未看懂那天所看到的T3的题解 CSP-S 2 ...

  10. FFmpeg开发笔记(六十四)使用国产的RedPlayer播放器观看网络视频

    ​RedPlayer是小红书基于FFmpeg4.3研发并开源的国产播放器,它可运行于Android和iOS系统,既支持播放本地视频文件,也支持播放网络上的流媒体链接.有关FFmpeg在Android平 ...