[packaging] 🎵 ter-music v1.11 系列发布帖 ── 1.x 时代的收官之作 ✨🐱
Tofloor
poster avatar
燕戏竹林
deepin
2026-05-22 13:48
Author

🎵 ter-music v1.11 系列发布帖 ── 1.x 时代的收官之作 ✨🐱

ヽ(✿゚▽゚)ノ 终于!v1.11.0 和 v1.11.1 带着满满的诚意来啦~
这也是 1.x 系列的最后两个版本,后续将迈向 2.0 的新篇章!(ノ◕ヮ◕)ノ*:・゚✧
本贴之前发布过,这里只做修改。

1779428304970.png


📢 重要公告 ── 1.11.x 系列是 1.x 的收官之作

各位用户、开发者朋友们:

从项目诞生到现在,ter-music 在 1.x 版本中积累了无数功能与改进。v1.11.0 和 v1.11.1 将会是 1.x 时代的收官之作 🎯

接下来,我会着手 ter-music 2.0 的开发工作,这将是一次重大的架构升级与重新设计 ─=≡Σ((( つ•̀ω•́)つ

2.0 将带来:

  • 🏗️ 更现代的代码架构
  • 🖥️ 更优秀的终端 UI 体验
  • 🔌 更灵活的插件/扩展机制
  • ...以及更多惊喜!✨

1.11.x 系列仍会继续维护重要 bug 修复,但不会再添加大型新功能。
欢迎大家提出宝贵的意见和建议!(´▽`ʃ♡ƪ)

每一次结束都是新的开始... 🎶🌸


🧊 强烈推荐:如意玲珑(Linyaps)安装方式 🧊

在 Linux 各种发行版中,最省心的安装方式莫过于 如意玲珑(Linyaps) 啦!(๑•̀ㅂ•́)و✧

  • ✅ 沙箱隔离,不影响系统环境
  • ✅ 开箱即用,无需手动安装依赖
  • ✅ 跨发行版兼容,一次打包到处运行

v1.11.1 的玲珑包已投递 玲珑商店,等待审核上架后方可搜索下载~
届时打开 玲珑商店 搜索 ter-music 即可一键安装!(ノ´ヮ`)ノ*: ・゚

也可以直接下载 .uab 文件通过命令行安装:

ll-cli install org.yxzl.ter-music_1.11.1_x86_64.uab
ll-cli run org.yxzl.ter-music

📦 其他架构去哪下?

除了 amd64 架构的软件包可以直接在 GitHub Releases 下载外,
其他架构(如 ARM64、龙芯 LoongArch64、申威 sw64 等) 的软件包,
可以前往论坛用户 @罐子 的 OBS 服务器下载 👇

🔗 点击跳转

感谢 @罐子 大佬为社区提供多架构构建服务!(`・ω・´)✨


⚠️ 关于 aarch64 软件包的说明

Release 中含有 aarch64(ARM64)架构的 DEB 包,但由于我手头没有 aarch64 的物理环境或虚拟机,无法测试该包的兼容性

如果你在 ARM64 设备(如树莓派、鲲鹏、Apple Silicon 虚拟机等)上使用,遇到任何问题欢迎反馈!望社区谅解 🙇‍♂️


💖 欢迎提交 Issue 和 Pull Request

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

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


🌟 版本更新内容总览 🌟



🎵 v1.11.1 — A Little Bit More Love for Your Ears 🐾

✨ わーい!v1.11.1 だよ!✨ — (◍•ᴗ•◍)❤

✨ 新功能

🏷️ 原生 APEv2 标签解析器(#377955a)

告别乱码元数据!新增完整原生 APEv2 解析器,支持自动 GBK 编码检测与恢复,让你的中文标签歌曲在播放器中正确显示 (。♥‿♥。)

此前依靠 FFmpeg 解析 APE 标签,遇到非 UTF-8 编码(尤其是中文 GBK)时常常变成一团乱码。现在内置的解析器会智能检测编码并自动转换!

支持的标签字段: 标题、艺术家、专辑、年份、注释等全部标准 APEv2 字段 ✅

🔄 交叉编译支持(#e0c9018)

新增 libswscale-dev 到构建依赖,arm64/loong64/sw64 等交叉构建更加顺畅 ✨

🐛 问题修复

问题 修复
🔊 暂停后切换曲目卡死 修复 PulseAudio 主循环未正确恢复导致的播放冻结 (╥﹏╥) → (^▽^)
🔍 搜索栏退格键显示异常 修复了中文输入法下的显示问题,输入体验更丝滑
🏷️ APE 标签 GBK 乱码 修复 try_gbk_fixup() 函数的边界情况处理
🛠️ C89 编译错误 修复严格 C89 模式下的兼容性问题

📦 打包与构建系统大改进

🐳 静态 DEB/RPM 构建(重磅!)

这是 v1.11.1 最大的亮点之一──完全容器化的静态构建系统!(ノ´ヮ`)ノ*: ・゚

  • FFmpeg 7.1 从源码编译为静态库(仅音频解码器,最小体积)
  • 其他依赖(ncurses、libcurl、libpng、PulseAudio 等)仍动态链接
  • 单个 DEB 包兼容 Debian 10/11/12/13 🎯
  • 单个 RPM 包兼容 RHEL 8/9/10 🎯
  • 使用 Debian 10 / Rocky Linux 8 构建,glibc 2.28 确保最大兼容性

🐳 Dockerfile 重构

  • Dockerfile.deb — 常规 DEB 构建(Debian 10/11/12/13)
  • Dockerfile.deb-static — 静态 DEB 构建(Debian 10,FFmpeg 自编译)
  • Dockerfile.rpm-static — 静态 RPM 构建(Rocky Linux 8,FFmpeg 自编译)
  • 职责清晰,按需选择!🗂️

🚀 RPM 构建提速

FFmpeg 源码下载从 curl 替换为 aria2 16 线程并发下载,速度飞起!(★ω★)

🐧 Ubuntu 24.04 兼容

添加跨发行版依赖替代方案(libpng16-16t64libjpeg62),DEB 包同时在 Debian 和 Ubuntu 上可用 👍

👤 文件所有权修复

Docker 构建产物不再属于 root,不再需要 sudo chownfix_ownership 自动处理 🎉

✅ 源码包收集

.dsc(DEB 源码)和 .src.rpm(RPM 源码)现在能正确收集到发布目录

📚 文档更新

  • 更新 README.mdBUILD_GUIDE.md,适配新的容器化与静态构建流程
  • 添加 ape_tag.c 到源文件清单

🎵 v1.11.0 — 重大功能更新!🚀

✨ わーい!ついに来たよ!✨ — (◍•ᴗ•◍)❤

📊 30 个文件变更,+2572 / -555 行 ─=≡Σ((( つ•̀ω•́)つ


✨ 新功能 ✨

🔍 异步线程搜索(#a69f493)

搜索从阻塞的 UI 线程移至后台 pthread,增量发布结果!(ノ◕ヮ◕)ノ*:・゚✧

  • ✅ 搜索不再卡界面——输入时照常操作
  • ✅ 匹配结果逐步呈现,不用傻等
  • ✅ 按 Escape 随时取消搜索
  • ✅ 超大播放列表也不怕!ヽ(´ー`)ノ

📑 播放列表排序(#fe38652)

新增 sort-mode 设置,支持按以下方式排序:

排序方式 说明
📛 标题 按曲名 A→Z 排序
🎤 艺术家 按艺术家名排序
💿 专辑 按专辑名排序
📄 文件名 按文件名排序

使用间接索引数组映射视觉行到曲目索引,不破坏原始播放列表数据。上下曲切换、鼠标点击、媒体控制全部正确遵循排序顺序!٩(◕‿◕。)۶

🎚️ 音频后端运行时切换(#b4f0806, #32c6b2d)

  • PulseAudio 和 ALSA 改为运行时 dlopen/dlsym 加载,不再编译时链接 🔄
  • 设置 → 播放 → 音频后端 支持三选项:
    • 🤖 Auto — 自动检测可用后端
    • 🔊 PulseAudio — 强制使用 PulseAudio
    • 🎛️ ALSA — 强制使用 ALSA
  • 重启后生效,配置持久化到 config.json 💾
  • 修复退出时可能的卡死问题(超时机制) (╯°□°)╯︵ ┻━┻ → ┬─┬ ノ( ゜-゜ノ)

❓ 帮助页面(#27c01e3)

  • F8 打开内置帮助页面 📖
  • 加载双语快速入门文档(中/英)
  • 支持滚动和搜索 🔎
  • 修复 F9 退出无效的问题 (;一_一)

📜 全新滚动条模块(#05c3162)

新增可复用的滚动条组件!在可滚动面板(播放列表、歌词、帮助页等)右侧边缘显示比例缩略块,仅在内容超出视口时可见。

  • ✨ 视觉精致的细条样式
  • 📍 实时反映滚动位置
  • 🎯 支持鼠标点击定位

ℹ️ 信息栏三栏布局(#e7b8104)

播放列表信息栏从「左侧元数据 + 右侧封面」重构为 三栏布局!(★ω★)

┌─────────────┬──────────────────┬──────────────┐
│  元数据信息   │  音频技术信息     │  封面图片     │
│  标题/艺术家  │  采样率/位深     │  (专辑封面)   │
│  专辑/年份    │  比特率/编码格式  │              │
└─────────────┴──────────────────┴──────────────┘

新增显示:采样率、位深、比特率、编码格式等音频技术信息 🎯

🎧 高清音频管线 16→32 位升级(#38c7b42)

全线升级至 32 位音频管线!(ノ≧∀≦)ノ

组件 升级内容
🔄 swresample 输出升级至 32 位
📊 PCM 缓冲区 16→32 位宽
🔊 PulseAudio PA_SAMPLE_S32LE
🎛️ ALSA SND_PCM_FORMAT_S32_LE
🌈 频谱显示 32 位计算精度

完整保留 24 位 FLAC 无损动态范围,音质更加细腻!🎶✨c911c02f20e352e85c47ac432ef5d32f648352d9

🎤 LRC 歌词增强(#4fea81a)

  • 支持 [ti:][ar:][al:] 头信息作为固定元数据歌词 📝
  • 自动剥离内嵌 [mm:ss.xx] 时间戳 ✂️

🐛 Bug 修复 🐛

▶️ 播放相关

  • ✅ XDG/命令行打开单个音频文件时自动开始播放(#5d70562)
  • ✅ XDG 打开文件时跳过恢复上次播放状态(#d58fdba)
  • ✅ 修复 play_audio() 破坏选中索引的问题(#fe38652)
  • ✅ 修复随机/顺序模式下首播放索引不一致(#fe38652)

🖥️ UI 稳定性(#f4a59ec)

重大修复! 之前在某些情况下 UI 会卡死,这次彻底根治!(ノಠ_ಠ)ノ

  • 渲染热路径中栈 VLA 改为堆分配缓冲区
  • 冗余歌词/频谱渲染限流至 150ms(dirty mask 机制)
  • 远程下载时 curl 进度回调保持 ncurses 响应
  • 大终端窗口下无歌词频谱降采样
  • 级联全屏重绘改用延迟触发
  • ✅ 修复盲文专辑封面底行像素映射错误(#b598c9d) (ᓀ ᓀ)

🧊 Linyaps(玲珑)修复

  • ✅ 修复帮助文档在玲珑容器中无法加载的问题
    • 硬编码 /usr/local/share/ 路径与玲珑的 /opt/apps/.../files/ 前缀不匹配 (ᗒᗣᗕ)
  • ✅ 新增 TER_MUSIC_DATA_DIR 编译时定义,自动推导数据目录路径(#4e713c9)(`•ω•´)✧

📦 AppImage & 可移植包修复

  • 修复帮助文档完全缺失的问题
    • 构建脚本中存在死代码——检查不存在的 share/ 目录导致复制语句从未执行 (´;ω;`)
  • ✅ 新增 /proc/self/exe 可执行文件相对路径回退搜索
    • 自包含包中的 help 文档现在可在任意挂载点被正确找到(#b5c701d)(•̀ᴗ•́)و

🏷️ 元数据处理

  • ✅ MP3 文件 ID3v1.1 标签 GBK→UTF-8 编码转换(#8f3b36b)
    • 解决仅有 ID3v1 标签时 FFmpeg 将中文解码为 Latin-1 导致的乱码问题 (╥﹏╥) → (^▽^)

🔧 构建系统改进 🔧

  • 🐳 RPM 容器构建:添加 dbus-devel,修复 libjpeg 版本约束(#82f8692)
  • 🐳 移除 FFmpeg 库版本号约束 >= 4.0,兼容 EL8(#e44796d)
  • 🐳 修复 Docker 构建产物 root 所有权问题,新增自动修复机制(#5d875c3)(◕‿◕✿)
  • 📚 新增 FAQ 音频时延调优条目
  • 📚 添加 Docker / Python / Shell / Linyaps 徽章 🏅
  • 📚 同步 README 和快速入门帮助文件

📥 下载方式 📥

🧊 强烈推荐:如意玲珑(Linyaps)

# 从玲珑商店安装(审核上架后可用)
# 或直接下载 .uab 安装:
ll-cli install org.yxzl.ter-music_1.11.1_x86_64.uab
ll-cli run org.yxzl.ter-music

📦 预编译包下载

格式 架构 文件
🧊 玲珑 Linyaps 🧊 amd64 org.yxzl.ter-music_1.11.1_x86_64.uab
📦 DEB(静态) amd64 ter-music_1.11.1-1_amd64.deb
📦 DEB arm64 ter-music_1.11.1-1_arm64.deb
📦 RPM(静态) amd64 ter-music-1.11.1-1.el8.x86_64.rpm
📦 RPM(源码) amd64 ter-music-1.11.1-1.el8.src.rpm
🖼️ AppImage amd64 ter-music-1.11.1-x86_64.AppImage
🗜️ 便携包 amd64 ter-music-1.11.1-portable-x86_64.tar.gz

🔗 其他架构去哪下?

论坛用户 @罐子 的 OBS 服务器:
🔗 点击跳转

包含 ARM64、LoongArch64 等多架构构建,感谢 @罐子!(`・ω・´)✨

🛠️ 从源码构建

git clone https://github.com/YXZL985/ter-music.git
cd ter-music
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install

⚠️ 关于 aarch64 软件包的说明

Release 中含有 aarch64(ARM64)DEB 包,但由于我手头没有 aarch64 的物理机或虚拟机,无法测试该包的兼容性 🙇‍♂️

如果你在 ARM64 设备(树莓派 🍓、鲲鹏、Apple Silicon 虚拟机等)上使用,遇到任何问题请反馈!


💖 致谢

感谢所有贡献者、测试者和用户的支持与反馈! ヽ(●´∀`●)ノ

特别感谢:

  • @罐子 — 提供 OBS 多架构构建服务 🙏
  • FFmpeg 团队和开源社区,让音乐播放成为可能 🎶
  • 所有提交 issue 和参与测试的朋友们——你们太棒了!(´▽`ʃ♡ƪ)

🚀 展望 2.0

1.11.x 是 1.x 时代的收官之作,接下来:

ヽ(✿゚▽゚)ノ  1.x → 已完成历史使命
  ↓
   🚀  2.0 开发正式启动!
  ↓
(ノ◕ヮ◕)ノ*:・゚✧  敬请期待!

如果你对 2.0 有什么期待和想法,欢迎在论坛或 GitHub 上讨论!👇

  • 🐛 Bug 反馈 / 功能建议: https://github.com/YXZL985/ter-music/issues
  • 🔧 贡献代码: https://github.com/YXZL985/ter-music/pulls
  • 项目主页: https://github.com/YXZL985/ter-music

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
Shalling
Deepin Wiki Editor
2026-05-22 14:54
#1

👍 👍 👍

Reply View the author
avatar
海水
deepin
2026-06-02 17:49
#2

专门登录给这个点赞👍 👍 👍

Reply View the author