xwayland: retirar la receta — la decisión ya estaba escrita y decía que no
Decisión del usuario (2026-09-09): X11 se erradica, y eso incluye no construir el servidor que lo
mantiene vivo. La receta se retira; `xwayland` VUELVE a ser lo que sus propios documentos decían.
⚠ LO QUE APARECIÓ AL MIRAR: esto ya estaba decidido, por escrito y DOS VECES, el 2026-09-03
(commit f64859ba):
docs/state/targets.toml:143 «`xwayland` sigue acá como RAÍZ pero su receta NO se va a escribir:
lo provee una imagen ajena enjaulada … el hueco se disuelve sin
receta y sin tocar la postura Wayland-only»
docs/state/qorpa-ajenos.toml «X11 está fuera de alcance para toda la distro … el Xwayland vive
DENTRO de la imagen —Arch y Fedora ya lo traen— y se cuelga de
nuestro kwin por el socket. La receta no se escribe.»
El 2026-09-08 se escribió igual (3d8c6fc6, «cerrar los 3 huecos que quedaban»), y los dos
documentos siguieron diciendo lo contrario durante toda la jornada de hoy. No hubo que cambiar
ninguno de los dos: alcanzó con borrar la receta para que el repo volviera a coincidir con ellos.
MEDIDO ANTES DE SACARLA, no supuesto:
· Sólo kwin podía lanzarlo. mutter va con -Dxwayland=false y wlroots con -Dxwayland=disabled ⇒
GNOME, sway y COSMIC no podían usarlo aunque el binario existiera. Nunca sirvió a más de un
perfil de los cuatro.
· NINGUNA app del catálogo necesita servidor X: todo lo gráfico es Wayland nativo (Qt6 con
qtwayland, GTK3 Wayland-only, mpv, OBS con ENABLE_WAYLAND=ON, foot, fuzzel, swayimg). El
consumidor que lo justificaba está nombrado en qorpa-ajenos.toml y es Steam, que corre
enjaulado y TRAE EL SUYO ADENTRO.
· Y la imagen KDE ya arrancaba sin él: la propia receta contaba que KDE sellaba 1037/1037 con las
apps X11 muertas. Esto no estrena una configuración, vuelve a una ya probada.
EFECTO EN EL GRAFO, verificado regenerando: `xwayland` deja de ser una receta y pasa a clase
`ajeno` —que es como targets.toml decía que había que contarlo— y el perfil escritorio-kde baja de
304 a 299 nodos con deuda 0. Los cinco que se van son la cadena que sólo él usaba.
⚠ QUEDAN CINCO RECETAS HUÉRFANAS, y no las borro de paso: `libfontenc`, `libXfont2`, `libxkbfile`,
`libxshmfence` y `xkbcomp`. Medido: NADA más en el catálogo las declara, y ninguna es raíz de
ningún perfil ⇒ siguen selladas pero no entran en ninguna imagen. Sacarlas es su propia unidad de
trabajo y su propia decisión.
El triaje pasa de `provisto` a `opcional` con la historia entera en su `porque`, y con eso se cae
el alias `xwayland xwayland` de alias-triaje.txt, que habría afirmado que tenemos una receta con
ese nombre.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
5 qillqakuna · +56 −166
diff --git a/docs/state/alias-triaje.txt b/docs/state/alias-triaje.txt
index 8898c1cf..f227f0fa 100644
--- a/docs/state/alias-triaje.txt
+++ b/docs/state/alias-triaje.txt
@@ -25,4 +25,3 @@ qqc2-breeze-style qqc2-breeze-style
shared-mime-info shared-mime-info
uname coreutils
wayland-scanner wayland
-xwayland xwayland
diff --git a/docs/state/build-state-kde.json b/docs/state/build-state-kde.json
index a2b394cd..796f7cb3 100644
--- a/docs/state/build-state-kde.json
+++ b/docs/state/build-state-kde.json
@@ -1,16 +1,16 @@
{
"schema": "hammer-build-state/1",
"totals": {
- "recipes": 1046,
+ "recipes": 1045,
"nodes": 1047,
- "sealed": 1046,
- "ajeno": 1
+ "sealed": 1045,
+ "ajeno": 2
},
"by_class": {
- "ajeno": 1,
+ "ajeno": 2,
"c": 400,
"go": 362,
- "gui": 45,
+ "gui": 44,
"kernel": 6,
"rust": 233
},
@@ -21,7 +21,8 @@
"ajeno": 1
},
"incoming-kde": {
- "sealed": 194
+ "sealed": 193,
+ "ajeno": 1
}
},
"by_profile": {
@@ -37,8 +38,9 @@
},
"escritorio-kde": {
"raices": 48,
- "clausura": 304,
- "sealed": 304
+ "clausura": 299,
+ "sealed": 298,
+ "ajeno": 1
},
"escritorio-mirada": {
"raices": 17,
@@ -46,7 +48,7 @@
"sealed": 37
}
},
- "sin_perfil": 648,
+ "sin_perfil": 653,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -5278,7 +5280,7 @@
"escritorio-kde",
"escritorio-sway"
],
- "dependientes_total": 27
+ "dependientes_total": 26
},
"freeze": {
"iname": "freeze",
@@ -13135,7 +13137,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 63
+ "dependientes_total": 62
},
"libXau": {
"iname": "libXau",
@@ -13157,7 +13159,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 70
+ "dependientes_total": 69
},
"libXcursor": {
"iname": "libXcursor",
@@ -13208,7 +13210,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 70
+ "dependientes_total": 69
},
"libXext": {
"iname": "libXext",
@@ -13287,10 +13289,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [
- "escritorio-kde"
- ],
- "dependientes_total": 1
+ "perfiles": [],
+ "dependientes_total": 0
},
"libXi": {
"iname": "libXi",
@@ -13612,7 +13612,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 150
+ "dependientes_total": 149
},
"libelogind": {
"iname": "libelogind",
@@ -13658,7 +13658,7 @@
"escritorio-kde",
"escritorio-sway"
],
- "dependientes_total": 22
+ "dependientes_total": 21
},
"libevdev": {
"iname": "libevdev",
@@ -13766,10 +13766,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [
- "escritorio-kde"
- ],
- "dependientes_total": 2
+ "perfiles": [],
+ "dependientes_total": 1
},
"libgcrypt": {
"iname": "libgcrypt",
@@ -14344,7 +14342,7 @@
"escritorio-kde",
"escritorio-sway"
],
- "dependientes_total": 34
+ "dependientes_total": 33
},
"libpthread-stubs": {
"iname": "libpthread-stubs",
@@ -14740,7 +14738,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 70
+ "dependientes_total": 69
},
"libxcvt": {
"iname": "libxcvt",
@@ -14763,7 +14761,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 2
+ "dependientes_total": 1
},
"libxkbcommon": {
"iname": "libxkbcommon",
@@ -14792,7 +14790,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 119
+ "dependientes_total": 118
},
"libxkbfile": {
"iname": "libxkbfile",
@@ -14818,10 +14816,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [
- "escritorio-kde"
- ],
- "dependientes_total": 2
+ "perfiles": [],
+ "dependientes_total": 1
},
"libxml2": {
"iname": "libxml2",
@@ -14911,10 +14907,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [
- "escritorio-kde"
- ],
- "dependientes_total": 1
+ "perfiles": [],
+ "dependientes_total": 0
},
"libxslt": {
"iname": "libxslt",
@@ -15755,7 +15749,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 147
+ "dependientes_total": 146
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -15851,7 +15845,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 124
+ "dependientes_total": 123
},
"micro": {
"iname": "micro",
@@ -17340,7 +17334,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 23
+ "dependientes_total": 22
},
"openssl-threads": {
"iname": "openssl-threads",
@@ -18069,7 +18063,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 46
+ "dependientes_total": 45
},
"pkgconf": {
"iname": "pkgconf",
@@ -18093,7 +18087,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 396
+ "dependientes_total": 395
},
"plasma-activities": {
"iname": "plasma-activities",
@@ -19652,7 +19646,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 315
+ "dependientes_total": 314
},
"qcoro": {
"iname": "qcoro",
@@ -20877,7 +20871,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 267
+ "dependientes_total": 266
},
"sassc": {
"iname": "sassc",
@@ -23422,7 +23416,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 26
+ "dependientes_total": 25
},
"uutils": {
"iname": "uutils",
@@ -23993,7 +23987,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 161
+ "dependientes_total": 160
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -24021,7 +24015,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 58
+ "dependientes_total": 57
},
"websocketd": {
"iname": "websocketd",
@@ -24540,10 +24534,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
- "perfiles": [
- "escritorio-kde"
- ],
- "dependientes_total": 1
+ "perfiles": [],
+ "dependientes_total": 0
},
"xkeyboard-config": {
"iname": "xkeyboard-config",
@@ -24569,7 +24561,7 @@
"escritorio-kde",
"escritorio-sway"
],
- "dependientes_total": 7
+ "dependientes_total": 6
},
"xorgproto": {
"iname": "xorgproto",
@@ -24592,7 +24584,7 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 78
+ "dependientes_total": 77
},
"xorriso": {
"iname": "xorriso",
@@ -24681,49 +24673,19 @@
"perfiles": [
"escritorio-kde"
],
- "dependientes_total": 6
+ "dependientes_total": 5
},
"xwayland": {
"iname": "xwayland",
- "version": "24.1.13",
- "link": "dynamic",
- "compiler": "zig-cc",
- "deps": [
- "freetype-shared",
- "libX11",
- "libXau",
- "libXdmcp",
- "libXfont2",
- "libdrm",
- "libepoxy",
- "libfontenc",
- "libpng-shared",
- "libxcb",
- "libxcvt",
- "libxkbcommon",
- "libxkbfile",
- "libxshmfence",
- "mesa",
- "meson",
- "openssl",
- "pixman",
- "pkgconf",
- "python3",
- "samurai",
- "util-macros",
- "wayland",
- "wayland-protocols",
- "xkbcomp",
- "xkeyboard-config",
- "xorgproto",
- "xtrans",
- "zlib"
- ],
- "cls": "gui",
+ "version": null,
+ "link": null,
+ "compiler": null,
+ "deps": [],
+ "cls": "ajeno",
"queue": "incoming-kde",
- "foreign": false,
- "hash": "b3:d43f7ba02a1f9f4b2cf01e1d03610020779991fb13adbd804f5dd3007244bf3d",
- "state": "sealed",
+ "imagen": "arch",
+ "hash": null,
+ "state": "ajeno",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
@@ -25082,7 +25044,7 @@
"escritorio-mirada",
"escritorio-sway"
],
- "dependientes_total": 113
+ "dependientes_total": 112
},
"zlib-ng": {
"iname": "zlib-ng",
diff --git a/docs/state/drenaje.json b/docs/state/drenaje.json
index e02bb5d3..80c8a1b3 100644
--- a/docs/state/drenaje.json
+++ b/docs/state/drenaje.json
@@ -40,7 +40,7 @@
},
"escritorio-kde": {
"grafo": "docs/state/build-state-kde.json",
- "nodos": 304,
+ "nodos": 299,
"en_deuda": 0,
"ondas": 0,
"profundidad": 0,
diff --git a/docs/state/frontera-triaje.toml b/docs/state/frontera-triaje.toml
index c1695b11..05192584 100644
--- a/docs/state/frontera-triaje.toml
+++ b/docs/state/frontera-triaje.toml
@@ -2509,10 +2509,8 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
piden = ["ffmpeg"]
[candidato."xwayland"]
-veredicto = "provisto"
-sugerencia = "opcional?"
-provee = "xwayland"
-porque = "sin él NINGUNA app X11 corre en el escritorio Wayland. Gap de RUNTIME"
+veredicto = "opcional"
+porque = "X11 está FUERA DE ALCANCE para toda la distro y la decisión ya estaba escrita dos veces el 2026-09-03 (commit f64859ba): targets.toml y qorpa-ajenos.toml dicen «la receta no se escribe» — el Xwayland vive DENTRO de la imagen ajena enjaulada (Arch ya lo trae) y se cuelga de kwin por el socket. Se escribió igual el 2026-09-08 y se RETIRA el 2026-09-09 por decisión del usuario. Medido antes de sacarla: sólo kwin podía lanzarlo (mutter va -Dxwayland=false y wlroots -Dxwayland=disabled) y NINGUNA app del catálogo necesita servidor X — todo lo gráfico es Wayland nativo. Sigue como raíz en targets.toml a propósito, contado en clase `ajeno`"
perfiles = ["escritorio-kde"]
piden = ["kwin"]
ausente = true # ya no aparece en el último barrido de la frontera
diff --git a/recipes/incoming-kde/xwayland.toml b/recipes/incoming-kde/xwayland.toml
deleted file mode 100644
index 99d9c9b6..00000000
--- a/recipes/incoming-kde/xwayland.toml
+++ /dev/null
@@ -1,69 +0,0 @@
-# xwayland 24.1.13 — el servidor X que corre DENTRO de una sesión Wayland para que las apps X11
-# sigan funcionando. NO es «volver a X11»: la distro es Wayland-only y eso se refiere al servidor de
-# la sesión y al display manager. Xwayland es lo contrario — la capa que permite jubilar X11 SIN
-# perder las aplicaciones que aún no se portaron.
-#
-# POR QUÉ AHORA. Es el último HUECO de `escritorio-kde` en la frontera, y estaba declarado como raíz
-# en `docs/state/targets.toml` desde el 2026-07-22 («sin apps X11»). `kwin` ya se construye con
-# `-DKWIN_BUILD_X11=ON`, o sea que el lado del compositor está compilado: lo que faltaba era el
-# BINARIO que kwin lanza. Hueco de RUNTIME puro — nada de build lo necesitaba y por eso KDE sellaba
-# 1037/1037 con las apps X11 muertas.
-#
-# ⚠ CADENA DE 4 ESLABONES PREVIOS, todos autorados en la misma tanda porque ninguno existía:
-# `libfontenc` → `libXfont2` (la capa de fuentes DEL SERVIDOR, no del cliente), `libxkbfile` y
-# `libxshmfence`. Su meson los pide sin `required: false`, así que no son opcionales.
-name = "xwayland"
-version = "24.1.13"
-license = "MIT"
-
-[source]
-tarball = "https://www.x.org/releases/individual/xserver/xwayland-24.1.13.tar.xz"
-sha256 = "173aea3d6f79609164c04528e1c8e4c9b60fcd59391c3c9dad4667297d727fb6"
-
-[build]
-compiler = "zig-cc"
-target = "x86_64-linux-musl"
-link = "dynamic"
-
-[build.phases]
-# Apagado lo que esta distro no tiene ni quiere:
-# xvfb — servidor de pantalla virtual, no pinta nada acá
-# secure-rpc — pide libtirpc, que no está en el catálogo
-# xdmcp — protocolo de display manager remoto; no hay XDM en una distro Wayland-only
-# xwayland_ei — emulación de entrada por libei, que tampoco tenemos
-# glx — ⚠ NO es una preferencia: `glx/meson.build:43` pide `dependency('gl')` y en esta
-# distro NINGUNA cola publica `gl.pc` ni `libGL.so` (las tres recetas de mesa van
-# con glx y glvnd apagados, decisión de catálogo anterior a esto). Consecuencia
-# honesta: las apps X11 corren en 2D bajo Xwayland; las que piden OpenGL de
-# escritorio ya estaban bloqueadas en toda la distro, no las bloquea esta receta.
-# ⚠ El `meson.build` RAÍZ engaña: ahí `build_glx` sólo enciende una tabla hash y
-# parece gratis. El requisito de verdad está en el subdirectorio.
-# `xkb_dir` apunta a los datos de `xkeyboard-config`, que ya está en el corpus: sin eso el servidor
-# arranca sin mapa de teclado, que es el mismo síntoma que ya nos costó una noche en sway.
-configure = "meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dxvfb=false -Dsecure-rpc=false -Dxdmcp=false -Dxdm-auth-1=false -Dxwayland_ei=false -Dglx=false -Dxkb_dir=/usr/share/X11/xkb -Dxkb_output_dir=/var/lib/xkb"
-compile = "ninja -C output"
-install = "DESTDIR=/out meson install -C output --no-rebuild"
-
-[deps]
-# `xkbcomp` va en RUNTIME, no en build: Xwayland lo lanza como SUBPROCESO para compilar el mapa de
-# teclado (`xkb/ddxLoad.c`, XkbRunXkbComp). Su meson lo pide con `required: false` —sólo para
-# averiguar rutas—, así que sin él la receta COMPILA IGUAL y el servidor arranca sin teclado. El
-# propio fuente lo dice: «Errors from xkbcomp are not fatal to the X server». Un hueco que el build
-# no puede delatar, encontrado leyendo la fuente y no esperando a que fallara.
-runtime = ["xkbcomp"]
-# ⚠ Las deps de hammer NO son transitivas: va la clausura entera, no la primera capa.
-build = ["meson", "samurai", "python3", "pkgconf", "util-macros",
- "xorgproto", "xtrans", "libX11", "libxcb", "libXau", "libXdmcp",
- "libfontenc", "libXfont2", "libxkbfile", "libxshmfence",
- "pixman", "libdrm", "mesa", "libepoxy", "libxcvt", "libxkbcommon",
- "wayland", "wayland-protocols", "freetype-shared", "libpng-shared", "zlib", "xkeyboard-config",
- # SHA-1: el servidor lo usa para las cookies de autorización (XDM-AUTHORIZATION). Su meson
- # prueba libsha1 → nettle → libgcrypt → openssl y ABORTA si no hay ninguna («No suitable SHA1
- # implementation found»). Se elige `openssl`, que ya está en el catálogo y en la clausura de
- # media cola KDE, en vez de traer nettle o libsha1 sólo para esto.
- "openssl"]
-# ⚠ `freetype-shared` y `libpng-shared`, no las estáticas, y `libpng` aunque xwayland no lo use:
-# la cadena de pkg-config es `xfont2.pc` → `freetype2.pc` → `Requires: zlib, libpng`, y se
-# resuelve TRANSITIVAMENTE. Sin libpng el meson dice «Run-time dependency xfont2 found: NO»,
-# culpando a xfont2, que está perfectamente instalada. Compartidas porque es lo que enlaza
-# libXfont2.so: mezclar la estática ahí revienta en PIC.