WinMsgHub
一款使用Python开发的Windows桌面应用程序,专为多源消息聚合、统一管理、智能通知设计,一站式解决物联网消息、网络推送、本地事件、订阅内容等分散接收消息的问题。
Install / Use
/learn @pmh1314520/WinMsgHubREADME
📖 项目简介
WinMsgHub 是一款基于 Python + PyQt6 开发的 Windows 桌面应用,专为多源消息聚合、统一管理、智能通知设计,一站式解决物联网消息、网络推送、本地事件、订阅内容等分散接收的问题。
无论是 MQTT 物联网消息、RSS 新闻订阅、文件变化提醒,还是剪贴板内容、系统硬件事件,WinMsgHub 都能秒级处理并以高度定制化的桌面弹窗展示,同时支持本地数据存储、消息过滤、统计分析等核心能力。
💡 为什么选择 WinMsgHub?
- ✅ 多源全覆盖:支持8类消息源,支持添加多个消息源实例(例如:多MQTT服务器/多监控文件夹等)
- ✅ 极致定制化:弹窗位置/动画/样式全自定义,你的弹窗你做主
- ✅ 实时高效:秒级消息处理,配置热重载(修改立即生效,无需重启软件)
- ✅ 安全本地化:SQLite 本地存储所有数据,还支持纯本地MQTT服务,一键启动
- ✅ 轻量易用:软件体积极小,可最小化至系统托盘,不占用任务栏,操作界面现代化、易上手
✨ 核心特性
🔌 8大消息源全支持
📡 网络消息源
- MQTT(支持 TLS 加密连接)
- WebSocket 实时双向通信
- API 定时轮询(HTTP/HTTPS)
- Webhook 内置服务器接收推送
- IMAP 邮件服务器实时监听
💻 本地消息源
- RSS/Atom 博客/新闻订阅解析
- 文件监控 文件夹/文件变化监控(增删改移)
- 剪贴板 内容实时监控(文本/文件)
💡 所有消息源均支持多实例和单独启用/禁用!
🎨 高度可定制的通知弹窗
| 📍 位置定制 | 🎬 动画效果 | 🎨 样式自定义 | | :---: | :---: | :---: | | 8个位置可选<br>四角+四边 | 3种动画效果<br>滑入/淡入/缩放<br>支持动画速度调节 | 完全自定义<br>尺寸/透明度/颜色<br>字体/音效 |
🌟 其他核心亮点
- 💾 消息管理:SQLite本地存储,支持关键词搜索/时间筛选/数据导出
- 🎯 智能过滤:自定义过滤规则(包含/排除关键词),只接收重要消息
- 📊 统计面板:实时查看消息数量/各源占比/连接状态,支持数据可视化
- 🔔 系统托盘:最小化至托盘,支持托盘右键快捷操作/托盘消息提示
- ⚡ 热重载:所有配置修改立即生效,无需重启应用
- 🔄 自动更新:一键检查GitHub最新版本,及时获取新功能
- 📝 完善日志:分级日志记录(INFO/DEBUG/ERROR),方便问题排查
🖼️ 界面预览










