Skip to content

系统托盘 (System Tray)

zero-native 支持带有菜单的系统托盘图标。托盘操作将在运行时作为名称为 "tray.action"CommandEvent 分发。

平台支持情况

托盘支持目前已在 macOS 上实现。Linux 下将返回 UnsupportedService,直到选定了可移植的状态通知器(Status Notifier)实现。

TrayOptions (托盘选项)

字段类型默认值描述
icon_path[]const u8""托盘图标的文件路径
tooltip[]const u8""鼠标悬停时的工具提示文本
items[]const TrayMenuItem&.托盘菜单项列表

TrayMenuItem (托盘菜单项)

字段类型默认值描述
idTrayItemId (u32)0菜单项的唯一标识符 ID
label[]const u8""菜单项展示的文本标签
separatorboolfalse是否为分割线
enabledbooltrue菜单项是否启用/可点击

PlatformServices 方法

  • createTray(options) — 创建或替换托盘图标
  • updateTrayMenu(items) — 更新菜单项,而无需重新创建托盘
  • removeTray() — 移除托盘图标

处理托盘操作 (Handling Tray Actions)

当用户点击托盘菜单项时,运行时会分发一个名称为 "tray.action"CommandEvent。使用你的 event_fn 回调函数来处理它:

zig
fn event(context: *anyopaque, runtime: *Runtime, ev: Event) anyerror!void {
    switch (ev) {
        .command => |cmd| {
            if (std.mem.eql(u8, cmd.name, "tray.action")) {
                // 处理托盘菜单点击事件
            }
        },
        else => {},
    }
}