[packaging] 端闱乐部 v2.0.0——全新升级!
Tofloor
poster avatar
燕戏竹林
deepin
2026-06-05 22:27
Author

🎶 Ter-Music v2.0.0 — All-New Experience! ✨🐱

🎉 2.0 正式版来啦! ヽ(✿゚▽゚)ノ
这是 ter-music 历史上最大的一次更新,46 次提交,从架构到功能的全面进化 ─=≡Σ((( つ•̀ω•́)つ
发布日:2026-06-05 | 开发者:@YXZL985(燕戏竹林)
仓库:https://github.com/YXZL985/ter-music | 许可证:GPL-3.0-or-later


👀 本文阅读提示

v1.11 系列的内容(异步搜索、32 位音频管线、信息栏三栏布局、滚动条、排序、LRC 增强、音频后端切换等)已在上一篇文章中详细介绍,本文不再赘述 (◕‿◕✿)
以下仅列出 v2.0.0 真正新增的内容~


🎛️ 10-Band Graphic Equalizer — 10 段图形均衡器

✨ 大家期待已久的均衡器终于来了!✨ — (ノ≧∀≦)ノ

10 段双二阶 IIR DSP 均衡器,配以终端内可视化柱状 UI:

频段 中心频率 类型
31 Hz 超低音 🥁
62 Hz 低音基底
125 Hz 中低音 🎸
250 Hz 下中频
500 Hz 中频 🎤
1 kHz 上中频
2 kHz 中高频 🎻
4 kHz 临场感
8 kHz 高频 ✨
16 kHz 极高频 🎵
  • 🎚️ 每频段 -12dB ~ +12dB 独立增益调节
  • 📊 实时柱状可视化 — 调 EQ 所见即所得
  • ⌨️ 左右选频段、上下调增益
  • 💾 配置持久化

「终于能在终端里调 EQ 了!」 (´;ω;`)✨


🎵 CUE 分轨支持(全新)

格式 支持情况
🟣 FLAC + CUE ✅ 虚拟分轨
🟠 APE + CUE ✅ 虚拟分轨
🔵 WV + CUE ✅ 虚拟分轨
  • 自动检测同目录 .cue 文件
  • 不破坏原始文件,纯内存虚拟分轨 🧠
  • CUE 编码自动检测(GBK/BIG5/Shift-JIS,可配置回退)
  • 内嵌歌词优先提取(FFmpeg 元数据 → APE 标签 → 外部 LRC)
  • 原生 APEv2 标签解析器,支持 GBK 编码恢复

🔌 PipeWire 原生音频后端

新增 原生 PipeWire 音频后端,与 PulseAudio / ALSA 三后端并列!(◕‿◕✿)

┌─────────────────────────────────┐
│        音频后端管理器           │
├─────────┬─────────┬─────────────┤
│ PulseAudio │  ALSA  │  PipeWire  │
│  (dlopen)   │ (dlopen) │  (dlopen)   │
└─────────┴─────────┴─────────────┘
  • 运行时 dlopen,无编译时依赖
  • 自动回退:PipeWire → PulseAudio → ALSA
  • 设置中一键切换(设置 → 播放 → 音频后端)
  • 修复 PipeWire RT_PROCESS 导致的 UI 损坏 🛠️

💡 Arch/Fedora 用户: PipeWire 已是主流,现在 ter-music 原生支持了!🎯


🎮 17 种播放模式 & 播放队列

🔄 PlayMode:从 4 种到 17 种

LoopMode(顺序/单曲循环/列表循环/随机 四种)→ PlayMode 枚举 17 种模式 🚀

类别 模式
🌐 全局(5 种) Sequential、Single Repeat、List Repeat、Shuffle Once、Shuffle Repeat
📁 文件夹(4 种) Folder Sequential / Repeat / Shuffle / Shuffle Repeat
💿 专辑(4 种) Album Sequential / Repeat / Shuffle / Shuffle Repeat
🎤 艺术家(4 种) Artist Sequential / Repeat / Shuffle / Shuffle Repeat

一共 5 + 4×3 = 17 种模式! 设置 → 播放 → 播放模式即可切换,侧边栏也有快捷入口 (•̀ᴗ•́)و

📋 Play Queue:播放队列系统

功能 说明
➕ 添加到队列 文件浏览器/播放列表一键加入
🔢 队列序号 UI 清晰标识播放顺序
▶️ 正在播放指示 高亮标记当前曲目
⌨️ 队列快捷键 专用键位管理
💾 队列持久化 重启不丢失!

🔄 无缝预加载

新增无缝预加载开关(默认关闭):

  • 当前曲目播放完毕前自动预加载下一曲
  • 近乎无间隙切换,适合现场专辑/古典音乐 🎼

🎨 UI 全面进化

🆕 弹出菜单系统

全新弹出菜单取代旧版内嵌菜单:

  • 双模式播放列表
  • 弹出时自动暂停进度条更新
  • 修复底部溢出、残留显示、ESC 关闭、鼠标点击支持、滚动条 (╥﹏╥)

🎨 24 + 1 配色方案

项目 内容
🎨 预设 24 种 — 从赛博朋克到小清新
✏️ 自定义 1 个槽位,自由调色
🛡️ 保护 自动检测对比度,杜绝「白底白字」

📋 选择菜单

± 调节控件全部升级为弹出式选择菜单 🎯

以前:音量: [+++++-----]
现在:音量: [ 50% ▾ ] — 优雅!(◉‿◉)

🧩 滚动条 & 帮助页面

  • 滚动条组件 — 播放列表、歌词和帮助面板统一配备
  • 帮助页面(F8)— 支持滚动和搜索

⚡ 性能

📉 段缓冲区内存减半

RSS 占用从 ~40MB 降至 ~20MB!( ゚д゚)

优化段缓冲区内存分配,长时间播放场景效果显著 👍


🗄️ SQLite 音乐库 + XML 配置

告别 JSON,迎接 SQLite 时代!( •̀ω•́ )ゞ

项目 旧方案 新方案
🗂️ 存储格式 JSON 文件 SQLite 数据库
🚀 查询性能 O(n) 遍历 索引查询 O(log n)
🔄 并发安全 ✅ 事务隔离
📦 完整性 手动管理 约束与事务
  • 库浏览器 UI — 按艺术家/专辑/流派浏览、全文搜索
  • JSON 迁移 — 旧配置自动迁移,无缝升级
  • XML 配置格式config.jsonconfig.xml,更健壮

🔧 代码重构

🏗️ 命名空间迁移

所有头文件从散乱的根目录 → org.yxzl.ter-music/ 命名空间,避免冲突

🔪 大文件拆分

源文件 旧大小 拆分后
audio/audio.c 长文件 → 8 个独立模块 📦
menu_views.c 4737 行 → 功能分散,删除 🎯
ui/ui.c 3195 行 → 多个独立 UI 模块 📦

🎯 其他重构

  • 修复所有隐式函数声明警告
  • 补充缺失的头文件
  • 剔除孤立测试文件,清理 gitignore

🐳 构建系统升级

🔗 静态 FFmpeg 链接

FFmpeg 从源码编译为静态库(仅音频解码器):

  • 单 DEB 包兼容 Debian 10/11/12/13、Ubuntu 全系 🎯
  • 单 RPM 包兼容 RHEL 8/9/10 🎯
  • ✅ glibc 2.28 确保最大兼容性

📦 新增构建格式

格式 架构 说明
🧊 Linyaps(如意玲珑) amd64 deepin/UOS 原生支持
🖼️ AppImage amd64 单文件分发(需 FUSE)
🗜️ Portable tar.gz amd64 解压即用
📦 DEB 源码包 amd64 .dsc + .orig.tar.gz + .debian.tar.xz
📦 DEB arm64 ARM64 交叉编译
📦 RPM SRPM amd64 每个 RPM 二进制包均附带源码包
🚀 launch-auto-build.sh 一键多格式构建入口

所有构建产物位于 build/release/ 目录 ٩(◕‿◕。)۶


📦 预编译包速查

文件 格式 架构
ter-music_2.0.0-1_amd64.deb DEB(静态 FFmpeg) amd64
ter-music_2.0.0-1_arm64.deb DEB arm64
ter-music-2.0.0-1.el8.x86_64.rpm RPM(静态 FFmpeg) amd64
ter-music-2.0.0-1.el8.src.rpm RPM 源码包 (SRPM) amd64
ter-music_2.0.0.orig.tar.gz DEB 源码(上游原始压缩包) amd64
ter-music_2.0.0-1.debian.tar.xz DEB 源码(Debian 打包配置) amd64
ter-music_2.0.0-1.dsc DEB 源码(控制文件) amd64
ter-music-2.0.0-x86_64.AppImage AppImage amd64
ter-music-2.0.0-portable-x86_64.tar.gz 便携压缩包 amd64
org.yxzl.ter-music_2.0.0_x86_64.uab 如意玲珑 (Linyaps) amd64

💡 小贴士:

  • Debian/Ubuntu/deepin 用户 → .deb
  • Fedora/RHEL/Rocky 用户 → .rpm
  • 任意 Linuxportable tar.gz(无需安装依赖!)
  • deepin/UOS 玲珑环境.uab
  • ARM64(树莓派等)arm64.deb

🔗 其他架构(@罐子的 OBS 服务器)

🔗 obs22.odata.cc — 含 ARM64、LoongArch64 等 (`・ω・´)✨

🧊 玲珑安装

ll-cli install org.yxzl.ter-music_2.0.0_x86_64.uab
ll-cli run org.yxzl.ter-music

(等待玲珑商店审核上架后也可搜索下载)


💖 欢迎提交 Issue 和 Pull Request

ter-music 是一个开源项目,社区的每一份贡献都至关重要!

无论是代码、文档、翻译还是使用反馈,都欢迎之至!ヽ(●´∀`●)ノ


🎌 高考特别寄语

全国高考日(6月7日前后)在即,端闱乐部 为所有高三学子加油! 🩷

📚 十年磨一剑,今朝试锋芒!
🏆 乾坤未定,你我皆是黑马!稳住心态,超常发挥!
🎯 合上笔盖的那一刻,有着战士收刀入鞘的骄傲!

加油!加油!加油! (๑•̀ㅂ•́)و✧ — 金榜题名,一定有你! 🎉🎉🎉

「大鹏一日同风起,扶摇直上九万里。」— 李白 🦅

「长风破浪会有时,直挂云帆济沧海。」— 李白《行路难》

🏆 金榜题名  🏆  蟾宫折桂  🏆  前程似锦
  📖 妙笔生花  📖  超常发挥  📖  梦想成真

💖 致谢 & 展望

  • FFmpeg、PulseAudio、PipeWire、ncurses、SQLite 开源社区 🎶
  • AppImage、如意玲珑、Debian/RPM 打包生态系统 🙏
  • 所有提交 issue 和参与测试的朋友们 (´▽`ʃ♡ƪ)

🚀 v2.0 是新起点,更多精彩在路上!

Enjoy Ter-Music! 🎵✨ Let's make listening to music in the terminal fun! 🎶

Made with 💖 and lots of ☕ by @燕戏竹林
✦ 🐱 🎵 🎶 🐧 🧊 ✦


本文章发布于「deepin」社区论坛,如需转载请注明出处。 📝🌸

Reply Favorite View the author
All Replies
avatar
玲泷沙.spark
deepin
2026-06-05 22:32
#1

沙发

Reply View the author
avatar
流星追月
deepin
2026-06-05 22:59
#2

这次音乐组件来了一个狠的!

Reply View the author
avatar
燕戏竹林
deepin
2026-06-05 23:21
#3
流星追月

这次音乐组件来了一个狠的!

kissing_heart

Reply View the author
avatar
neko
deepin
Ecological co-builder
Q&A Team
2026-06-06 09:35
#4

欧姆弥赛亚

Reply View the author