🚀 快速开始
📋 系统要求
| 项目 | 要求 | | :--- | :--- | | 操作系统 | Windows 10 64位 / Windows 11(推荐) | | Python 版本 | 3.9 及以上(3.10/3.11 兼容性最佳) | | 硬件 | 2GB 及以上内存,100MB 及以上磁盘空间 | | 依赖 | 无额外系统依赖,pip 自动安装所有Python包 |
📦 安装与运行
<details> <summary><b>📥 点击展开 - 安装步骤</b></summary> <br>1. 克隆/下载项目到本地,进入项目根目录
cd WinMsgHub
2. 安装项目依赖(建议使用虚拟环境)
# 推荐:创建虚拟环境
python -m venv venv
venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 运行应用(三种方式可选)
# 方式1:批处理运行(推荐,自动激活虚拟环境)
run.bat
# 方式2:直接运行(显示控制台日志)
python main.py
# 方式3:无控制台窗口运行
pythonw main.py
</details>
⚙️ 快速配置消息源
- 启动应用后,点击左侧导航栏「消息源配置」
- 选择需要配置的消息源类型(如MQTT/文件监控)标签页
- 点击「➕ 添加」按钮,填写配置信息(带*为必填项)
- 点击「保存」,配置立即生效(无需重启)!
📄 配置示例:查看项目内
config/example_multi_sources.json了解所有消息源的完整配置参数。
📱 如何将手机上的任何消息转发至WinMsgHub?(仅演示局域网转发方式)
由于本人只有Android系统的手机,以下教程仅演示如何将Android手机上的任何消息转发至电脑上的WinMsgHub,并以消息弹窗的形式在电脑上展示出来
1、开始前的准备
- 确保手机与电脑都连接在同一局域网内
- 电脑上安装好 “WinMsgHub” 并启动
- 手机上安装好 “短信转发器” 并启动,下载地址:https://github.com/pppscn/SmsForwarder/releases
2、配置WinMsgHub(Windows端)
-
点击左侧的 “本地MQTT服务”,之后点击 “启动服务” 按钮
-
之后点击左侧的 “消息源配置”,再点击 “添加MQTT消息源” 按钮
-
在弹出的配置界面中为这个MQTT消息源起一个名称,其它配置项保持默认
-
点击底部的 “一键复制JSON模板”,将复制的JSON模板发送给自己的手机,让自己的手机复制好
-
之后点击底部的 “OK” 按钮,此时WinMsgHub就配置好了
3、配置短信转发器(Android端)
- 点击软件底部的 “发送通道”,再点右上角的 “+”,选择 “Socket”
- 为通道随便起个 ”名称“,“服务端IP” 和 “端口” 依据 WinMsgHub 中 “本地MQTT服务” 页面中展示的 “服务地址” 进行填写
- 往下滑,在 ”输入消息主题“ 和 ”输出消息主题“ 中填入 ”/WMH“(填入时不要加引号!)
- 之后直接点击底部的 ”保存“ 按钮
- 再点击底部的 ”转发规则“,在顶部你会看到支持转发 “短信消息”、“通话消息” 和 “应用通知”,接下来我以转发 “短信消息” 为例
- 点击右上角的 “+”,选择 “发送通道” 为你刚刚新增的那个Socket通道
- 点击 “启用自定义模板”,将之前从 WinMsgHub 复制的 “JSON模板” 粘贴进输入框中
- 将JSON模板中的消息标题、消息内容和来源名称这三段文本删掉(引号别删)
- 将输入位置点在 “title” 后面的空双引号中,点击底部的 “来源姓名”
- 将输入位置点在 “content” 后面的空双引号中,点击底部的 “短信内容”
- 将输入位置点在 “source” 后面的空双引号中,点击底部的 “来源号码”(source是可选的,可以没有这个JSON字段)
- 最后点击最底部的 “保存” 按钮,之后手机接收到的所有短信都会被转发到 WinMsgHub 上,并以弹窗形式出现啦!
4、注意事项
- 若长期使用,建议将 WinMsgHub “系统设置” 中的 “开机自启动” 打开,以及 “本地MQTT服务” 页面中的 “下次启动软件时自动启动MQTT服务” 勾上
- 还有就是根据 “本地MQTT服务” 页面顶部的静态内网IP配置教学,将自己电脑的内网IP配置为静态IP
5、实测图

