# wlr-randr 0.5.0 — el `xrandr` de wlroots: lista y configura salidas hablando # `wlr-output-management-unstable-v1`. # # Entra a hammer con un rol acotado y explícito: es el **testigo ajeno** de que # mirada sirve ese protocolo de verdad. La paridad cosmic no se demuestra con un # cliente nuestro —eso probaría que nos entendemos con nosotros mismos—, se # demuestra con la herramienta que el resto del mundo usa. Por eso se instala # aunque el camino soberano (`mirada-ctl output` y el panel de pata) sea el que # el usuario va a usar todos los días. # # Lo que hoy NO puede hacer, y conviene saberlo antes de acusar al paquete: en # mirada `apply`/`test` de `zwlr_output_configuration_v1` contestan `failed` # (`mirada-compositor/src/output_management.rs`), así que wlr-randr **lista** # correctamente y **no cambia nada**. Cuando mirada implemente el apply, esta # misma receta pasa a ser también la prueba de que el apply anda. # # Por lo mismo NO entran `kanshi` ni `way-displays`: no son herramientas sino una # función —perfiles de salida por hotplug— y su lugar es adentro de mirada, que # ya tiene el estado. Instalarlos hoy además sería inútil: rechazaría cada # perfil que intentaran aplicar. # # C puro sobre meson. Trae el XML del protocolo adentro (`protocol/`), así que no # necesita wayland-protocols — sólo `wayland-client` y `wayland-scanner`, que # vienen de la receta `wayland`. `scdoc` es opcional (la man page); se omite. name = "wlr-randr" version = "0.5.0" [source] # Tarball de RELEASE, no el `-/archive/` autogenerado de GitLab: los archivos # generados no son estables byte a byte en el tiempo y un sha256 pinneado sobre # ellos se rompe solo. Mismo criterio que `recipes/wayland-protocols.toml`. tarball = "https://gitlab.freedesktop.org/emersion/wlr-randr/-/releases/v0.5.0/downloads/wlr-randr-0.5.0.tar.gz" sha256 = "a64b6eb296d1c75af098fa2d229f9aaf3ceae45eeff24056930bd4bc613c6a5e" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" [build.phases] # `-Dwerror=false`: el proyecto compila con `werror=true` por defecto y una # versión de compilador distinta de la que usan sus CI convierte cualquier aviso # nuevo en un fallo de build. La receta no está para pelearse con eso. configure = "meson setup output --prefix=/usr --buildtype=release -Dwerror=false" compile = "ninja -C output" install = "DESTDIR=/out ninja -C output install" [deps] # `python3` es OBLIGATORIO aunque no lo parezca: **meson es un script de Python**, no un binario. # Sin él la fase configure muere con `exec: line 2: python3: not found` y **exit 127** — que se lee # como «meson no está» cuando meson SÍ está (su artefacto se hidrata bien; lo que falta es el # intérprete). Diagnosticado en el worker el 2026-08-07: gtk4, libadwaita y gtksourceview construyen # ahí sin problema **precisamente porque sí declaran python3**, y ésta no lo hacía. # ⇒ Regla: toda receta con meson en `[deps].build` necesita python3 al lado. # El arreglo es hidratar la dep, NO instalar python3 en el rootfs del worker: engordar el rootfs # haría que el build dependa de qué hay en una máquina concreta, que es justo lo que rompe la # reproducibilidad (ver la nota `rootfs-laptop-worker-divergen`). # # `libffi` NO lo usa wlr-randr: lo exige `wayland-client.pc` en su línea `Requires`, y pkgconf # resuelve el grafo de .pc COMPLETO antes de dar un cflag. O sea que falta la dep de la dep. Es el # patrón ya documentado `.pc Requires` → `[deps].build` (nota `etapa-g-gui-chain-boundary`): el # síntoma es «Package 'libffi', required by 'wayland-client', not found», que se lee como un problema # de wayland y no lo es. build = ["meson", "samurai", "python3", "pkgconf", "wayland", "libffi"] run = ["wayland"]