# wtype 0.4 — teclear en Wayland desde un script: `wtype "hola"`, `wtype -k Return`. Es xdotool para # Wayland, por el protocolo `zwp_virtual_keyboard_v1` (que el XML vendorea en `protocol/`). # # ── POR QUÉ ENTRA (2026-09-18): sin esto no se puede CONTESTAR un diálogo ─────────────────────── # El corpus no tiene **ninguna** forma de meter una tecla en un compositor: ni `wtype`, ni `ydotool`, # ni nada que hable el protocolo de teclado virtual (comprobado sobre `recipes/` y sobre # `scripts/`). Mientras lo único que había que medir era «¿la ventana pinta?», daba igual: las # capturas y el log del protocolo contestan eso sin tocar nada. La bóveda de `atuq` rompe esa # comodidad, porque su promesa **es** una pregunta: `vault.fill` no entrega la contraseña hasta que # una persona diga que sí en `shuma-pregunta` (SDD 26 §7.sexies). Un guardián que no puede decir que # sí sólo puede medir la mitad de la función — que la puerta existe—, y nunca que la puerta se abre. # # No es sólo para la bóveda: es la pieza que le faltaba a **cualquier** arnés de escritorio de este # repo. Todos los de `scripts/wlr/` miran; ninguno toca. # # ⚠ Y NO va declarado en ningún perfil, a propósito: es un INSTRUMENTO, no parte del producto. Mismo # criterio que `llama-cpp` cuando entró sin imagen que la declarara — una imagen no crece por algo # que sólo usa el que mide. Los arneses lo montan como capa overlay desde el store. # # ── LA REPRODUCIBILIDAD, QUE ACÁ TIENE UNA TRAMPA A LA VISTA ─────────────────────────────────── # `meson.build` arma la cadena de versión con `__DATE__` cuando encuentra `git`. Un macro de fecha # de compilación es exactamente lo que rompe un binario reproducible… salvo que el compilador # respete `SOURCE_DATE_EPOCH`, que es lo que hacen gcc y clang (y por lo tanto `zig cc`) desde hace # años: con la variable puesta —y takana la pone siempre— `__DATE__` deja de ser el reloj de pared. # Si algún día esta receta apareciera en `why-differs`, éste es el primer sospechoso y está escrito # acá para no volver a buscarlo. # # ⚠ El tag `v0.4` es ANOTADO: `git ls-remote --tags` devuelve DOS shas y el bueno es el `^{}` # (d71be3a7…), que es el commit. Pinear el sha del objeto tag valida y después no encuentra el árbol. name = "wtype" version = "0.4" license = "MIT" [source] repo = "https://github.com/atx/wtype.git" commit = "d71be3a7b3f93b534a2823fd68cabd7ac2a02359" # v0.4 PELADO (^{commit}) [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "dynamic" zig_version = "0.13.0" [build.phases] configure = "meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload" compile = "ninja -C output" install = ''' set -e DESTDIR=/out ninja -C output install test -x /out/usr/bin/wtype || { echo "no quedó /out/usr/bin/wtype — ¿cambió el layout de meson?" >&2; exit 1; } ''' [deps] # `wayland-cursor` y `wayland-client` salen los dos del paquete `wayland`; `xkbcommon` es # `libxkbcommon`. `rt` lo resuelve musl dentro de la libc y no hace falta declarar nada. build = ["meson", "samurai", "python3", "pkgconf", "wayland", "libxkbcommon", "expat", "libffi", "zlib"] run = ["wayland", "libxkbcommon"]