WinMsgHub 是一款基于 Python + PyQt6 开发的 Windows 桌面应用,专为多源消息聚合、统一管理、智能通知设计,一站式解决物联网消息、网络推送、本地事件、订阅内容等分散接收的问题。
无论是 MQTT 物联网消息、RSS 新闻订阅、文件变化提醒,还是剪贴板内容、系统硬件事件,WinMsgHub 都能秒级处理并以高度定制化的桌面弹窗展示,同时支持本地数据存储、消息过滤、统计分析等核心能力。
- ✅ 多源全覆盖:支持8类消息源,支持添加多个消息源实例(例如:多MQTT服务器/多监控文件夹等)
- ✅ 极致定制化:弹窗位置/动画/样式全自定义,你的弹窗你做主
- ✅ 实时高效:秒级消息处理,配置热重载(修改立即生效,无需重启软件)
- ✅ 安全本地化:SQLite 本地存储所有数据,还支持纯本地MQTT服务,一键启动
- ✅ 轻量易用:软件体积极小,可最小化至系统托盘,不占用任务栏,操作界面现代化、易上手
- MQTT(支持 TLS 加密连接)
- WebSocket 实时双向通信
- API 定时轮询(HTTP/HTTPS)
- Webhook 内置服务器接收推送
- IMAP 邮件服务器实时监听
- RSS/Atom 博客/新闻订阅解析
- 文件监控 文件夹/文件变化监控(增删改移)
- 剪贴板 内容实时监控(文本/文件)
💡 所有消息源均支持多实例和单独启用/禁用!
| 📍 位置定制 | 🎬 动画效果 | 🎨 样式自定义 |
|---|---|---|
| 8个位置可选 四角+四边 |
3种动画效果 滑入/淡入/缩放 支持动画速度调节 |
完全自定义 尺寸/透明度/颜色 字体/音效 |
- 💾 消息管理:SQLite本地存储,支持关键词搜索/时间筛选/数据导出
- 🎯 智能过滤:自定义过滤规则(包含/排除关键词),只接收重要消息
- 📊 统计面板:实时查看消息数量/各源占比/连接状态,支持数据可视化
- 🔔 系统托盘:最小化至托盘,支持托盘右键快捷操作/托盘消息提示
- ⚡ 热重载:所有配置修改立即生效,无需重启应用
- 🔄 自动更新:一键检查GitHub最新版本,及时获取新功能
- 📝 完善日志:分级日志记录(INFO/DEBUG/ERROR),方便问题排查
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10 64位 / Windows 11(推荐) |
| Python 版本 | 3.9 及以上(3.10/3.11 兼容性最佳) |
| 硬件 | 2GB 及以上内存,100MB 及以上磁盘空间 |
| 依赖 | 无额外系统依赖,pip 自动安装所有Python包 |
📥 点击展开 - 安装步骤
1. 克隆/下载项目到本地,进入项目根目录
cd WinMsgHub2. 安装项目依赖(建议使用虚拟环境)
# 推荐:创建虚拟环境
python -m venv venv
venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple3. 运行应用(三种方式可选)
# 方式1:批处理运行(推荐,自动激活虚拟环境)
run.bat
# 方式2:直接运行(显示控制台日志)
python main.py
# 方式3:无控制台窗口运行
pythonw main.py- 启动应用后,点击左侧导航栏「消息源配置」
- 选择需要配置的消息源类型(如MQTT/文件监控)标签页
- 点击「➕ 添加」按钮,填写配置信息(带*为必填项)
- 点击「保存」,配置立即生效(无需重启)!
📄 配置示例:查看项目内
config/example_multi_sources.json了解所有消息源的完整配置参数。
由于本人只有Android系统的手机,以下教程仅演示如何将Android手机上的任何消息转发至电脑上的WinMsgHub,并以消息弹窗的形式在电脑上展示出来
- 确保手机与电脑都连接在同一局域网内
- 电脑上安装好 “WinMsgHub” 并启动
- 手机上安装好 “短信转发器” 并启动,下载地址:https://github.com/pppscn/SmsForwarder/releases
-
点击左侧的 “本地MQTT服务”,之后点击 “启动服务” 按钮
-
之后点击左侧的 “消息源配置”,再点击 “添加MQTT消息源” 按钮
-
在弹出的配置界面中为这个MQTT消息源起一个名称,其它配置项保持默认
-
点击底部的 “一键复制JSON模板”,将复制的JSON模板发送给自己的手机,让自己的手机复制好
-
之后点击底部的 “OK” 按钮,此时WinMsgHub就配置好了
- 点击软件底部的 “发送通道”,再点右上角的 “+”,选择 “Socket”
- 为通道随便起个 ”名称“,“服务端IP” 和 “端口” 依据 WinMsgHub 中 “本地MQTT服务” 页面中展示的 “服务地址” 进行填写
- 往下滑,在 ”输入消息主题“ 和 ”输出消息主题“ 中填入 ”/WMH“(填入时不要加引号!)
- 之后直接点击底部的 ”保存“ 按钮
- 再点击底部的 ”转发规则“,在顶部你会看到支持转发 “短信消息”、“通话消息” 和 “应用通知”,接下来我以转发 “短信消息” 为例
- 点击右上角的 “+”,选择 “发送通道” 为你刚刚新增的那个Socket通道
- 点击 “启用自定义模板”,将之前从 WinMsgHub 复制的 “JSON模板” 粘贴进输入框中
- 将JSON模板中的消息标题、消息内容和来源名称这三段文本删掉(引号别删)
- 将输入位置点在 “title” 后面的空双引号中,点击底部的 “来源姓名”
- 将输入位置点在 “content” 后面的空双引号中,点击底部的 “短信内容”
- 将输入位置点在 “source” 后面的空双引号中,点击底部的 “来源号码”(source是可选的,可以没有这个JSON字段)
- 最后点击最底部的 “保存” 按钮,之后手机接收到的所有短信都会被转发到 WinMsgHub 上,并以弹窗形式出现啦!
- 若长期使用,建议将 WinMsgHub “系统设置” 中的 “开机自启动” 打开,以及 “本地MQTT服务” 页面中的 “下次启动软件时自动启动MQTT服务” 勾上
- 还有就是根据 “本地MQTT服务” 页面顶部的静态内网IP配置教学,将自己电脑的内网IP配置为静态IP
(还可以通过配置 WinMsgHub “弹窗设置” 中的 “智能复制设置” 实现自动提取短信通知中的 “验证码” 至系统剪贴板哦~)
采用分层架构设计(UI层/核心层/数据层/工具层),模块解耦、易扩展,便于后续新增消息源和功能。
📂 点击展开 - 完整项目结构
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 # 消息连接器测试
| 类别 | 技术/库 | 核心用途 |
|---|---|---|
| 主开发语言 | 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 文件。
感谢以下优秀的开源项目,WinMsgHub的开发离不开它们的支持:












