返回作品页
Blue Music 开源笔记约 8 分钟/桌面应用

蓝亦云音乐:把一个极客播放器改造成顺手的网易云蓝

不是从零造轮子,而是站在开源项目 Any Listen 的肩膀上做一次彻底的体验改造:换蓝色主题、画原创图标、补齐桌面歌词与批量下载,再全平台开源发版。

蓝亦云音乐 · Blue Music cover

蓝亦云音乐(blue-music)已经开源,仓库是 github.com/moneychen003/blue-music,Releases 里有 Windows、macOS、Linux 三个平台的安装包,直接下载即用。

起点是一个叫 Any Listen 的开源播放器,内核非常干净、纯净无广告,但界面偏极客、有些日常功能只是占位没接通。我每天听歌更习惯网易云那套顺手的交互和蓝色调,于是决定不从零造轮子,而是 fork 它做一次彻底的体验改造。

整个过程几乎全程由 AI 协作完成:改主题色、接真实数据、重做桌面歌词、补下载管理、画原创图标、配 GitHub Actions 三平台打包,最后开源发出 1.0.0。

Why

为什么是改造,而不是从零写

播放器这种东西,难点从来不在播放本身,而在那一大堆边角:本地/在线列表、音源扩展、歌词解析、跨平台打包。这些 Any Listen 已经做得很稳了。

我真正不满足的是“体验层”——红色调不对味、首页是占位数据、没有桌面歌词、不能批量下载。这些恰好是改造成本最低、收益最高的部分。所以策略很清楚:内核照单全收并致谢,体验层大改。

  • 内核、扩展音源、本地/WebDAV 列表:直接复用,不动。
  • 主题、首页数据、桌面歌词、下载、收藏:重做或补全。
  • 全程保留对原作者的致谢与开源许可。
Visual

第一步:把红换成蓝,再画一个原创图标

强调色不是改一个变量那么简单——它在主题覆盖层里写死了一整套红色梯度。把 --color-primary 那一族从 rgb(236,65,65) 系统性换成蓝色后,按钮、选中、进度、Hi-Res 标、桌面歌词高亮全局统一成了蓝。

图标一开始想直接借网易云的,但那显然侵权。于是用代码(PIL)原创画了一个:蓝色渐变圆角方 + 白色双音符,干净、一眼是音乐、和任何第三方图标都没关系。

蓝亦云音乐封面:蓝色图标 + 标题
原创应用图标与蓝色主题:和网易云毫无关系,但保留了“顺手”的那种调性。
Real

第二步:把占位变真实,把交互做顺手

改造前,“我喜欢的音乐”是写死的假数据,精选和排行榜也没接通。逐个把它们接到真实的本地 LOVE 列表、真实歌单广场和榜单,并用虚拟滚动扛住几千首歌。

再补上一堆“网易云有但这里没有”的小事:跨音源红心识别(换源播同一首也能点亮)、列表搜索框、右键收藏、粘贴网易云歌单链接自动建列表、空格键播放暂停、窗口自由缩放。

  • 我喜欢 / 精选 / 排行榜 / 最近播放:全部接真实数据。
  • 新增“收藏专辑/歌单”书签 + 侧边栏“我的收藏”网格页。
  • 跨音源红心、搜索框、右键收藏、空格暂停、粘贴链接建单。
Lyric

第三步:重做透明桌面歌词

原项目把桌面歌词砍掉了。重新做了一个透明置顶的悬浮歌词窗:逐行跟随播放进度高亮,可以自由拖到任何位置。

最费劲的是“锁定”:锁定后整窗鼠标穿透,点击直接落到下层的 Dock 或桌面,不挡操作;但又得能解锁——于是用了转发鼠标事件的技巧,锁定时把鼠标移到那个小锁按钮上会临时恢复可点,点一下就解锁。

  • 透明无边框 + 置顶 + 逐行高亮 + 可拖动。
  • 锁定 → 鼠标穿透到下层,不挡 Dock / 桌面。
  • 悬停锁按钮临时可点用于解锁,体验接近网易云桌词。
Ship

第四步:开源 + GitHub Actions 三平台自动打包

本地用 Mac 能轻松打 macOS 和 Linux,但 Windows 包要装 wine、还要交叉编译原生模块,很折腾。最干净的办法是把代码开源到 GitHub,用 Actions 在真实的 windows / macOS / ubuntu 云主机上各自打包。

中间踩了几个坑:electron-builder 在 pnpm 下 macOS 签名 import 漏 .js 后缀(用 pnpm patch 固化补丁解决)、Windows 的 nsis 安装包有个 spawnAndWriteWithOutput 的 bug(改打 7z 绿色版绕开)。修完之后,推一个 v* 标签就能自动打三平台包并发 Release。

  • GitHub Actions 矩阵:windows / macos / ubuntu 各自真机打包。
  • macOS 签名补丁用 pnpm patch 固化,install 后自动应用。
  • 推 v1.0.0 标签 → 自动出包 + 创建 Release,全平台一键下载。
实现流程

从 fork 到全平台 Release

1

Fork 与定调

复用 Any Listen 的播放内核与音源体系,明确只改“体验层”:主题、首页数据、歌词、下载、收藏。

2

换蓝与画图标

系统性把红色主题换成蓝,用代码原创绘制蓝色双音符图标,替换全套 icns / png。

3

接真实数据

我喜欢 / 精选 / 排行榜 / 最近播放接通真实来源,补跨源红心、搜索、收藏、批量下载。

4

重做桌面歌词

透明置顶悬浮窗,逐行高亮、可拖动、锁定后鼠标穿透并支持悬停解锁。

5

开源与发版

推到 GitHub 公开,配 Actions 三平台打包,推标签自动发 Release。

关键取舍

站在巨人肩膀上,而不是重复造轮子

内核、音源、列表这些硬骨头照单复用并致谢,把精力全押在最影响日常体验的那一层。

图标一定要原创,不碰侵权

宁可用代码画一个朴素但干净的双音符,也不直接拿第三方图标改色。

用云端 CI 解决跨平台打包

Windows 在本机交叉编译又慢又坑,交给 GitHub Actions 在真机上打最省心、也最可复现。

AI 在里面做什么

AI 是改造执行者

从改主题色、接数据到重做歌词窗、写打包脚本,绝大部分代码改动由 AI 直接完成。

AI 是排错搭档

签名补丁、nsis bug、浅克隆推送失败这些坑,都是 AI 定位根因再给出绕法。

AI 是美工

原创图标和这张封面,都是让 AI 用代码(PIL)直接画出来的。

结论

蓝亦云音乐不是一个全新发明,它更像一个证明:当一个开源内核足够干净时,借助 AI,一个人可以在很短时间里把它改造成自己真正顺手的样子,并完整地开源发版。

下一步会继续补桌面歌词的样式设置、修好 Windows 的正经安装包,以及适配更多在线音源。