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

一、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. js技术之“自定义包含方案”

    调用 // 用于判断包含 function diaoyong(arr, str){ // 初始化 var sizes = ['L','XL','S','M']; for (var i = 0; i & ...

  2. pyspark - 逻辑回归

    是在整理文件时, 翻到的, 感觉是好久以前的代码了, 不过看了, 还是可以的. 起码注释还是蛮清晰的. 那时候我真的是妥妥的调包man.... # 逻辑回归-标准化套路 from pyspark.ml ...

  3. Lynx-字节跳动跨平台框架多端兼容Android, iOS, Web 原生渲染

    介绍 字节跳动近期开源的跨平台框架Lynx被视为一项重要的技术创新.相较于市场上已有的解决方案如React Native (RN) 和Flutter,Lynx具有独特的特性. 首先,Lynx采用轻量级 ...

  4. Django中图片不显示

    很多教程没教对,导致Django中的图片不能正确的显示出来,经过多次踩坑,发现如下方法可以解决该问题. 1.setting.py中添加: STATIC_URL = '/static/' STATICF ...

  5. maven pom.xml文件中properties标签介绍

    在properties标签内可以把版本号作为变量进行声明,方便maven依赖标签用${变量名}的形式动态获取版本号.这样做的优点是当版本号发生改变时,仅仅需要更新properties标签中的变量值就行 ...

  6. 洛谷 SP116 INTERVAL - Intervals

    洛谷 SP116 INTERVAL - Intervals 节选自拓扑差分约束学习笔记.如果您想学习差分约束的话不妨看看~ Problem 从\(0\sim50000\)选出最少的数,使每个区间至少有 ...

  7. RAG越来越不准?一文详解元数据与标签的系统优化方法(附完整流程图+实用提示词)

    你是不是也遇到过这样的场景? 公司刚花大钱上线AI知识库,结果AI助手总是"答非所问",文档明明都上传了,关键时刻还是找不到想要的答案: 苦心搭了一两个月RAG系统,老板随便一问, ...

  8. Redhat 7中文显示及中文输入法设置

    一.安装系统语言为中文(此步可以忽略) -1- 查看系统中文语言安装包 1 命令:yum list kde*chinese 结果:可用安装包 kde-l10n-Chinese.noarch Hint ...

  9. 毕业一年半,发现自己还是一个CURD boy

    今天领导申请一个材料,需要我们写自己的工作经历,比较详细的,相当于整理自己的简历那种,忽然发现自己毕业一年半了,自己还仅仅是一个CURD boy,遇到难题的时候想往后躲,知道要学什么的时候去学的时候会 ...

  10. LEECODE Rust学习: 一维数组的动态和

    给你一个数组 nums .数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]-nums[i]) . 请返回 nums 的动态和. 示例 1: 输入:nums = [1, ...