# wl-clipboard 2.2.1 — `wl-copy` y `wl-paste`: el portapapeles por línea de comandos. Diminuto y # desproporcionadamente útil: en Wayland no hay forma de copiar/pegar desde un script sin esto, y # media docena de flujos (capturas con grim, selección con slurp) dependen de poder pegar el # resultado en algún lado. # # ── POR QUÉ VIVE EN EL CORPUS Y NO EN `incoming-wlr` (movida el 2026-09-14) ──────────────────── # Estaba SÓLO en la cola de wlr, y eso la hacía inalcanzable desde las otras cuatro. El problema no # era teórico: `cliphist` vive en el CORPUS y la pide en `[deps] run`, así que en los grafos de # corpus, gnome, kde y cosmic aparecía como **orphan_dep** — una dep que nadie resuelve. Y el # perfil `escritorio-cosmic` declara `cliphist` de raíz: la imagen de COSMIC se habría armado con # el demonio de historial y SIN `wl-copy`/`wl-paste`, que es exactamente el modo de fallo silencioso # que la propia receta de cliphist advierte (el binario corre y no hace nada). La clausura NO lo # veía: `falta=0` en los cinco perfiles, porque una dep que no resuelve no se cuenta, desaparece. # # La solución es la que este catálogo ya usó con `mpv` y `atuq`: subirla al corpus, desde donde las # colas la alcanzan (resuelven sibling-first y después el catálogo padre). `escritorio-sway` la # sigue declarando de raíz y la sigue encontrando. # # ⚠ El ArtifactHash NO cambió al mover (`b3:fc2ab7b7…` antes y después): la ruta del fichero no # entra en `hash_inputs`, y ninguna de sus 9 deps tenía variante hermana en `incoming-wlr` que la # mudanza pudiera cambiar. Comprobado con `takana hash` a los dos lados; el artefacto sellado sigue # valiendo y no hubo que re-sellar nada. # # ── FUENTE GIT POR COMMIT, y una diferencia con codeberg que conviene notar ──────────────────── # GitHub genera sus `archive/refs/tags/*.tar.gz` al vuelo igual que codeberg, así que se pinea el # commit (ADR 0006). PERO: este tag es **LIGERO**, no anotado — `git ls-remote` devuelve UN solo # sha y ése ES el commit. En fuzzel/yambar/foot los tags son ANOTADOS y aparecen dos shas, donde el # bueno es el `^{}`. Comprobar de qué tipo es el tag antes de copiar el sha evita pinear el objeto # del tag en lugar del commit, que es un error silencioso: la receta valida y luego no encuentra el # árbol. # # ── `subprojects/` CON WRAPS QUE BAJAN DE LA RED ─────────────────────────────────────────────── # Trae wraps de expat, libffi, wayland y wayland-protocols que meson descargaría. `--wrap-mode= # nodownload` es justamente lo que lo impide y lo obliga a usar las del sistema — o sea nuestros # artefactos, vía pkg-config. Sin esa flag el build intentaría salir a internet DENTRO del sandbox # hermético y moriría; con ella, los wraps son inertes. Por eso las cuatro van declaradas en deps. # # Los XML de protocolo (incluido `wlr-data-control-unstable-v1.xml`) van vendorizados en # `src/protocol/`, así que no hace falta un paquete de protocolos wlr aparte. name = "wl-clipboard" version = "2.2.1" license = "GPL-3.0-or-later" [source] repo = "https://github.com/bugaevc/wl-clipboard.git" commit = "3eb912c274042cd5deed6b478b39908a12f37498" [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 -Dwerror=false" compile = "ninja -C output" install = "DESTDIR=/out ninja -C output install" [deps] build = ["meson", "samurai", "python3", "pkgconf", "wayland", "wayland-protocols", "expat", "libffi", "zlib"] run = ["wayland"]