{"id":13785144,"url":"https://github.com/leanflutter/tray_manager","last_synced_at":"2025-05-15T16:07:37.010Z","repository":{"id":38015650,"uuid":"393304266","full_name":"leanflutter/tray_manager","owner":"leanflutter","description":"This plugin allows Flutter desktop apps to defines system tray.","archived":false,"fork":false,"pushed_at":"2025-04-25T01:42:15.000Z","size":539,"stargazers_count":262,"open_issues_count":19,"forks_count":54,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-25T02:37:16.879Z","etag":null,"topics":["tray","tray-icon"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/tray_manager","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leanflutter.png","metadata":{"files":{"readme":"README-ZH.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"liberapay":"lijy91"}},"created_at":"2021-08-06T08:05:52.000Z","updated_at":"2025-04-25T01:42:18.000Z","dependencies_parsed_at":"2024-03-31T08:26:22.176Z","dependency_job_id":"a5545568-75b6-4010-a755-9d3ddea60908","html_url":"https://github.com/leanflutter/tray_manager","commit_stats":{"total_commits":67,"total_committers":9,"mean_commits":7.444444444444445,"dds":"0.14925373134328357","last_synced_commit":"62959f7100e1abba372f6248d656e45633a1eb37"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leanflutter%2Ftray_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leanflutter%2Ftray_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leanflutter%2Ftray_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leanflutter%2Ftray_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leanflutter","download_url":"https://codeload.github.com/leanflutter/tray_manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254374475,"owners_count":22060611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["tray","tray-icon"],"created_at":"2024-08-03T19:00:57.450Z","updated_at":"2025-05-15T16:07:37.001Z","avatar_url":"https://github.com/leanflutter.png","language":"C++","readme":"\u003e **🚀 快速发布您的应用**: 试试 [Fastforge](https://fastforge.dev) - 构建、打包和分发您的 Flutter 应用最简单的方式。\n\n# tray_manager\n\n[![pub version][pub-image]][pub-url] [![][discord-image]][discord-url] ![][visits-count-image]\n\n[pub-image]: https://img.shields.io/pub/v/tray_manager.svg\n[pub-url]: https://pub.dev/packages/tray_manager\n[discord-image]: https://img.shields.io/discord/884679008049037342.svg\n[discord-url]: https://discord.gg/zPa6EZ2jqb\n[visits-count-image]: https://img.shields.io/badge/dynamic/json?label=Visits%20Count\u0026query=value\u0026url=https://api.countapi.xyz/hit/leanflutter.tray_manager/visits\n\n这个插件允许 Flutter 桌面应用定义系统托盘。\n\n\u003e 注意：本插件计划迁移至 [nativeapi](https://github.com/leanflutter/nativeapi-flutter) 以提升可维护性和性能，但目前该方案仍处于实验阶段。\n\n---\n\n[English](./README.md) | 简体中文\n\n---\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [平台支持](#%E5%B9%B3%E5%8F%B0%E6%94%AF%E6%8C%81)\n- [截图](#%E6%88%AA%E5%9B%BE)\n- [已知问题](#%E5%B7%B2%E7%9F%A5%E9%97%AE%E9%A2%98)\n  - [与 app_links 不兼容](#%E4%B8%8E-app_links-%E4%B8%8D%E5%85%BC%E5%AE%B9)\n  - [在 GNOME 中不显示](#%E5%9C%A8-gnome-%E4%B8%AD%E4%B8%8D%E6%98%BE%E7%A4%BA)\n- [快速开始](#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)\n  - [安装](#%E5%AE%89%E8%A3%85)\n    - [Linux requirements](#linux-requirements)\n  - [用法](#%E7%94%A8%E6%B3%95)\n    - [监听事件](#%E7%9B%91%E5%90%AC%E4%BA%8B%E4%BB%B6)\n- [谁在用使用它？](#%E8%B0%81%E5%9C%A8%E7%94%A8%E4%BD%BF%E7%94%A8%E5%AE%83)\n- [API](#api)\n  - [TrayManager](#traymanager)\n- [许可证](#%E8%AE%B8%E5%8F%AF%E8%AF%81)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## 平台支持\n\n| Linux | macOS | Windows |\n| :---: | :---: | :-----: |\n|  ✔️   |  ✔️   |   ✔️    |\n\n## 截图\n\n| macOS                                                                                     | Linux                                                                                     | Windows                                                                                          |\n| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |\n| ![](https://github.com/leanflutter/tray_manager/blob/main/screenshots/macos.png?raw=true) | ![](https://github.com/leanflutter/tray_manager/blob/main/screenshots/linux.png?raw=true) | ![image](https://github.com/leanflutter/tray_manager/blob/main/screenshots/windows.png?raw=true) |\n\n## 已知问题\n\n### 与 app_links 不兼容\n\n当同时使用 `app_links` 包和 `tray_manager` 时，可能会出现插件无法正常工作。这是因为低版本 `app_links` 在内部阻止了事件传播，导致菜单点击事件无法触发。\n\n要解决此问题：\n\n1. 确保你的 `app_links` 包版本大于或等于 6.3.3\n\n```yaml\ndependencies:\n  app_links: ^6.3.3\n```\n\n2. 使用 [protocol_handler](https://github.com/leanflutter/protocol_handler) 包代替 `app_links` 包。\n\n### 在 GNOME 中不显示\n\n在使用 GNOME 桌面时, 可能需要安装 [AppIndicator](https://github.com/ubuntu/gnome-shell-extension-appindicator) 扩展以显示图标。\n\n## 快速开始\n\n### 安装\n\n将此添加到你的软件包的 pubspec.yaml 文件：\n\n```yaml\ndependencies:\n  tray_manager: ^0.5.0\n```\n\n或\n\n```yaml\ndependencies:\n  tray_manager:\n    git:\n      url: https://github.com/leanflutter/tray_manager.git\n      ref: main\n      path: packages/tray_manager\n```\n\n#### Linux requirements\n\n- `ayatana-appindicator3-0.1` or `appindicator3-0.1`\n\n运行以下命令\n\n```\nsudo apt-get install libayatana-appindicator3-dev\n```\n\n或\n\n```\nsudo apt-get install appindicator3-0.1 libappindicator3-dev\n```\n\n### 用法\n\n```dart\nimport 'package:flutter/material.dart' hide MenuItem;\nimport 'package:tray_manager/tray_manager.dart';\n\nawait trayManager.setIcon(\n  Platform.isWindows\n    ? 'images/tray_icon.ico'\n    : 'images/tray_icon.png',\n);\nMenu menu = Menu(\n  items: [\n    MenuItem(\n      key: 'show_window',\n      label: 'Show Window',\n    ),\n    MenuItem.separator(),\n    MenuItem(\n      key: 'exit_app',\n      label: 'Exit App',\n    ),\n  ],\n);\nawait trayManager.setContextMenu(menu);\n```\n\n\u003e 请看这个插件的示例应用，以了解完整的例子。\n\n#### 监听事件\n\n```dart\nimport 'package:flutter/material.dart';\nimport 'package:tray_manager/tray_manager.dart';\n\nclass HomePage extends StatefulWidget {\n  @override\n  _HomePageState createState() =\u003e _HomePageState();\n}\n\nclass _HomePageState extends State\u003cHomePage\u003e with TrayListener {\n  @override\n  void initState() {\n    trayManager.addListener(this);\n    super.initState();\n    _init();\n  }\n\n  @override\n  void dispose() {\n    trayManager.removeListener(this);\n    super.dispose();\n  }\n\n  void _init() {\n    // ...\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    // ...\n  }\n\n  @override\n  void onTrayIconMouseDown() {\n    // do something, for example pop up the menu\n    trayManager.popUpContextMenu();\n  }\n\n  @override\n  void onTrayIconRightMouseDown() {\n    // do something\n  }\n\n  @override\n  void onTrayIconRightMouseUp() {\n    // do something\n  }\n\n  @override\n  void onTrayMenuItemClick(MenuItem menuItem) {\n    if (menuItem.key == 'show_window') {\n      // do something\n    } else if (menuItem.key == 'exit_app') {\n       // do something\n    }\n  }\n}\n```\n\n## 谁在用使用它？\n\n- [Airclap](https://airclap.app/) - 任何文件，任意设备，随意发送。简单好用的跨平台高速文件传输 APP。\n- [Biyi (比译)](https://biyidev.com/) - 一个便捷的翻译和词典应用程序。\n\n## API\n\n### TrayManager\n\n| Method           | Description                      | Linux | macOS | Windows |\n| ---------------- | -------------------------------- | ----- | ----- | ------- |\n| destroy          | 立即销毁托盘图标                 | ✔️    | ✔️    | ✔️      |\n| setIcon          | 设置与此托盘图标相关的图片。     | ✔️    | ✔️    | ✔️      |\n| setIconPosition  | 设置托盘图标的图标位置。         | ➖    | ✔️    | ➖      |\n| setToolTip       | 设置此托盘图标的悬停文本。       | ➖    | ✔️    | ✔️      |\n| setContextMenu   | 设置此图标的上下文菜单。         | ✔️    | ✔️    | ✔️      |\n| popUpContextMenu | 弹出托盘图标的上下文菜单。       | ➖    | ✔️    | ✔️      |\n| getBounds        | 返回 `Rect` 这个托盘图标的边界。 | ➖    | ✔️    | ✔️      |\n\n## 许可证\n\n[MIT](./LICENSE)\n","funding_links":["https://liberapay.com/lijy91"],"categories":["Packages"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleanflutter%2Ftray_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleanflutter%2Ftray_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleanflutter%2Ftray_manager/lists"}