Initial upload

This commit is contained in:
Display-HDMI 2026-02-06 20:52:22 +08:00
parent 8f799172c7
commit 2f08714eb2
2 changed files with 147 additions and 3 deletions

View file

@ -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

148
PKGBUILD
View file

@ -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
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-ceru-music">
<comment>Ceru Music project file</comment>
<glob pattern="*.ceru"/>
<glob pattern="*.ceru-music"/>
</mime-type>
</mime-info>
EOF
# 9. 创建应用信息文件(用于 open-xdg
mkdir -p "${pkgdir}/usr/share/appdata"
cat > "${pkgdir}/usr/share/appdata/${_pkgname}.appdata.xml" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>${_pkgname}.desktop</id>
<name>Ceru Music</name>
<name xml:lang="zh_CN">澜音</name>
<summary>跨平台音乐播放器</summary>
<description>
<p>Ceru Music 是一个跨平台音乐播放器,支持获取公开音乐信息和基于插件的播放功能。</p>
</description>
<launchable type="desktop-id">${_pkgname}.desktop</launchable>
<url type="homepage">${url}</url>
<url type="bugtracker">https://github.com/timeshiftsauce/CeruMusic/issues</url>
<project_license>AGPL-3.0-only</project_license>
<categories>
<category>Audio</category>
<category>Music</category>
<category>AudioVideo</category>
</categories>
<provides>
<binary>ceru-music</binary>
</provides>
<supports>
<mime-type>audio/mpeg</mime-type>
<mime-type>audio/flac</mime-type>
<mime-type>audio/ogg</mime-type>
<mime-type>audio/wav</mime-type>
<mime-type>audio/mp4</mime-type>
<mime-type>application/x-ceru-music</mime-type>
</supports>
</component>
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"
}