(还可以通过配置 WinMsgHub “弹窗设置” 中的 “智能复制设置” 实现自动提取短信通知中的 “验证码” 至系统剪贴板哦~)
📁 项目结构
采用分层架构设计(UI层/核心层/数据层/工具层),模块解耦、易扩展,便于后续新增消息源和功能。
<details> <summary><b>📂 点击展开 - 完整项目结构</b></summary>WinMsgHub/
├── main.py # 应用程序入口(初始化/启动)
├── run.bat # 快速运行批处理文件
├── requirements.txt # 项目依赖清单
├── ui/ # 【UI层】图形界面相关
│ ├── modern_main_window.py # 主窗口布局与导航
│ ├── tray_icon.py # 系统托盘图标与右键菜单
│ ├── notification_popup.py # 通知弹窗核心组件
│ ├── theme_manager.py # 主题管理(亮色/暗色/自动切换)
│ ├── svg_icons.py # SVG图标库(手写图标,无Emoji)
│ └── pages/ # 各功能页面
│ ├── dashboard_page.py # 仪表盘(统计/状态)
│ ├── sources_page.py # 消息源配置页面
│ ├── history_page.py # 消息历史查询/导出
│ ├── popup_page.py # 弹窗样式/动画配置
│ ├── local_mqtt_page.py # 本地MQTT服务管理
│ ├── scheduler_page.py # 定时任务管理
│ ├── settings_page.py # 系统通用设置
│ └── about_page.py # 关于页面(版本/更新检查)
├── core/ # 【核心层】业务逻辑处理
│ ├── config_manager.py # 配置管理(加载/保存/热重载)
│ ├── connector_manager.py # 消息源连接器统一管理
│ ├── message_processor.py # 消息统一处理/分发
│ ├── filter_engine.py # 消息过滤引擎(规则匹配)
│ ├── popup_manager.py # 弹窗统一调度/显示
│ ├── local_mqtt_manager.py # 本地MQTT Broker管理
│ ├── scheduler_manager.py # 定时任务调度管理
│ └── system_monitor.py # 系统资源监控
├── data/ # 【数据层】数据存储与消息源连接
│ ├── database.py # SQLite数据库操作封装
│ ├── async_database.py # 异步数据库操作
│ ├── models.py # 数据模型(消息/配置/统计)
│ └── connectors/ # 各消息源连接器实现
│ ├── base.py # 连接器基类
│ ├── mqtt_connector.py # MQTT连接器
│ ├── rss_connector.py # RSS/Atom连接器
│ ├── file_monitor_connector.py # 文件监控连接器
│ ├── clipboard_connector.py # 剪贴板监控连接器
│ ├── api_connector.py # API轮询连接器
│ ├── webhook_connector.py # Webhook服务器连接器
│ ├── websocket_connector.py # WebSocket连接器
│ ├── imap_connector.py # IMAP邮件连接器
│ └── error_handler.py # 连接器错误处理
├── utils/ # 【工具层】通用工具函数
│ ├── logger.py # 日志系统(分级记录/文件保存)
│ ├── update_checker.py # 更新检查器(GitHub Release API)
│ ├── network_utils.py # 网络工具(IP获取等)
│ ├── async_worker.py # 异步任务工作器
│ ├── resource_path.py # 资源路径工具(支持打包)
│ └── single_instance.py # 单实例锁(防止重复启动)
├── config/ # 配置文件目录
│ ├── default_config.json # 默认配置模板
│ ├── example_mqtt_config.json # MQTT配置示例
│ └── example_multi_sources.json # 多消息源配置示例
├── resources/ # 静态资源(图标/音效)
│ ├── icons/ # 应用图标
│ └── sounds/ # 提示音效
└── tests/ # 单元测试与集成测试
├── test_database.py # 数据库测试
├── test_config_manager.py # 配置管理器测试
├── test_mqtt_connector.py # MQTT连接器测试
└── test_message_connector.py # 消息连接器测试
</details>
🛠️ 技术栈
| 类别 | 技术/库 | 核心用途 | | :---: | :--- | :--- | | 主开发语言 | Python 3.9+ | 应用核心开发,简洁易扩展 | | GUI框架 | PyQt6 | 现代化桌面界面,弹窗/托盘/主题/SVG图标支持 | | 本地存储 | SQLite + sqlite3 | 轻量无服务,存储消息/配置/统计数据 | | 网络通信 | paho-mqtt / websocket-client / requests / imaplib | MQTT/WebSocket/API/Webhook/IMAP 协议支持 | | MQTT服务 | aMQTT | 内置本地MQTT Broker,支持一键启动 | | 本地监控 | watchdog / pyperclip | 文件监控/剪贴板监听 | | 解析工具 | feedparser | RSS/Atom 订阅内容解析 | | 系统监控 | psutil | CPU/内存/磁盘/网络监控 | | 安全加密 | cryptography | TLS/SSL 加密连接,数据加密 | | 异步支持 | asyncio / aiofiles | 异步IO操作,提升性能避免卡顿 | | 版本管理 | packaging | 版本号比较,支持自动更新检查 | | 测试框架 | pytest + Hypothesis + coverage | 单元测试/属性测试/测试覆盖率统计 |
📄 开源协议
本项目采用 自定义开源许可协议。
📋 协议概要
✅ 允许商业使用 | ✅ 允许二次开发 | ⚠️ 二次开发必须开源 | ⚠️ 必须标明原作者
✅ 允许的使用方式
- ✓ 个人使用和学习
- ✓ 商业使用
- ✓ 修改和二次开发
- ✓ 分发和传播
⚠️ 使用条件(必须遵守)
- 开源要求 - 任何二次开发或衍生作品必须开源
- 署名要求 - 必须标明原作者:青云制作_彭明航
- 协议传递 - 衍生作品必须使用相同的许可协议
- 版权声明 - 不得移除或修改原有版权声明
❌ 禁止的行为
- ✗ 闭源发布衍生作品
- ✗ 移除或篡改原作者信息
- ✗ 用于非法用途
📝 代码文件版权声明
所有源代码文件必须包含以下版权声明:
"""
WinMsgHub - [模块名称]
作者:青云制作_彭明航
版权所有 - 二次开发必须开源并标明原作者,允许商用
"""
📖 完整协议
完整的许可协议内容请查看 LICENSE 文件。
👤 作者
<div align="center"> <h3>青云制作_彭明航</h3> <p><b>QQ:2124691573</b></p> <p>这是我开源的第二款软件项目,如果它对您有所帮助,希望能给个⭐ Star 支持一下!</p> <p>您的支持是项目持续开发的最大动力 💪</p> </div>🙏 致谢
感谢以下优秀的开源项目,WinMsgHub的开发离不开它们的支持:
<div align="center"> <a href="https://www.riverbankcomputing.com/software/pyqt/"><img src="https://img.shields.io/badge/PyQt6-41CD52?logo=qt&logoColor=white" alt="PyQt6"></a> <a href="https://www.eclipse.org/paho/"><img src="https://img.shields.io/badge/paho--mqtt-E6522C?logo=eclipse&logoColor=white" alt="paho-mqtt"></a> <a href="https://github.com/Yakifo/amqtt"><img src="https://img.shields.io/badge/aMQTT-E6522C?logo=mqtt&logoColor=white" alt="aMQTT"></a> <a href="https://github.com/websocket-client/websocket-client"><img src="https://img.shields.io/badge/websocket--client-000000?logo=websocket&logoColor=white" alt="websockRelated Skills
canvas
344.4kCanvas Skill Display HTML content on connected OpenClaw nodes (Mac app, iOS, Android). Overview The canvas tool lets you present web content on any connected node's canvas view. Great for: -
feishu-drive
344.4k|
things-mac
344.4kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
344.4kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
