gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1346Shell 97Rust 63Markdown 571650 Definitions

⎇ main recipes/incoming-cosmic/cosmic-screenshot.toml TOML · 63 lines · 3.5 KB History raw

licencias: 936 de 1141 (82%) — detección por evidencia, con sus dos imprecisiones declaradas a6a9d59e4 · sergio ·

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