Linux distribution strategy: one portable binary vs. desktop + feature coverage (umbrella)
@r33drichards is already working on this.
Since Jun 24, 2026.
- Dominant language
- HTML
- Stars
- 23.1k
- Forks
- 1.6k
- Avg merge
- 22h 29m
- Merged PRs (30d)
- 190
Description
Problem
cua-driver's Linux release aims to be a single curl-pipe-bash binary that works across X11/Wayland and XFCE/GNOME/KDE. Two compatibility axes pull against each other:
1. Runtime desktop adaptation — solvable in one binary. Detect the session and pick the path (x11rb/libxcb on X11, zwlr_virtual_pointer on wlroots Wayland, libei via xdg-desktop-portal on KWin/Mutter). The per-desktop CI runners (gnome/kde/xfce/sway) exist to verify this, not to build variants.
2. Build/ABI compatibility — the hard part. What the binary links against:
- glibc floor — build on the oldest supported distro so it runs everywhere newer (resolved: #1919, was #1925).
- libxcb — hard-linking it makes it a runtime requirement; this is what #1978 / #1991 touched and likely why #1991's CI went red. Decide: hard-link vs
dlopen. - libpipewire + libei (
portal-libei) — need newer versions than the debian:11 CD container has; can't bump the container's glibc without breaking axis-1 broad-distro support (#1967 gated this OFF).
The core conflict
You cannot build one binary with both a low glibc floor and libei/PipeWire input. So today the published binary ships without portal-libei → KDE/GNOME Wayland input silently fails (#1982).
Work required (checklist)
- Decide the strategy: two build variants (
…-portablelow-glibc/no-portal +…-portalnewer-glibc/full) withinstall.shglibc-sniff, vs. an alternative (static musl? vendored libs? dlopen-everything?) - CD: produce the second (portal-libei) variant;
install.shselects by host glibc - libxcb: hard-link vs
dlopendecision (unblocks #1991 / #1978 without making libxcb a hard runtime dep) - Make KDE/GNOME Wayland input actually work in a shipped artifact (closes #1982)
- Guard the CD/publish path against silent failures (#1969)
- Document the support matrix (distro × desktop × feature)
Related
#1982 (KDE/GNOME input — blocked on this), #1978 / #1991 (libxcb), #1967 (portal-libei gate), #1919 / #1925 (glibc floor), #1922 (native-Wayland deps), #1969 (CD race).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.