diff --git a/recipes/incoming-wlr/grim.toml b/recipes/incoming-wlr/grim.toml new file mode 100644 index 00000000..9f68bf37 --- /dev/null +++ b/recipes/incoming-wlr/grim.toml @@ -0,0 +1,35 @@ +# grim 1.4.0 — captura de pantalla. Con `slurp` (que selecciona una región) forman el par estándar +# del ecosistema wlroots: `grim -g "$(slurp)" foto.png`. +# +# Vendoriza `wlr-screencopy-unstable-v1.xml`, así que no necesita un paquete de protocolos aparte. +# `-Dc_link_args=-lz`: al enlazar faltaba `crc32`, que es de **zlib**. No lo usa grim: lo usa +# `libpng`, cuyo `.pc` declara zlib en `Requires.private` — la línea que pkg-config sólo expande en +# resolución estática. Es EXACTAMENTE la misma causa que el `-lexpat` de sway (allí vía fontconfig), +# sobre otra biblioteca. Ya son dos casos: en este corpus, enlazar contra una lib estática cuyo `.pc` +# tiene `Requires.private` exige añadir esas libs a mano. +# +# Nota de versión: la última es **1.4.0**, no 1.4.1 — lo confirmé contra la API de releases en vez +# de suponerla, después de que un `curl` a una URL inventada devolviera 404. +name = "grim" +version = "1.4.0" +license = "MIT" + +[source] +tarball = "https://github.com/emersion/grim/releases/download/v1.4.0/grim-1.4.0.tar.gz" +sha256 = "b6786e889ed93568634189a59f6b6429c041bf74883c10e8b6e2ed6772ae7ffb" + +[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 -Dman-pages=disabled -Dc_link_args=-lz" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "wayland", "wayland-protocols", "libpng", + "libjpeg-turbo", "pixman", "libffi", "expat", "zlib"] +run = ["wayland", "libpng", "libjpeg-turbo", "pixman"] diff --git a/recipes/incoming-wlr/slurp.toml b/recipes/incoming-wlr/slurp.toml new file mode 100644 index 00000000..4c492b5c --- /dev/null +++ b/recipes/incoming-wlr/slurp.toml @@ -0,0 +1,34 @@ +# slurp 1.5.0 — selecciona una región de la pantalla con el ratón y la imprime. Es la mitad que le +# falta a `grim` para que capturar un trozo sea un comando y no un recorte a mano. +# +# ⚠ EL TARBALL DE ESTE PAQUETE ESTUVO A PUNTO DE ENVENENAR LA RECETA. La URL de releases de GitLab +# devolvió **HTTP 200 con una página HTML** en vez del archivo, así que `curl -f` NO falló y el +# `sha256sum` que salió era el de un documento HTML. Pinear eso habría dado una receta que descarga +# «algo» con hash correcto y no construye nunca, con un error incomprensible. +# ⇒ Regla: verificar el FORMATO de lo descargado (`tar tzf`), no que el comando saliera con 0. Es la +# misma lección que el `rm` que devuelve 0 sin borrar y el proceso vivo que no avanza. +# El sha256 de abajo es del tarball REAL, servido por GitHub y validado con `tar tzf`. +name = "slurp" +version = "1.5.0" +license = "MIT" + +[source] +tarball = "https://github.com/emersion/slurp/releases/download/v1.5.0/slurp-1.5.0.tar.gz" +sha256 = "eeb282b2adc8db5614b852596340b69da6f3954cf6cfbdc4392da509c934208a" + +[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 -Dman-pages=disabled -Dc_link_args=-lexpat" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "wayland", "wayland-protocols", "cairo", + "libxkbcommon", "pixman", "fontconfig", "freetype", "libpng", "expat", "libffi", "zlib", "glib", "pcre2", + "harfbuzz", "fribidi", "libjpeg-turbo", "libtiff"] +run = ["wayland", "cairo"] diff --git a/recipes/incoming-wlr/swaybg.toml b/recipes/incoming-wlr/swaybg.toml new file mode 100644 index 00000000..0844a49c --- /dev/null +++ b/recipes/incoming-wlr/swaybg.toml @@ -0,0 +1,35 @@ +# swaybg 1.2.1 — pone el fondo de escritorio. Sin él sway arranca sobre un vacío gris y parece roto +# aunque funcione: es el accesorio más barato con más efecto en «esto se ve terminado». +# +# Trae su propio `wlr-layer-shell-unstable-v1.xml` vendorizado (comprobado en el tarball), así que +# NO necesita un paquete `wlr-protocols` aparte. Los tres accesorios que dibujan encima del +# escritorio (swaybg, grim, slurp) hacen lo mismo; swaylock y swayidle no, porque usan los +# `ext-session-lock`/`ext-idle-notify` que ya trae nuestro wayland-protocols 1.48 (verificado). +# +# `-Dgdk-pixbuf=enabled`: es lo que le permite cargar JPEG/PNG además del color plano. +# `-Dc_link_args=-lexpat`: el `Requires.private` de fontconfig que pkg-config no propaga en enlace +# estático — misma causa exacta que en sway, ver allí la explicación larga. +name = "swaybg" +version = "1.2.1" +license = "MIT" + +[source] +tarball = "https://github.com/swaywm/swaybg/releases/download/v1.2.1/swaybg-1.2.1.tar.gz" +sha256 = "6af1fdf0e57b1cc5345febed786b761fea0e170943a82639f94cfaed7df84f8f" + +[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 -Dman-pages=disabled -Dgdk-pixbuf=enabled -Dc_link_args=-lexpat" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "wayland", "wayland-protocols", "cairo", + "gdk-pixbuf", "pixman", "glib", "fontconfig", "freetype", "libpng", "libjpeg-turbo", + "libtiff", "expat", "libffi", "pcre2", "zlib", "harfbuzz", "fribidi"] +run = ["wayland", "cairo", "gdk-pixbuf"] diff --git a/recipes/incoming-wlr/swayidle.toml b/recipes/incoming-wlr/swayidle.toml new file mode 100644 index 00000000..2a185e52 --- /dev/null +++ b/recipes/incoming-wlr/swayidle.toml @@ -0,0 +1,35 @@ +# swayidle 1.9.0 — el demonio de inactividad: dispara acciones (bloquear, apagar pantalla) tras N +# segundos sin uso. Es la pieza que hace que un portátil no se quede encendido toda la noche. +# +# No vendoriza protocolos: usa `ext-idle-notify` de wayland-protocols, que nuestra 1.48 SÍ trae +# (verificado en el artefacto antes de escribir esta receta). +# +# `-Dlogind=disabled`: swayidle puede escuchar señales de suspensión/bloqueo de logind, y no tenemos +# proveedor (no hay systemd por decisión y nuestro `libelogind` es un sd-**login** de arje-compat). +# Sin esto sigue funcionando por temporizador, que es su función principal. +# ⚠ La opción se llama `logind`, NO `sd-bus-provider`: probé con ese nombre —tomado de sway, que sí +# la tiene— y meson murió con «Unknown option». Las opciones de 1.9.0 son seis: man-pages, logind, +# logind-provider y las tres de completions. **Las perillas no se heredan entre proyectos hermanos +# aunque resuelvan lo mismo**: hay que leer el meson_options.txt de CADA uno. +name = "swayidle" +version = "1.9.0" +license = "MIT" + +[source] +tarball = "https://github.com/swaywm/swayidle/releases/download/v1.9.0/swayidle-1.9.0.tar.gz" +sha256 = "6c1b769038b60250c88e47380cbb021cfa57a65f872bf4d6c340b5e3057096ac" + +[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 -Dman-pages=disabled -Dlogind=disabled" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "wayland", "wayland-protocols", "libffi", "expat", "zlib"] +run = ["wayland"] diff --git a/recipes/incoming-wlr/swaylock.toml b/recipes/incoming-wlr/swaylock.toml new file mode 100644 index 00000000..c245fb6c --- /dev/null +++ b/recipes/incoming-wlr/swaylock.toml @@ -0,0 +1,43 @@ +# swaylock 1.8.0 — el bloqueo de pantalla. Junto a swayidle cierra el ciclo «me levanto de la +# máquina y queda protegida», que es requisito para usar la distro en serio, no sólo demostrarla. +# +# ── PAM SÍ SE PUEDE, Y CONVIENE MIRARLO DOS VECES ────────────────────────────────────────────── +# «PAM» figura entre las tres deudas aparcadas del frente GNOME, así que la reacción natural es +# darlo por bloqueado. Pero acá no lo está, por dos razones comprobadas: +# · en swaylock PAM es una OPCIÓN, no un requisito: +# libpam = cc.find_library('pam', required: get_option('pam')) +# crypt = cc.find_library('crypt', required: not libpam.found()) +# o sea que sin PAM cae a `crypt`, que valida contra /etc/shadow. +# · y además **`linux-pam` SÍ está en el corpus** — lo que estaba aparcado era la integración de +# PAM del stack GNOME, no la biblioteca. +# ⇒ Se activa PAM, que es la vía correcta para autenticar en un sistema real. La lección: una deuda +# «aparcada» nombra un frente concreto, no una palabra; conviene verificar antes de heredar el veto. +name = "swaylock" +version = "1.8.0" +license = "MIT" + +[source] +tarball = "https://github.com/swaywm/swaylock/releases/download/v1.8.0/swaylock-1.8.0.tar.gz" +sha256 = "6a1175442380b87b2d2868c4a5366ee3592163158d02e3a7fbf3a0bfe07d8b00" + +[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 -Dman-pages=disabled -Dpam=enabled -Dgdk-pixbuf=enabled -Dc_link_args=-lexpat" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "wayland", "wayland-protocols", "libxkbcommon", + "cairo", "gdk-pixbuf", "pixman", "glib", "fontconfig", "freetype", "libpng", + "libjpeg-turbo", "libtiff", "expat", "libffi", "pcre2", "zlib", "harfbuzz", "fribidi", + "linux-pam"] +# `xkeyboard-config` NO va acá aunque parezca: la propia receta de libxkbcommon lo dice en su +# cabecera — «en runtime usa los datos de xkeyboard-config; no es dep de build». Y además sólo +# existe en las colas de escritorio, no en el corpus. Lo apunto porque para que el teclado tenga +# distribución correcta en una imagen real hará falta incluirlo por el lado del perfil, no de aquí. +run = ["wayland", "cairo", "libxkbcommon", "linux-pam"]