tawasuyu/llimphi
Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.
chore: refresco desde el monorepo (pin tawasuyu.git v0.3.0)
1[package]
2name = "llimphi-widget-app-icon"
3version.workspace = true
4edition.workspace = true
5license.workspace = true
6authors.workspace = true
7publish.workspace = true
8description = "llimphi-widget-app-icon — resuelve el icono de una app .desktop (nombre freedesktop, o el app_id de Wayland via StartupWMClass) a un archivo, y —con la feature `view`— a un asset pintable (SVG o PNG) cacheado. Lo que las apps de la suite declaran como glyph corto lo cubre llimphi-icons; esto es para el software del sistema."
9
10[dependencies]
11# Sólo la mitad `view`. La mitad de RESOLUCIÓN (dónde está el archivo del ícono)
12# es `std::fs` puro, sin dependencias: por eso son opcionales.
13# El COMPOSITOR y no el shell: este widget arma una `View`, no abre ventanas.
14llimphi-compositor = { path = "../../llimphi-compositor", version = "0.1.0", default-features = false, optional = true }
15llimphi-image = { workspace = true, optional = true }
16llimphi-svg = { workspace = true, optional = true }
17
18[features]
19# Este crate tiene DOS mitades, y no todo el mundo quiere las dos:
20#
21# - **resolución** (siempre): del `app_id` de Wayland al `Icon=` del `.desktop`
22# (índice por `StartupWMClass`), y de ahí al archivo en el tema XDG. Es
23# `std::fs` y nada más.
24# - **`view`** (por defecto): además carga ese archivo y arma la `View` de
25# llimphi que lo pinta. Arrastra llimphi-ui/image/svg.
26#
27# El **compositor** (`mirada`) usa sólo la primera: camina el mismo filesystem
28# del escritorio que la shell, pero rasteriza a un búfer propio con resvg, no
29# con llimphi — no puede depender de llimphi-ui. Antes de esta partición
30# resolvía contra `app-iconset` (sólo la suite) y el titlebar de una app ajena
31# caía a solo-texto. La alternativa era un segundo resolvedor de íconos, que es
32# exactamente lo que no queremos: ya hay cuatro en el repo.
33default = ["view", "svg", "vello", "std"]
34view = ["dep:llimphi-compositor", "dep:llimphi-image"]
35
36# **Los íconos en SVG**, que son la mayoría de los de un tema XDG.
37#
38# Se puede apagar por una razón concreta: `llimphi-svg` rinde con `vello_svg` a
39# una `vello::Scene`, o sea que está atado al rasterizador **por construcción**.
40# Mientras lo tome, este widget —y todo lo que lo monte, incluido el terminal—
41# no puede correr en un proceso aparte.
42#
43# **Lo que se pierde al apagarlo, dicho:** un ícono `.svg` no se carga y el
44# llamador recibe `None`, así que cae a lo que tenga para un ícono ausente. Los
45# `.png` del tema siguen entrando. Encendida (el default) no cambia nada.
46#
47# El arreglo de fondo no es esta perilla: es rasterizar el SVG a un bitmap del
48# lado del huésped —lo que `mirada` ya hace con resvg— y entregarlo como
49# imagen, igual que un png. Eso es otro trabajo, con su propio permiso.
50svg = ["dep:llimphi-svg", "view"]
51
52# El backend, para quien monte este widget fuera del escritorio.
53vello = ["llimphi-compositor?/vello"]
54cpu = ["llimphi-compositor?/cpu"]
55wire = ["llimphi-compositor?/wire"]
56std = ["llimphi-compositor?/std"]
57libm = ["llimphi-compositor?/libm"]
58
59[dev-dependencies]
60# El shell, SÓLO para los demos, los pantallazos y los tests: abren ventana o
61# rasterizan de verdad. La lib no lo toma —es lo que deja correr esto en un
62# proceso aparte—, pero un example que no puede abrir ventana no es un example.
63llimphi-ui = { workspace = true }