Add AppImage support#3551
Conversation
d243477 to
7841779
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #3551 +/- ##
==========================================
+ Coverage 74.21% 74.23% +0.01%
==========================================
Files 252 252
Lines 37470 37487 +17
Branches 5074 5077 +3
==========================================
+ Hits 27810 27828 +18
+ Misses 9660 9659 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
626a95c to
0f28162
Compare
There was a problem hiding this comment.
Pull request overview
Adds AppImage packaging and release automation, and updates runtime path/executable resolution so CopyQ works correctly when run from an AppImage (resource discovery, autostart, and child process spawning).
Changes:
- Extend Linux CI to build an AppImage with linuxdeploy (Qt/AppImage plugins), upload it as an artifact, and attach it to draft releases on tag builds.
- Add AppImage-aware helpers for executable/path resolution and apply them to plugins/themes/translations lookup and autostart/child-process execution.
- Add a CMake
Releasepreset and update release docs/scripts to include the new Linux AppImage artifact.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| utils/github/draft-release.sh | Include AppImage in expected assets and wait for Linux workflow completion. |
| .github/workflows/build-linux.yml | Add tag builds, AppImage build variant, artifact upload, and release attachment job. |
| CMakePresets.json | Add a Release preset intended for AppImage/packaging builds. |
| RELEASE.md | Document Linux AppImage as a CI-produced artifact. |
| src/common/config.h / src/common/config.cpp | Add applicationExecutablePath() and appImageAdjustedPath() helpers. |
| src/common/action.cpp | Route copyq sub-process invocation through the AppImage wrapper when applicable. |
| src/main.cpp | Ensure detached server start uses AppImage wrapper; add --session workaround for Qt arg handling. |
| src/app/app.cpp | Set COPYQ env var and translation prefix using AppImage-aware path/executable resolution. |
| src/platform/x11/x11platform.cpp | Write autostart Exec entry pointing to the AppImage wrapper path. |
| src/item/itemfactory.cpp | Adjust plugin prefix to resolve correctly inside AppImage mount. |
| src/gui/theme.cpp | Adjust theme prefix to resolve correctly inside AppImage mount. |
| src/common/diagnostics.cpp | Adjust reported plugins/themes/translations paths for AppImage runtime. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
78d3315 to
be48540
Compare
93ce8d9 to
bb20cb7
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 24 out of 24 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Add AppImage packaging to the CI pipeline and the cmake build system. AppImage-specific runtime behavior (reading $APPIMAGE/$APPDIR env vars) is gated behind a new WITH_APPIMAGE cmake option, off by default, so non-AppImage builds never inspect those variables. Build & CI changes: - Add AppImage matrix entry, pinned to ubuntu-24.04 (matches KDE Neon noble) - Download linuxdeploy tools and verify SHA256 checksums - Fix Release preset: use local installDir instead of /usr - Add WITH_APPIMAGE=TRUE to Release preset cache variables Runtime changes (active only with -DWITH_APPIMAGE=ON): - applicationExecutablePath() returns $APPIMAGE when set - adjustedInstallPath() (renamed from appImageAdjustedPath) prepends $APPDIR - startServerInBackground() launches via $APPIMAGE when set Tests: - Add commandSession test for --session CLI argument - Fix --session flag conflict with Qt Session Manager
Add CI workflow entry to build and upload AppImage artifacts using linuxdeploy with Qt and AppImage plugins. Include KDE Neon KF6 packages for native notification support and bundle TLS and Wayland platform plugins.
Add Release CMake preset for AppImage builds.
Fix child process spawning inside AppImage by routing through the AppImage wrapper instead of the internal FUSE-mounted binary.
Fix resource discovery (themes, translations, plugins) inside AppImage by adjusting compile-time paths to the AppImage mount point at runtime.
Fix autostart desktop entry to reference the AppImage executable.
Assisted-by: Claude (Anthropic)