Files
omarchy-pkgs/pkgbuilds/cua-hyprland-plugin
Francesco Bonacci eec9dcef03 feat: add optional pinned Cua Hyprland plugin package
Import the unchanged recipe from the cua-driver-rs-v0.24.0 build kit. Keep fast-ring automatic builds disabled pending native channel qualification and document explicit ABI updates and compositor restarts.
2026-09-12 16:42:57 -05:00
..

Optional Cua Hyprland plugin

This package builds the optional Cua input plugin separately from Cua Driver. It does not add the plugin to the Omarchy installation or change the Driver package. The recipe is copied unchanged from the published Cua Driver 0.24.0 build kit, including its source checks, mandatory tests, and ABI checks.

The package is in the fast release ring with skip_build: true. This keeps it out of unscoped builds while maintainers qualify the pinned environment. An explicit package build remains available. Fast-ring membership does not establish compatibility: edge, rc, and stable use separate build environments, and each must satisfy the exact contract before publication there.

Source and ABI contract

The authoritative release is cua-driver-rs-v0.24.0, at source revision 4b3396d9fe4bd3cf723b0eb8db83c18a8764b520. Both archives use the stem cua-hyprland-plugin-0.24.0-4b3396d9fe4bd3cf723b0eb8db83c18a8764b520. The release's checksums.txt records these SHA-256 values:

Artifact SHA-256
Source (.tar.gz) 73b65823b3281c027a31cd8f7d9ca9586fe7386ed1eec74174f2e72cea0af643
Build kit (-build-kit.tar.gz) f91a7b61a39f0efdcee9558eb6725fe864340e8eacf940346499222afe7f7869

The supported environment is Linux x86_64, hyprland=0.56.2-1, headers 0.56.2, GCC 16.1.1 20260728, and shared libstdc++.so.6.0.36. The compiler probe and compositor must carry the exact GCC ELF comment; the compiler, compositor, and module must resolve identical runtime bytes. The recipe rejects mismatches. gcc-libs alone is not proof of runtime compatibility. There is no qualified ARM build.

Production input is enabled at build time. Experimental signed input and tracing are disabled. Source and build provenance are installed with the module. The build requires CMake 3.30 or later and Python 3.11 or later. The default compiler is /usr/bin/g++; an absolute CUA_RELEASE_CXX path can select an already provisioned matching compiler without bypassing runtime checks. The package does not provision a compiler or change runtime search paths.

Review and qualify

Download both archives and checksums.txt from the exact release. Verify the archive hashes before extracting the kit, then verify its SHA256SUMS with the source archive alongside it. Compare this package's PKGBUILD byte for byte with the kit's recipe. Follow the kit's operator README and release packaging instructions.

Before enabling scheduled builds or publishing a package, maintainers need:

  1. A native build in each intended channel's pinned x86_64 environment, with all bundled tests passing and the packaged ELF dependencies and provenance inspected. An unsigned, explicitly scoped repository build is bin/repo build --package cua-hyprland-plugin --arch x86_64 --mirror edge. Repeat with the intended channel only when its environment matches.
  2. The kit's lifecycle.py gate in a disposable pinned Arch environment, including installation, removal, reinstallation, and refusal with a different Hyprland package. That gate uses isolated ALPM roots and metadata dependency fixtures; it does not prove live activation.
  3. Fresh-session activation and representative supported input, then upgrade, rollback, and removal across compositor restarts. Retain evidence for the exact package, source revision, compositor, compiler, and runtime.

Static review and download verification do not establish these native results. The source manifest's native_certified: false describes the generator's scope; separate native evidence must establish runtime qualification.

Update policy

Updates are explicit maintainer changes. There is no upstream polling hook, AUR synchronization, or automatic rebuild_on bump. Do not use Omarchy's pinned metadata flag here: it controls the Omarchy release pair's rc branch workflow, not native ABI compatibility.

For an update, select an exact Cua Driver component tag, download its matching source and build kit, verify published checksums, and review the recipe and manifest together. Replace the recipe and update this record only after reviewing the new ABI contract. A Driver release alone does not qualify its plugin for a changed compositor. Keep skip_build enabled until the required channel evidence is available; removing it is a separate publication decision.

Do not widen the Hyprland dependency or remove compiler/runtime checks to accommodate channel drift. If a channel cannot provide the pins, keep the plugin unavailable there and use Driver without this plugin. An installed plugin's exact dependency can block a compositor upgrade; remove the plugin using the restart procedure before moving to an incompatible environment.

Activation and removal

The package installs only the module, license, and provenance. It has no install hooks, autoloading, configuration edits, or hot replacement. Follow the pinned operator guide for deliberate loading, input enablement, status checks, and supported apps. Loading the module alone does not enable its input transport.

Before installing or upgrading, save your work and exit Hyprland. Install from a text console, start a fresh session, and deliberately activate and verify the module. Keep the prior package and its matching environment for rollback. Before removal, remove any operator-added load and enable settings, exit Hyprland, and remove the package from a text console. Start a fresh session afterward. Upgrade, rollback, and removal require compositor restart; do not hot-unload/reload the module or force installation past its dependency pin.