融入 Windows 任务栏的歌词条插件,适用于 EchoMusic 桌面客户端。
实时显示当前歌词:逐字扫过、翻译/音译、旋转封面、悬停播放控制; 并且能避让任务栏原有图标、其他窗口全屏时自动淡出隐藏。
- 本仓库的全部代码——插件逻辑(JS)、任务栏监视器(C#)、样式、索引与文档——均由 AI 编程助手生成, 人类只负责提出需求、体验效果与反馈问题(开发环境:IDE 内与 CodeBuddy 结对迭代)。
- 因此代码未经人工逐行审计,可能存在未知缺陷或不符合预期的实现细节。
- 好消息是:所有源码都在仓库中,包括辅助进程的 C# 源码与编译命令。 你可以自行审计、修改、重新编译,或继续用 AI 改进它。
- 建议:在了解这一点后再决定是否启用;如对辅助进程有顾虑,可自行用源码重新编译核对,或仅使用不依赖进程的功能。
- 实时歌词:任务栏空闲区域显示当前播放歌词,换行与演唱实时同步(内部锚定时钟 + 逐字时间轴)
- 逐字扫过:按演唱进度从左到右逐字点亮,词内渐变过渡(优先逐字时间轴,无数据时按行时长估算)
- 演唱跟随滚动:超长歌词横向滚动跟随实际演唱速度——主题色/灰色分界线到达窗口中间后固定在正中,直到滚到底;快唱快滚、暂停即静止
- 翻译 / 音译:独立开关(翻译默认开、音译默认关),显示在原文下方一行,同样逐字扫过
- 旋转封面:歌词左侧圆形封面,播放时自动旋转,描边颜色跟随主题色
- 悬停控制:悬停隐藏歌词并浮现——喜欢(鲜红)/ 上一首 / 播放暂停 / 下一首,私人 FM 时额外提供「不喜欢」
- 位置选择:居左 / 居中 / 居右三种对齐,自动计算任务栏空闲区域
- 图标自动避让(本插件核心特性):实时监测托盘通知区与任务带矩形,托盘新增图标时窗口自动左移/收缩,不遮挡任务栏原有图标
- 全屏自动隐藏:其他窗口进入全屏时自动淡出隐藏,退出后淡入恢复
- 层级自愈:任务栏获得焦点压低窗口时,约 1 秒内以不抢焦点的方式自动抬升
- 视觉融合:透明背景融入任务栏,悬停浮现毛玻璃底衬,颜色跟随 EchoMusic 主题色
EchoMusic 官方插件源里已有一款同类插件
taskbar-lyric(作者 yaoyaoprincess)。
两者都是任务栏歌词浮窗,功能有重合(逐字歌词、悬停控制、喜欢、私人 FM 不喜欢、封面、翻译/音译),
以下是诚实的差异对照,按需选择即可:
| 维度 | 本插件 | 官方源 taskbar-lyric |
|---|---|---|
| 任务栏图标避让 | ✅ 原生辅助进程实时读取托盘区/任务带矩形,托盘新增图标时窗口自动让位,永不遮挡 | ❌ 仅自动贴靠任务栏边缘 + 手动水平/垂直偏移滑块 |
| 全屏自动隐藏 | ✅ 其他窗口全屏时自动淡出隐藏、退出淡入 | ❌ 未提供 |
| 层级被任务栏压低 | ✅ 自愈:不抢焦点地周期性重新抬升 | 心跳软恢复置顶(screen-saver 级一次置顶) |
| 滚动规则 | 分界线钉在窗口中线,直到滚到底(随演唱快慢) | 进度驱动 translateX 平滑滚动 |
| 副歌词逐字 | ✅ 用 translatedCharacters / romanizedCharacters 时间轴逐字扫过 |
副行显示(README 未提及逐字) |
| 窗口位置 | 左/中/右对齐自动排布,不支持拖拽 | ✅ 自由拖拽 + 偏移微调 + 尺寸缩放 |
| 歌词正则过滤 | ❌ 暂无 | ✅ 可过滤制作/版权等无关行 |
| 外观自定义 | 跟随主题色(已播放色、封面描边),无独立调色 | ✅ 字体、已播放色、未播放色、封面形状/位置/尺寸 |
| 实现方式 | 纯原生 JS(无构建、无依赖)+ 约 10 KB C# 辅助进程(源码随附) | 纯插件 JS |
| 代码来源 | 100% AI 生成(见上方声明) | 未声明 |
怎么选:需要「不被任务栏图标压住 / 全屏自动隐藏 / 自动对齐」→ 用本插件;
需要「自由拖拽、调色、字体、歌词过滤」→ 用官方源的 taskbar-lyric。
- EchoMusic →「插件管理」→「插件源」→ 添加:
https://github.com/abailanli/echomusic-taskbar-lyrics - 在列表中找到「任务栏歌词」,安装并启用
- 首次启用时,EchoMusic 会请求授权启动辅助进程
bin/TaskbarWatcher.exe(用于监测任务栏图标区域与前台全屏状态),允许后避让与全屏隐藏才会生效; 拒绝授权时插件仍可用,但只按屏幕估算位置显示
辅助进程源码:
taskbar-lyrics/bin/TaskbarWatcher.cs, 约 10 KB,仅通过 Win32 API 读取窗口矩形与前台窗口状态,并 POST 到插件本机的127.0.0.1随机端口;不访问网络、不读取文件、不采集任何用户数据。
- 下载仓库(Code → Download ZIP)并解压
- 把
taskbar-lyrics文件夹复制到%APPDATA%\echo-music\plugins\ - 重启 EchoMusic,在「插件管理」中启用「任务栏歌词」
「插件管理 → 任务栏歌词 → 设置」:
| 选项 | 默认 | 说明 |
|---|---|---|
| 启用任务栏歌词 | 开 | 总开关 |
| 显示旋转封面 | 开 | 圆形封面,播放时旋转 |
| 逐字歌词 | 开 | 逐字扫过效果 |
| 显示翻译 | 开 | 原文下方显示翻译 |
| 显示音译 | 关 | 原文下方显示音译 |
| 对齐方式 | 居中 | 居左 / 居中 / 居右 |
| 窗口宽度 | 420px | 200–900 px |
| 歌词字号 | 14px | 12–18 px |
- 浮窗由 EchoMusic 插件浮窗机制创建(透明、置顶、不占任务栏入口、允许覆盖任务栏区域)
- 歌词与播放状态来自
ctx.nowPlaying快照。快照约 1 秒推送一次, 插件内部维护锚定时钟(参考宿主useStableLyricIndex的设计): 两次快照之间用performance.now()连续推算播放进度,偏差在 300ms 内不校正、 轻微滞后按 35% 比例校正、seek/换歌直接对齐——保证换行与逐字严格跟唱 - 播放控制(喜欢 / 上一首 / 播放暂停 / 下一首)直接转发宿主播放器命令;
「不喜欢」通过
ctx.player.dislikePersonalFm()执行(与私人 FM 页面行为一致) bin/TaskbarWatcher.exe每 400ms 采集一次任务栏几何信息(任务栏 / 托盘通知区 / 任务带矩形、DPI、前台全屏状态),仅在状态变化时上报给插件本地服务; 插件据此计算空闲区域并移动浮窗,托盘新增图标时窗口自动左移- DPI 换算:用「任务栏物理宽度 ÷ 渲染器屏幕宽度」实测比例自适应, 同时兼容 1:1 物理坐标与高分屏 DIP 两种运行环境
- EchoMusic
>= 2.2.7 - Windows 10 / 11(横向任务栏;竖向任务栏自动降级为屏幕底部显示)
- 多显示器:跟随主任务栏
.
├── echo-plugins.json # 插件源索引(供 EchoMusic 插件管理读取)
├── README.md
├── LICENSE # MIT
└── taskbar-lyrics/ # 插件本体
├── manifest.json # 插件清单(浮窗声明 + process/webServer 能力)
├── index.js # 主入口:布局引擎、辅助进程管理、设置面板
├── taskbar.js # 浮窗入口:歌词渲染、逐字/滚动、悬停控制
├── taskbar.css # 浮窗样式
├── icon.svg # 插件图标
└── bin/
├── TaskbarWatcher.cs # 监视器源码(C# 5,可审计/重编译)
└── TaskbarWatcher.exe # 任务栏 / 全屏监视器(约 10 KB)
重新编译监视器(无需 .NET SDK,使用 Windows 自带编译器):
& "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" `
/nologo /target:exe /platform:anycpu /optimize+ `
/out:"taskbar-lyrics\bin\TaskbarWatcher.exe" `
"taskbar-lyrics\bin\TaskbarWatcher.cs"修改辅助进程后,EchoMusic 会因可执行文件哈希变化重新请求授权(这是宿主的安全机制)。
插件开发文档见 EchoMusicPlugins/docs。