Conversation
Zero-toolchain Linux install: a self-contained AppImage carrying a private Python runtime, the built client, and the layouts, plus a `sudo` helper that installs the pieces an AppImage cannot own. - packaging/linux: PyInstaller onedir spec + launcher, AppDir glue (AppRun, deckd.desktop), and install-system-integration.sh (udev rule + input group; GNOME/KWin focus watcher; XDG autostart; --uninstall). - daemon/deckd/app_bundle.py: platform-agnostic packaging helpers extracted from macos_app so the two bundles cannot drift; macos_app re-exports them. - daemon/deckd/linux_app.py: XDG data dir/log, layouts.linux overlay, argv. - .github/workflows/release-linux.yml: x86_64 + aarch64 matrix, --help smoke test, attaches the AppImages + the helper script to the tag. - Justfile: build-linux-appimage, install-system-integration. - docs: ADR-0012 (AppImage primary; Flatpak/Snap rejected) and a GUIDE section. Channel rationale in docs/adr/0012-linux-distribution-appimage.md.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes nothing yet — Phase 0 of #168. The AppImage build and the privileged flow need a real Linux desktop, so this stays open with
human-verification-requiredafter merge.What
Zero-toolchain Linux install. A self-contained AppImage carries a private Python runtime, the built client, and the layouts; a small
sudohelper owns the parts an AppImage cannot (udev rule +inputgroup) plus the user-level pieces (desktop focus watcher, XDG autostart).Changes
packaging/linux/— PyInstalleronedirspec +launcher.py, AppDir glue (AppRun,deckd.desktop), andinstall-system-integration.sh(idempotent, with--uninstall).daemon/deckd/app_bundle.py— platform-agnostic packaging helpers extracted frommacos_appso the macOS and Linux bundles can't drift;macos_appre-exports them unchanged.daemon/deckd/linux_app.py— XDG data dir/log,layouts.linuxoverlay, first-run seeding,build_argv..github/workflows/release-linux.yml— x86_64 + aarch64 matrix,--helpsmoke test, attaches the AppImages and the helper script to the tag.Justfile—build-linux-appimage,install-system-integration.Decision
AppImage, not Flatpak/Snap: a sandbox cannot write the udev rule, see
/dev/uinput, reach the session bus unfiltered, or install the compositor plugin. The root step is unavoidable on every channel, so it's an explicitsudohelper. Details and rejected options in ADR-0012.Verification
pytest— 681 passed, 89 skipped (skips pre-existing), including the macOS bundle tests through theapp_bundlerefactor.pyright daemon— clean on the new/changed files (only the pre-existingdbus_fastresolution noise).bash -n+--help/ bad-flag checks on the helper; Justfile parses; workflow YAML parses.Not verified (needs a Linux box)
just build-linux-appimage(appimagetool needs Linux).