# cosmic-screenshot — la captura de pantalla. **La receta más barata de toda la campaña y la más # inútil por sí sola**, y las dos cosas por la misma razón: no captura nada; le PIDE la captura al # portal XDG. # # ── LO QUE ES: 130 líneas de Rust y cero C ────────────────────────────────────────────────────── # Sus deps son `ashpd` (cliente de portales sobre zbus), `jiff`, `dirs`, `tokio`, `clap`, `zbus` y el # andamiaje de i18n. Los únicos `-sys` del lock son `dirs-sys`, `linux-raw-sys`, `js-sys` y # `windows-sys`: ninguno compila C en Linux. No necesita ni el juego fijo de cuatro que pide todo # cliente de la suite — no dibuja, no abre ventana, no habla wayland. # # ── LO QUE NO ES: no hay captura sin PORTAL ───────────────────────────────────────────────────── # `src/main.rs` arranca con `use ashpd::desktop::screenshot::Screenshot` y todo su trabajo es # `Screenshot::request()`, o sea una llamada a `org.freedesktop.portal.Desktop`. Ese nombre lo # registra el frontend `xdg-desktop-portal`, que **no está en la imagen**; el backend que lo # implementaría para este escritorio es `xdg-desktop-portal-cosmic`, que tampoco. # # Así que esta receta entrega **el binario correcto y el `.desktop` en la biblioteca**, y al # ejecutarlo falla al no encontrar el portal. Se sella igual y a propósito: es la pieza cliente, ya # está paga, y deja el frente reducido a UNA pregunta —¿se puede tener el portal sin la glib # compartida?—. El frontend `xdg-desktop-portal` es C sobre GIO; el backend de COSMIC es Rust. Ver el # runbook. # # Lo único que SÍ funciona hoy de su código es el aviso final: manda `org.freedesktop.Notifications`, # y eso lo sirve `cosmic-notifications`, que ya está en la imagen. # # El `.desktop` y los iconos vienen ESTÁTICOS en `resources/`, no generados por `xdgen` como en # term/files/settings/edit/store. Por eso acá no hacen falta `INSTALL_DIR` ni `APPID`. name = "cosmic-screenshot" version = "0.1.0" license = "GPL-3.0" [source] tarball = "https://github.com/pop-os/cosmic-screenshot/archive/epoch-1.5.0/cosmic-screenshot-epoch-1.5.0.tar.gz" sha256 = "2a0a1fb18303773fbfe54613b0b5603871a72cbbb5b0ae183b5390227671b9a3" [build] compiler = "zig-cc" target = "x86_64-linux-musl" # Acá el estático SÍ se podría: no enlaza wayland, así que no lo alcanza la trampa del `dlopen` de # `wayland-client` que obliga a dinámico a todos los demás clientes. Se deja dinámico igual, por # coherencia con la suite y para no ser la única pieza que resuelva distinto. link = "dynamic" [build.phases] install = ''' mkdir -p /out/usr/bin /out/usr/share/applications cp target/release/cosmic-screenshot /out/usr/bin/cosmic-screenshot chmod 755 /out/usr/bin/cosmic-screenshot cp resources/com.system76.CosmicScreenshot.desktop /out/usr/share/applications/ for size in resources/icons/hicolor/*; do [ -d "$size" ] || continue s=$(basename "$size") if [ -f "$size/apps/com.system76.CosmicScreenshot.svg" ]; then mkdir -p "/out/usr/share/icons/hicolor/$s/apps" cp "$size/apps/com.system76.CosmicScreenshot.svg" "/out/usr/share/icons/hicolor/$s/apps/" fi done ''' [deps] # Vacío a propósito, y medido: no hay un solo `-sys` que compile C en Linux. Es la única pieza de la # suite que no necesita ni `libxkbcommon` ni `libinput`. build = []