Added appimage

This commit is contained in:
Aleksandr Bogomiakov
2026-08-13 15:34:07 +01:00
parent aa392e8f7f
commit 728ca708b2
3 changed files with 80 additions and 8 deletions
+60 -7
View File
@@ -20,10 +20,12 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
# AppImages must be built on the oldest supported distribution so
# that their glibc requirement remains compatible with newer ones.
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
asset_name: furumi-desktop-linux-x86_64
archive_ext: tar.gz
archive_ext: AppImage
binary_name: furumi-desktop
- os: macos-latest
target: aarch64-apple-darwin
@@ -95,8 +97,58 @@ jobs:
package_dir="dist/${{ matrix.asset_name }}"
binary="target/${{ matrix.target }}/release/${{ matrix.binary_name }}"
mkdir -p "$package_dir"
if [[ "${{ runner.os }}" == "macOS" ]]; then
if [[ "${{ runner.os }}" == "Linux" ]]; then
app_dir="dist/FurumiDesktop.AppDir"
appimage_runtime="$RUNNER_TEMP/appimage-runtime-x86_64"
linuxdeploy="$RUNNER_TEMP/linuxdeploy-x86_64.AppImage"
linuxdeploy_dir="$RUNNER_TEMP/linuxdeploy"
linuxdeploy_version="1-alpha-20251107-1"
linuxdeploy_sha256="c20cd71e3a4e3b80c3483cef793cda3f4e990aca14014d23c544ca3ce1270b4d"
runtime_version="20251108"
runtime_sha256="2fca8b443c92510f1483a883f60061ad09b46b978b2631c807cd873a47ec260d"
mkdir -p "$app_dir/usr/share/doc/furumi-desktop"
cp README.md LICENSE "$app_dir/usr/share/doc/furumi-desktop/"
curl --fail --location --retry 3 --silent --show-error \
"https://github.com/linuxdeploy/linuxdeploy/releases/download/${linuxdeploy_version}/linuxdeploy-x86_64.AppImage" \
--output "$linuxdeploy"
echo "${linuxdeploy_sha256} ${linuxdeploy}" | sha256sum --check
chmod +x "$linuxdeploy"
curl --fail --location --retry 3 --silent --show-error \
"https://github.com/AppImage/type2-runtime/releases/download/${runtime_version}/runtime-x86_64" \
--output "$appimage_runtime"
echo "${runtime_sha256} ${appimage_runtime}" | sha256sum --check
APPIMAGE_EXTRACT_AND_RUN=1 "$linuxdeploy" \
--appdir "$app_dir" \
--executable "$binary" \
--desktop-file packaging/linux/furumi-desktop.desktop \
--icon-file crates/ui/assets/federation.svg \
--icon-filename furumi-desktop
mkdir -p "$linuxdeploy_dir"
(
cd "$linuxdeploy_dir"
"$linuxdeploy" --appimage-extract >/dev/null
)
appimagetool="$linuxdeploy_dir/squashfs-root/plugins/linuxdeploy-plugin-appimage/appimagetool-prefix/AppRun"
ARCH=x86_64 VERSION="$version" "$appimagetool" \
--no-appstream \
--runtime-file "$appimage_runtime" \
"$app_dir" \
"$archive_name"
chmod +x "$archive_name"
"$archive_name" --appimage-extract >/dev/null
test -x squashfs-root/AppRun
test -x squashfs-root/usr/bin/furumi-desktop
test -f squashfs-root/usr/share/applications/furumi-desktop.desktop
test -f squashfs-root/usr/share/icons/hicolor/scalable/apps/furumi-desktop.svg
rm -rf squashfs-root
elif [[ "${{ runner.os }}" == "macOS" ]]; then
mkdir -p "$package_dir"
app_dir="$package_dir/Furumi Desktop.app"
mkdir -p "$app_dir/Contents/MacOS" "$app_dir/Contents/Resources"
cp "$binary" "$app_dir/Contents/MacOS/furumi-desktop"
@@ -151,14 +203,15 @@ jobs:
codesign --force --deep --sign - "$app_dir"
codesign --verify --deep --strict "$app_dir"
else
mkdir -p "$package_dir"
cp "$binary" "$package_dir/"
fi
cp README.md "$package_dir/"
cp LICENSE "$package_dir/"
if [[ "${{ runner.os }}" == "Windows" ]]; then
cp README.md LICENSE "$package_dir/"
(cd dist && 7z a "../${archive_name}" "${{ matrix.asset_name }}")
else
elif [[ "${{ runner.os }}" == "macOS" ]]; then
cp README.md LICENSE "$package_dir/"
tar -C dist -czf "$archive_name" "${{ matrix.asset_name }}"
fi
+11 -1
View File
@@ -63,6 +63,17 @@ nix-shell
cargo run --bin furumi-desktop
```
Linux releases are distributed as AppImages. Make the downloaded file
executable and run it directly:
```bash
chmod +x furumi-desktop-linux-x86_64-*.AppImage
./furumi-desktop-linux-x86_64-*.AppImage
```
On NixOS, enable AppImage support with `programs.appimage.enable` and
`programs.appimage.binfmt`, or launch it explicitly with `appimage-run`.
macOS and Windows require no additional system packages. Player settings are
available inside the application and are saved automatically.
@@ -90,4 +101,3 @@ cargo test --workspace --all-targets
Furumi Desktop is released under the
[Do What The Fuck You Want To Public License, Version 2](LICENSE).
+9
View File
@@ -0,0 +1,9 @@
[Desktop Entry]
Type=Application
Name=Furumi Desktop
Comment=Native player for personal music libraries and the Furumi network
Exec=furumi-desktop
Icon=furumi-desktop
Terminal=false
Categories=AudioVideo;Audio;Player;
StartupNotify=true