tray 模块管理系统托盘(macOS 上是 NSStatusItem):创建/销毁
托盘项、改标题与 tooltip、设图标(文件路径 / 注册 Image / 原始 PNG
字节)、挂菜单、控制可见性与模板图标。它是 @tauri-apps/api/tray 的
移植,由内建的 plugin:tray|* 命令和 ztron://tray-click 事件支撑。
API 分两层:函数式(操作默认实例)与 TrayIcon 类(上游风格;宿主
保留多个 NSStatusItem,无 id 的方法作用于旧默认实例,带 id 的
方法寻址额外实例)。
tray 属于框架内建命令:plugin:tray|* 的 11 条命令随内建命令
注册进权限表,由 core:default 集统一授予。不需要插件构造、没有
scope。P15 还加了权限重复注册防御:duplicate permission 现在
显式报错(顺带清掉了 set_menu 的双注册遗留)。
图标的三种来源(路径、注册 Image、原始字节经 transformImage
自动注册)+ tooltip 更新。摘自
examples/hello/frontend/src/main.ts(锚点 TRAY_OK、
TRANSFORM_IMAGE_OK 为其真实运行输出,注释保留、有删节):
TrayIcon 类:创建(带图标)、模板图标(macOS 菜单栏亮/暗色自适应
渲染单色 alpha 图)、可见性往返、销毁。摘自同文件(锚点
TRAY_CLASS_OK):
挂菜单(左键弹出,遵循 NSStatusItem 惯例——Quit/Preferences 的标准
位置,P11):摘自同文件(锚点 TRAY_MENU_OK,菜单创建见
应用菜单):
点击监听:onTrayClick(零参 handler,仅在未挂菜单时触发)或
TrayIcon#onDetailedClick(富负载:button/clickCount/double/
屏幕坐标,宿主能提供时附带归属)。
plugin:tray|* 共 11 条,与 API 的对应关系:
| 命令 | API |
|---|---|
create / destroy |
createTray / destroyTray(TrayIcon.create / destroy) |
set_title / set_tooltip |
setTrayTitle / setTrayTooltip(实例同名方法) |
set_icon |
setTrayIcon(transformImage 归一化三种来源) |
set_menu |
setTrayMenu(TrayIcon#setMenu) |
set_visible |
TrayIcon#setVisible |
set_icon_as_template |
TrayIcon#setIconAsTemplate |
get_by_id / remove_by_id |
getTrayById(TrayIcon.getById)/ removeTrayById(TrayIcon.removeById) |
set_show_menu_on_left_click |
setShowMenuOnLeftClick(TrayIcon#setShowMenuOnLeftClick) |
适用版本:ztron 0.3.1