Skip to content

Add an isolated Linux AppImage port under linux/ - #247

Closed
bguetter wants to merge 1 commit into
vinzdg:mainfrom
bguetter:linux-appimage
Closed

bguetter wants to merge 1 commit into
vinzdg:mainfrom
bguetter:linux-appimage

Conversation

@bguetter

Copy link
Copy Markdown

Summary

Adds a Linux port of Codenotch as a portable x86_64 AppImage, kept entirely under linux/ so the Swift macOS app and the Windows Tauri tree stay untouched.

This is a contribution for maintainers to consider, not a claim that Linux is a first-class platform yet. It was built so people already running Fedora/Bazzite or Ubuntu can try the same notch, tray meters, Settings, and hover usage card as Windows.

The AppImage binary is not committed. CI builds it (.github/workflows/linux-package.yml) and uploads linux/Codenotch.AppImage as an artifact; on v* releases it can be attached next to the dmg and the Windows installer.

Where it runs

This is not a “runs on every Linux” binary. It is an x86_64 glibc AppImage, linked on Ubuntu 22.04 (glibc 2.35) so one file can run on newer desktops.

Distro Status
Fedora / Bazzite / Nobara Tested on Bazzite (KDE). Install host webkit2gtk4.1.
Ubuntu 22.04, 24.04 and derivatives (Mint, Pop!_OS) Same glibc family the binary is linked against.
Debian 12+ Needs libwebkit2gtk-4.1-0.
Other glibc x86_64 desktops (Arch, openSUSE Tumbleweed, …) Untested; should work if they ship webkit2gtk-4.1 and FUSE.

Will not run: ARM/aarch64, musl (Alpine), Ubuntu 20.04 / Debian 11 and older glibc, machines without webkit2gtk-4.1.

Host packages at runtime:

  • webkit2gtk-4.1 + GTK 3 (Fedora: webkit2gtk4.1; Ubuntu/Debian: libwebkit2gtk-4.1-0)
  • FUSE to mount the AppImage
  • An AppIndicator tray (KDE usually has one; GNOME needs an extension)

Run it on the host, not inside Distrobox. Config: ~/.config/codenotch.

Desktop caveats:

  • KDE / X11 (typical Bazzite): always-on-top pill and hover card work.
  • GNOME Wayland: the compositor often ignores always-on-top. Tray + Settings still show the meters; the overlay notch is best-effort.

Full table: linux/README.md.

Why a thin AppImage (host WebKit)

A full linuxdeploy bundle that ships Ubuntu’s WebKitGTK crashes on Fedora/Bazzite (EGL_BAD_PARAMETER). Settings and the notch stay blank.

So the shipped file is a thin AppImage (~5 MB): cargo binary + codenotch-hook sidecar, and the host’s webkit2gtk-4.1 at runtime. pack-appimage-host-webkit.sh strips the bundled Ubuntu WebKit after Tauri packs.

Build on Ubuntu 22.04 (or a Distrobox of that image). A native Fedora host build links a newer glibc and may not run on Ubuntu 22.04.

Changes

  • New linux/ tree: Rust + Tauri 2 / WebKitGTK, same providers as Windows (Claude, Codex, Cursor, Grok, Antigravity).
  • Thin AppImage pack (build-appimage.sh + pack-appimage-host-webkit.sh).
  • CI: .github/workflows/linux.yml (build / test / clippy on Ubuntu 22.04) and .github/workflows/linux-package.yml (AppImage artifact; attach on v* releases).
  • Root README.md Linux section and CONTRIBUTING.md Linux notes. i18n stays in linux/codenotch/src/i18n.rs — not merged with Windows or Mac.
  • Install hooks copies codenotch-hook to ~/.local/share/codenotch/ so Claude Code does not point into a vanished AppImage mount.
  • Linux hover card is a separate opaque Tauri window (hover.html). Painting usage inside the transparent overlay stacked previous cards and did not close reliably under WebKitGTK’s software compositor.
  • Settings <select> styled for WebKitGTK (native GTK selects were white-on-white).
  • windows/ is left as-is. No .AppImage or linux/target/ in git.

Test Plan

  • node scripts/check-ui-scripts.mjs in linux/
  • AppImage built on Ubuntu 22.04 Distrobox (codenotch-build), glibc 2.35
  • Ran on Bazzite (Fedora Kinoite, KDE, x86_64): tray meters, Settings, right-edge notch
  • Hover: open usage card, switch provider, close when the pointer leaves
  • Settings dropdowns readable (dark background, light text)
  • ./Codenotch.AppImage doctor
  • CI Linux + Linux Package on this PR (Ubuntu 22.04)
  • Maintainer smoke test on Ubuntu 22.04/24.04 if possible
  • make test-ci (macOS suite; this PR does not change Swift sources)

Screenshots / Screen Recordings

Tested on Bazzite / KDE with the thin AppImage from ~/Downloads/Codenotch.AppImage. Happy to attach a recording if useful.

Made with Cursor

Ship a thin x86_64 AppImage (Ubuntu 22.04 glibc, host webkit2gtk-4.1) so Bazzite/Fedora and Ubuntu/Debian can run the same notch without bundling a WebKit that crashes on Fedora. Keep Windows and macOS trees unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>
@bguetter
bguetter requested a review from vinzdg as a code owner September 17, 2026 20:30
@bguetter bguetter closed this Sep 17, 2026
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.

1 participant