From d1cb638d5feff34a575a49ec30c89104472d9be0 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Thu, 22 May 2025 02:45:30 +0000
Subject: [PATCH] feat: Add AppImage build and generic naming for Linux
artifacts
This commit introduces the following changes to the Linux release process:
- **AppImage Support:** The GitHub Actions workflow (`flutter-ci.yaml`) now builds an AppImage alongside the existing .deb package for Linux releases. This involves:
- Installing `appimagetool` and `locate` as part of the build dependencies.
- Updating the `fastforge package` command to include `appimage` as a target.
- Adding a new AppImage configuration file (`linux/packaging/appimage/make_config.yaml`), based on the existing .deb configuration. A TODO has been added to this file to prompt review for AppImage-specific fields.
- **Generic Artifact Naming:** Both the .deb and AppImage files are now renamed to generic, version-less names (`fast-forge-linux-amd64.deb` and `fast-forge-linux-amd64.AppImage`) before being uploaded as release artifacts. This makes it easier to provide stable download links.
- **README Update:** The `README.md` has been updated with direct download links to these generically named .deb and AppImage files from the latest GitHub release.
---
.github/workflows/flutter-ci.yaml | 38 ++++++++++++++++++++---
README.md | 5 +++
linux/packaging/appimage/make_config.yaml | 33 ++++++++++++++++++++
3 files changed, 71 insertions(+), 5 deletions(-)
create mode 100644 linux/packaging/appimage/make_config.yaml
diff --git a/.github/workflows/flutter-ci.yaml b/.github/workflows/flutter-ci.yaml
index 1404451..cca494c 100644
--- a/.github/workflows/flutter-ci.yaml
+++ b/.github/workflows/flutter-ci.yaml
@@ -111,20 +111,48 @@ jobs:
- name: Install Linux dependencies
run: |
sudo apt-get update -y
- sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev
+ sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev locate
+ # Download and install appimagetool
+ wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
+ chmod +x appimagetool-x86_64.AppImage
+ sudo mv appimagetool-x86_64.AppImage /usr/local/bin/appimagetool
shell: bash
- name: setup fastforge
run: |
dart pub global activate fastforge
- - name: Build Linux AppImage
- run: fastforge package --platform linux --targets deb
+ - name: Build Linux AppImage and deb
+ run: fastforge package --platform linux --targets deb,appimage
- - name: Upload deb Artifacts
+ - name: Rename Linux Artifacts
+ run: |
+ # Find and rename .deb file
+ DEB_FILE=$(find dist/ -name "*.deb" -type f)
+ if [ -n "$DEB_FILE" ]; then
+ mv "$DEB_FILE" dist/fast-forge-linux-amd64.deb
+ echo "Renamed DEB: $DEB_FILE to dist/fast-forge-linux-amd64.deb"
+ else
+ echo "Error: .deb file not found in dist/"
+ exit 1
+ fi
+
+ # Find and rename .AppImage file
+ APPIMAGE_FILE=$(find dist/ -name "*.AppImage" -type f)
+ if [ -n "$APPIMAGE_FILE" ]; then
+ mv "$APPIMAGE_FILE" dist/fast-forge-linux-amd64.AppImage
+ echo "Renamed AppImage: $APPIMAGE_FILE to dist/fast-forge-linux-amd64.AppImage"
+ else
+ echo "Error: .AppImage file not found in dist/"
+ exit 1
+ fi
+ shell: bash
+
+ - name: Upload Linux Artifacts
uses: actions/upload-artifact@v4
with:
name: linux-release-artifacts
path: |
- dist/*/*.deb
+ dist/fast-forge-linux-amd64.deb
+ dist/fast-forge-linux-amd64.AppImage
# Job 4: Create GitHub Release (NEW - runs only on tag pushes)
create_release:
diff --git a/README.md b/README.md
index 869bc3f..8db8393 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,11 @@ Client for [Audiobookshelf](https://github.com/advplyr/audiobookshelf) server ma
*Play Store version is paid if you want to support the development.*
+### Linux
+
+[
](https://github.com/Dr-Blank/Vaani/releases/latest/download/fast-forge-linux-amd64.deb)
+[
](https://github.com/Dr-Blank/Vaani/releases/latest/download/fast-forge-linux-amd64.AppImage)
+
## Screencaps
https://github.com/user-attachments/assets/2ac9ace2-4a3c-40fc-adde-55914e4cf62d
diff --git a/linux/packaging/appimage/make_config.yaml b/linux/packaging/appimage/make_config.yaml
new file mode 100644
index 0000000..236176b
--- /dev/null
+++ b/linux/packaging/appimage/make_config.yaml
@@ -0,0 +1,33 @@
+display_name: Vaani
+package_name: vaani
+
+maintainer:
+ name: Dr.Blank
+ email: drblankdev@gmail.com
+
+priority: optional
+
+section: x11
+
+installed_size: 75700
+
+essential: false
+
+icon: assets/icon/logo.png
+
+postuninstall_scripts:
+ - echo "Sorry to see you go."
+
+keywords:
+ - Audiobook
+ - Audiobook Player
+ - Audiobookshelf
+
+generic_name: Audiobook Player
+
+categories:
+ - Media
+ - Utility
+
+startup_notify: true
+# TODO: Review and update fields for AppImage specifics (e.g., icon, metadata).