trycua / trycua/cua

Linux distribution strategy: one portable binary vs. desktop + feature coverage (umbrella)

Open
#2,004 0 comments 0 reactions 1 assignee View on GitHub

@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 adaptationsolvable 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 compatibilitythe 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 (…-portable low-glibc/no-portal + …-portal newer-glibc/full) with install.sh glibc-sniff, vs. an alternative (static musl? vendored libs? dlopen-everything?)
  • CD: produce the second (portal-libei) variant; install.sh selects by host glibc
  • libxcb: hard-link vs dlopen decision (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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.