Skip to content

M5d: Linux packaging — desktop file, Flatpak, DEB, COPR - #106

Merged
Jesssullivan merged 5 commits into
mainfrom
sid/m5d-packaging
Mar 29, 2026
Merged

Jesssullivan merged 5 commits into
mainfrom
sid/m5d-packaging

Conversation

@Jesssullivan

Copy link
Copy Markdown
Owner

Summary

Complete Linux packaging infrastructure for cmux-linux distribution.

Desktop file + AppStream metainfo (#100)

  • dist/linux/com.jesssullivan.cmux.desktop — desktop entry for app launchers
  • dist/linux/com.jesssullivan.cmux.metainfo.xml — AppStream metadata for software centers
  • dist/linux/icons/ — 16x16, 128x128, 256x256, 512x512 PNGs

Flatpak (#97)

  • flatpak/com.jesssullivan.cmux.yml — Flatpak manifest
  • Runtime: org.gnome.Platform 47
  • Builds libghostty + cmux-linux from source
  • Permissions: DRI, PTY, Wayland/X11, network, home, D-Bus

DEB packaging (#98)

  • debian/control — package metadata for Ubuntu 24.04+
  • debian/rules — build script using zig build
  • debian/changelog, debian/copyright
  • Depends: libgtk-4-1, libadwaita-1-0

Fedora COPR (#99)

  • dist/cmux.spec — RPM spec file for Fedora 42+
  • BuildRequires: zig, gtk4-devel, libadwaita-devel, font/rendering stack

App ID

com.jesssullivan.cmux — consistent across all formats (desktop file, icons, metainfo, D-Bus)

Test plan

  • desktop-file-validate dist/linux/com.jesssullivan.cmux.desktop
  • appstreamcli validate dist/linux/com.jesssullivan.cmux.metainfo.xml
  • Flatpak manifest parses: flatpak-builder --show-manifest flatpak/com.jesssullivan.cmux.yml
  • DEB lintian: lintian --check *.deb

Closes #97, #98, #99, #100

Generated with Claude Code

- Update .gitmodules URL from manaflow-ai/ghostty to Jesssullivan/ghostty
- Submodule at 90a26469 with GHOSTTY_PLATFORM_LINUX in embedded.zig
  (Jesssullivan/ghostty#1) and #undef linux macro fix (#2)
- Update docs/ghostty-fork.md: document patch #8 (linux Platform variant)
  and switch header from manaflow-ai to Jesssullivan
12 Zig source files implementing the full M5a Terminal MVP scope:

Sprint 1 - Foundation:
- main.zig: GtkApplication + libghostty init/wakeup/tick integration
- app.zig: Runtime callbacks (action, clipboard, close_surface)
- surface.zig: GtkGLArea + GHOSTTY_PLATFORM_LINUX surface creation
- c_api.zig: @cImport bindings for GTK4, libadwaita, ghostty.h
- config.zig: JSON config parser matching macOS schema (427 lines)
- build.zig: Links libghostty.so + GTK4 + libadwaita + OpenGL

Sprint 2 - Core UI:
- window.zig: AdwApplicationWindow + AdwTabView + AdwTabBar
- tab_manager.zig: Workspace list mapped to AdwTabView pages
- split_tree.zig: Binary tree split pane model with GtkPaned
- workspace.zig: Workspace data model (panels, title, color, status)
- sidebar.zig: AdwNavigationSplitView + GtkListBox workspace list

Sprint 3 - Platform Integration:
- socket.zig: Unix domain socket JSON-RPC server (XDG paths)
- session.zig: Session snapshot/restore (autosave 8s, atomic writes)

Compiles and links on Ubuntu, Fedora 42, and Arch Linux.
Closes #77, #78, #79, #80, #81, #82, #83.
linux-ci.yml: Add libghostty build (-Dapp-runtime=none -Drenderer=opengl)
and cmux-linux build steps to all 3 Linux jobs (Ubuntu, Fedora, Arch).
Add font/rendering deps (freetype, harfbuzz, fontconfig, libpng, mesa).
Add zig build test step for config parser unit tests.

fork-ci.yml: Build GhosttyKit.xcframework from source instead of
downloading from manaflow-ai/ghostty releases. Uses native target
for faster CI builds.
Verify GTK4 + libadwaita runtime libs are present in the NixOS VM.
Stepping stone toward full graphical cmux-linux tests (blocked on
Nix packaging of the libghostty build chain).

Update basic-window-check-gnome TODO to reflect PR #104 progress.
dist/linux/:
- com.jesssullivan.cmux.desktop — desktop entry for app launchers
- com.jesssullivan.cmux.metainfo.xml — AppStream metadata
- icons/ — 16x16, 128x128, 256x256, 512x512 PNGs

flatpak/:
- com.jesssullivan.cmux.yml — Flatpak manifest targeting
  org.gnome.Platform 47, builds libghostty + cmux-linux

debian/:
- control, rules, changelog, copyright — DEB packaging for
  Ubuntu 24.04+ (libgtk-4-1, libadwaita-1-0 deps)

dist/:
- cmux.spec — Fedora COPR RPM spec file

App ID: com.jesssullivan.cmux (consistent across all formats)

Closes #97, #98, #99, #100.
@Jesssullivan
Jesssullivan merged commit f508ed8 into main Mar 29, 2026
6 of 8 checks passed
@Jesssullivan
Jesssullivan deleted the sid/m5d-packaging branch March 29, 2026 22:56
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.

Create Flatpak manifest for cmux Linux

1 participant