diff --git a/.SRCINFO b/.SRCINFO index 80c50f910af5..bb56b33bcf5c 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = ceru-music-appimage pkgdesc = Ceru Music 是一个跨平台音乐播放器,支持获取公开音乐信息和基于插件的播放功能。 pkgver = 1.8.1 - pkgrel = 2 + pkgrel = 3 url = https://ceru.docs.shiqianjiang.cn/ arch = x86_64 license = AGPL-3.0-only diff --git a/PKGBUILD b/PKGBUILD index 6c7d063fff8f..9741cce08c2e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,7 +2,7 @@ pkgname=ceru-music-appimage _pkgname=Ceru-Music # 用于 .desktop 文件和内部引用 pkgver=1.8.1 # AppImage 版本号,请与 GitHub Release 保持一致 -pkgrel=2 +pkgrel=3 pkgdesc="Ceru Music 是一个跨平台音乐播放器,支持获取公开音乐信息和基于插件的播放功能。" arch=('x86_64') # AppImage 通常是 x86_64 url="https://ceru.docs.shiqianjiang.cn/" @@ -85,11 +85,12 @@ Name[zh_CN]=澜音 Name=Ceru Music GenericName=Music Player Comment=${pkgdesc} -Exec=ceru-music +Exec=ceru-music %u Icon=${_pkgname} Type=Application Categories=Audio;Music;AudioVideo; StartupNotify=true +MimeType=audio/mpeg;audio/mp3;audio/x-mp3;audio/mpeg3;audio/x-mpeg3;audio/mpg;audio/x-mpg;audio/x-mpegaudio;audio/x-flac;audio/flac;audio/x-vorbis+ogg;audio/ogg;application/ogg;audio/x-wav;audio/wav;audio/x-ms-wma;audio/x-matroska;audio/x-musepack;audio/mp4;audio/aac;audio/vnd.dlna.adts; EOF # 6. (可选)安装一个 512x512 的图标到 /usr/share/pixmaps/(某些场景可能需要) @@ -97,4 +98,147 @@ EOF install -Dm644 "${pkgdir}/usr/share/icons/hicolor/512x512/apps/${_pkgname}.png" \ "${pkgdir}/usr/share/pixmaps/${_pkgname}.png" fi + + # 7. 安装 URL scheme 处理器(支持自定义协议 ceru-music://) + cat > "${pkgdir}/usr/share/applications/${_pkgname}-scheme-handler.desktop" << EOF +[Desktop Entry] +Name[zh_CN]=澜音 +Name=Ceru Music +Comment=Open ceru-music:// links +Exec=ceru-music %u +Icon=${_pkgname} +Type=Application +Terminal=false +NoDisplay=true +Categories=Audio;Music; +MimeType=x-scheme-handler/ceru-music;x-scheme-handler/cerumusic; +EOF + + # 8. 创建 MIME 类型关联配置文件 + mkdir -p "${pkgdir}/usr/share/mime/packages" + cat > "${pkgdir}/usr/share/mime/packages/${_pkgname}.xml" << EOF + + + + Ceru Music project file + + + + +EOF + + # 9. 创建应用信息文件(用于 open-xdg) + mkdir -p "${pkgdir}/usr/share/appdata" + cat > "${pkgdir}/usr/share/appdata/${_pkgname}.appdata.xml" << EOF + + + ${_pkgname}.desktop + Ceru Music + 澜音 + 跨平台音乐播放器 + +

Ceru Music 是一个跨平台音乐播放器,支持获取公开音乐信息和基于插件的播放功能。

+
+ ${_pkgname}.desktop + ${url} + https://github.com/timeshiftsauce/CeruMusic/issues + AGPL-3.0-only + + Audio + Music + AudioVideo + + + ceru-music + + + audio/mpeg + audio/flac + audio/ogg + audio/wav + audio/mp4 + application/x-ceru-music + +
+EOF + + # 10. 创建安装后脚本用于注册深度链接 + mkdir -p "${pkgdir}/usr/lib/${_pkgname}" + cat > "${pkgdir}/usr/lib/${_pkgname}/register-mime.sh" << 'EOF' +#!/bin/bash +# 注册 MIME 类型和深度链接(需要 root 权限) + +# 检查是否有 root 权限 +if [ "$(id -u)" -ne 0 ]; then + echo "警告:更新 MIME 数据库需要 root 权限" + echo "请手动运行:sudo /usr/lib/ceru-music-appimage/register-mime.sh" + exit 0 +fi + +# 更新 MIME 数据库 +if [ -x "$(command -v update-mime-database)" ]; then + update-mime-database /usr/share/mime > /dev/null 2>&1 +fi + +# 更新桌面数据库 +if [ -x "$(command -v update-desktop-database)" ]; then + update-desktop-database /usr/share/applications > /dev/null 2>&1 +fi + +# 更新图标缓存 +if [ -x "$(command -v gtk-update-icon-cache)" ]; then + gtk-update-icon-cache -f -t /usr/share/icons/hicolor > /dev/null 2>&1 +fi + +echo "Ceru Music 深度链接已注册完成" +EOF + + chmod +x "${pkgdir}/usr/lib/${_pkgname}/register-mime.sh" + + # 11. 创建卸载脚本 + cat > "${pkgdir}/usr/lib/${_pkgname}/unregister-mime.sh" << 'EOF' +#!/bin/bash +# 注销 MIME 类型和深度链接(需要 root 权限) + +# 检查是否有 root 权限 +if [ "$(id -u)" -ne 0 ]; then + echo "警告:更新数据库需要 root 权限" + exit 0 +fi + +# 强制更新桌面数据库 +if [ -x "$(command -v update-desktop-database)" ]; then + update-desktop-database /usr/share/applications > /dev/null 2>&1 +fi + +# 更新图标缓存 +if [ -x "$(command -v gtk-update-icon-cache)" ]; then + gtk-update-icon-cache -f -t /usr/share/icons/hicolor > /dev/null 2>&1 +fi + +echo "Ceru Music 深度链接已注销" +EOF + + chmod +x "${pkgdir}/usr/lib/${_pkgname}/unregister-mime.sh" + + # 12. 创建 xdg-open 工具脚本(用于统一打开资源) + cat > "${pkgdir}/usr/bin/xdg-ceru-music" << 'EOF' +#!/bin/bash +# Ceru Music xdg-open wrapper +# 使用方式:xdg-ceru-music [文件/URL] + +SCRIPT_DIR="/usr/lib/ceru-music-appimage" + +# 如果是首次运行,尝试注册 MIME 类型(仅提示) +if [ ! -f "$HOME/.local/share/applications/ceru-music-setup-done" ]; then + echo "提示:如需完整深度链接支持,请运行:sudo /usr/lib/ceru-music-appimage/register-mime.sh" + mkdir -p "$HOME/.local/share/applications" + touch "$HOME/.local/share/applications/ceru-music-setup-done" +fi + +# 传递所有参数给主程序 +exec ceru-music "$@" +EOF + + chmod +x "${pkgdir}/usr/bin/xdg-ceru-music" }