Skip to content

Add AppImage support#3551

Merged
hluk merged 1 commit into
masterfrom
appimage-support
Apr 14, 2026
Merged

Add AppImage support#3551
hluk merged 1 commit into
masterfrom
appimage-support

Conversation

@hluk
Copy link
Copy Markdown
Owner

@hluk hluk commented Apr 12, 2026

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)

@hluk hluk mentioned this pull request Apr 12, 2026
@hluk hluk force-pushed the appimage-support branch 2 times, most recently from d243477 to 7841779 Compare April 12, 2026 15:40
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 12, 2026

Codecov Report

❌ Patch coverage is 96.77419% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 74.23%. Comparing base (a765a5c) to head (f27bac3).
⚠️ Report is 2 commits behind head on master.

Files with missing lines Patch % Lines
src/app/app.cpp 80.00% 1 Missing ⚠️
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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@hluk hluk force-pushed the appimage-support branch 15 times, most recently from 626a95c to 0f28162 Compare April 13, 2026 13:50
@hluk hluk requested a review from Copilot April 13, 2026 16:22
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 Release preset 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.

Comment thread .github/workflows/build-linux.yml Outdated
Comment thread CMakePresets.json Outdated
Comment thread src/main.cpp
Comment thread .github/workflows/build-linux.yml
@hluk hluk force-pushed the appimage-support branch 8 times, most recently from 78d3315 to be48540 Compare April 14, 2026 08:00
@hluk hluk force-pushed the appimage-support branch 2 times, most recently from 93ce8d9 to bb20cb7 Compare April 14, 2026 11:58
@hluk hluk requested a review from Copilot April 14, 2026 12:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread utils/github/test-start-server.sh Outdated
Comment thread .github/workflows/build-linux.yml
Comment thread .github/workflows/build-linux.yml
@hluk hluk force-pushed the appimage-support branch from bb20cb7 to d18c334 Compare April 14, 2026 12:45
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
@hluk hluk force-pushed the appimage-support branch from d18c334 to f27bac3 Compare April 14, 2026 15:30
@hluk hluk merged commit c702d0c into master Apr 14, 2026
16 checks passed
@hluk hluk deleted the appimage-support branch April 16, 2026 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants