From 427ca1dd01740f62dd59602e5951406b9d612664 Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 7 Aug 2026 21:54:53 -0400 Subject: [PATCH] =?UTF-8?q?wl-clipboard=202.2.1=20SELLADA=20=E2=80=94=20ci?= =?UTF-8?q?erra=20el=20entorno=20m=C3=ADnimo=20del=20frente=20wlr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `wl-copy` y `wl-paste`. En Wayland no hay forma de copiar o pegar desde un script sin esto, y varios flujos que ya sellamos lo necesitan para ser útiles: capturar con grim, seleccionar región con slurp, y poder pegar el resultado en algún lado. UNA DIFERENCIA CON LAS ANTERIORES QUE CONVIENE NOTAR. Va por commit (ADR 0006, GitHub genera sus archive/refs/tags al vuelo igual que codeberg), pero este tag es **LIGERO**: `git ls-remote` devuelve UN solo sha y ése ES el commit. En fuzzel, yambar y foot los tags son ANOTADOS y aparecen dos, donde el bueno es el `^{}`. Comprobar el tipo de tag antes de copiar evita pinear el objeto del tag en vez del commit — un error silencioso, porque la receta valida y sólo falla después, al no encontrar el árbol. TRAE `subprojects/` CON WRAPS QUE BAJAN DE LA RED (expat, libffi, wayland, wayland-protocols). `--wrap-mode=nodownload` es 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 quedan inertes. Por eso las cuatro van en deps. Estado del frente wlr: 10 recetas, 12 binarios — wlroots, sway (+swaybar/swaymsg/swaynag), swaybg, swayidle, swaylock, grim, slurp, fuzzel, yambar, wl-copy/wl-paste. Con `foot` (ya en el corpus) como terminal, el perfil «escritorio-sway» es armable: compositor, barra, lanzador, fondo, bloqueo, inactividad, captura y portapapeles. Todo sin X11 y sin systemd. Co-Authored-By: Claude Opus 5 (1M context) --- recipes/incoming-wlr/wl-clipboard.toml | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 recipes/incoming-wlr/wl-clipboard.toml diff --git a/recipes/incoming-wlr/wl-clipboard.toml b/recipes/incoming-wlr/wl-clipboard.toml new file mode 100644 index 00000000..059c51f2 --- /dev/null +++ b/recipes/incoming-wlr/wl-clipboard.toml @@ -0,0 +1,43 @@ +# 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. +# +# ── 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"]