Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeskBadges 🎛️

任务栏徽章平台:每个托盘图标是一枚"徽章",各管一件事。一眼看清打印进度、CPU 温度、性能模式——不用打开任何窗口。

独立于 PandaSpool 主项目;打印机徽章通过其 API 通信(/api/desk),没有 PandaSpool 也能只用硬件/性能模式徽章。

理念

徽章(badge)不是又一个托盘应用,而是任务栏上的状态层。

  1. 一眼可见,即看即走。 不弹窗、不抢焦点、不积累未读。重要的不是"通知你",而是"你扫一眼任务栏就知道":打印到第几层、CPU 多少度、机器在什么性能模式。想看细节时悬停出卡片,看完即关。
  2. 一枚徽章只管一件事。 每个托盘图标独立数据源、独立轮询节奏、独立悬浮卡与菜单。打印机掉线不影响温度显示;某个数据源挂了只在自己那枚徽章上显示 !
  3. 它是平台,不是应用。 核心只有一个接口 ITrayWidget:图标绘制、轮询调度、悬浮卡、右键菜单、桌面通知全部由宿主托管。加一枚徽章 = 实现一个接口 + 注册一行。数据源信息交给 AI 助手,照着 docs/WIDGET_INTEGRATION.md 就能自动接入一枚新徽章。
  4. 本机优先,数据最小化。 配置就是 exe 旁边一个 ini,没有云端、没有账号体系、没有遥测。数据源按需只读:读得到就显示,读不到就老实告诉你读不到。
  5. 轻量、干净、可退出。 单文件 4MB(框架依赖),无常驻后台服务;退出后任务栏干干净净,开机启动是可选项。

明确不做的事(Non-goals)

  • 不做企业微信 / 钉钉 / Telegram 等 IM 推送通知。 所有通知只走 Windows 桌面气泡——DeskBadges 的定位是"你坐在电脑前"的场景:状态在任务栏上 glanceable,通知气泡看完即走。需要 IM 推送请用各平台的机器人/Webhook 方案,本软件刻意不引入消息网关角色。
  • 不做云端同步与远程查看。 没有账号,配置和数据都留在本机。
  • 性能模式徽章只读不切换。 性能模式只能由内置键盘物理热键(Fn+F1)切换,本徽章只忠实显示,绝不绕过固件写状态。

徽章一览

🖨️ 打印机徽章

  • 托盘图标 = 进度环,角标显示百分比;空闲时显示喷嘴温度,完成后变 OK
  • 悬浮卡:任务名、进度/层数、剩余时间与预计完成时刻、喷嘴/热床温度(含目标)、打印速度档、空气 PM2.5/温湿度、萤石监控截图(55 秒缓存自动刷新)
  • 桌面通知:首层完成(亲眼见过第 1 层才算,重启不误报)、打印完成、打印失败
  • 托盘快捷控制:补光灯开/关、仓内长开切换、一键打开机台页
  • 平时 30 秒轮询,打印中自动加速到 10 秒

💻 硬件徽章

  • 托盘角标 = CPU 温度(≥70° 橙、≥85° 红);无温度权限时显示 CPU 负载
  • 悬浮卡:CPU/GPU 温度与负载、内存占用、电池电量与供电状态、系统盘剩余、开机时长
  • 基于 LibreHardwareMonitor;以管理员身份运行可读到温度,否则自动降级为负载模式并提示

⚡ 性能模式徽章

  • 托盘角标 = 当前性能模式:P 性能(橙)/ B 均衡(绿)/ Q 安静(蓝);本次开机尚无事件显示 ?,读取失败显示 !
  • 悬浮卡:当前模式、Fn Lock 状态、最后变化时间、数据源、监控状态
  • 数据源:Windows 事件日志 Application / Provider OSDEvents(由 BLDFnHotkeyUtility 在内置键盘 Fn+F1 物理热键触发时写入);只认本次开机后的事件,重启后旧状态不算数
  • 只读展示,不提供切换菜单:模式只能用内置键盘 Fn+F1(或 Fn Lock 后短按 F1)切换,软件模拟按键 / AHK / PowerToys / 外接键盘宏均无效

快速开始

  1. Releases 下载 DeskBadges-v*.zip(或自行编译),解压到任意目录
  2. 双击运行,托盘出现徽章图标;右键任意徽章 → 设置… 填打印机 AI 令牌(不用打印机可关掉该徽章)
  3. 设置里可一键 新建桌面快捷方式(已存在会先删再建,始终指向当前路径)、开关开机自启

编译

需要 .NET 10 SDK(Windows):

build.cmd           :: 框架依赖(小,需本机有 .NET 10 桌面运行时)→ publish\DeskBadges.exe
publish-full.cmd    :: 自包含(拷给没装运行时的电脑)→ publish-full\DeskBadges.exe

开放接口:写一个自己的徽章

📄 徽章接入指南(docs/WIDGET_INTEGRATION.md) —— 面向 AI 助手的完整接入规范:数据源信息收集表、接口全量定义、五步流程、可抄改的成品示例、常见坑与验收清单。把这份文档交给任何 AI,再提供数据源信息,即可自动完成一个新徽章(图标 + 设置项 + 悬浮卡)。

快速概览——新增一枚徽章 = 实现 ITrayWidget + 在 App.BuildWidgets 里注册一行,Host 负责图标绘制、轮询、悬浮卡和菜单的公共部分:

public sealed class WeatherWidget : ITrayWidget
{
    public string Id => "weather";              // 对应 ini section
    public string DisplayName => "天气";
    public bool Enabled => true;
    public TimeSpan Interval => TimeSpan.FromMinutes(10);

    public double? Progress { get; private set; }   // 进度环(可 null)
    public string? Badge { get; private set; }      // 角标文字("23°")
    public string? StatusColor { get; private set; }// "#60A5FA"
    public string ToolTip { get; private set; } = "天气";

    public event Action<string, string>? Raise;     // 桌面通知

    public async Task TickAsync()
    {
        // 拉数据、更新 Badge/StatusColor/ToolTip
        await Task.Yield();
    }

    public HoverModel? BuildHover() => new()
    {
        Title = "天气",
        Rows = [new HoverRow { Label = "温度", Value = "23°C" }],
    };

    public IReadOnlyList<TrayMenuItem> BuildMenu() => [];  // 拼在公共菜单(设置/退出)之前

    public Task PrepareHoverAsync() => Task.CompletedTask; // 悬浮卡打开前预热(≤3s)
}

绘制规范:Host 统一画"深底圆角贴片 + 底部状态色进度填充 + 白色粗体角标"(按 16 像素实际显示尺寸设计,大色块+粗体字,拒绝细线绣花),徽章只需给出三个值,视觉自动一致。

配置参考

config.example.ini。所有项都有默认值;ini 里没写的键不覆盖。

路线图

  • DLL 形式的运行时插件(当前为编译期注册,接口已按可拆分设计)
  • 徽章拖拽排序、图标尺寸设置
  • 打印机徽章:多站点配置

License

MIT

About

任务栏徽章平台:多个托盘图标,每个图标一枚徽章(ITrayWidget 开放接口)。内置打印机 / 本机硬件 / 性能模式徽章,一眼看清状态。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages