diff --git a/docs/evidencia/cosmic-portal-interfaces-2026-08-05.png b/docs/evidencia/cosmic-portal-interfaces-2026-08-05.png new file mode 100644 index 00000000..7fc00a13 Binary files /dev/null and b/docs/evidencia/cosmic-portal-interfaces-2026-08-05.png differ diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md index 05985059..7a1c258b 100644 --- a/docs/runbooks/cosmic-desktop.md +++ b/docs/runbooks/cosmic-desktop.md @@ -869,12 +869,44 @@ fallar el pull, no destruyó el worker.) subproyecto de internet y, sin red, el error no dice «te falta glib» sino `Unhandled python exception / This is a Meson bug`. **Deuda anotada.** +### Las cinco interfaces, sondeadas por D-Bus + +`docs/evidencia/cosmic-portal-interfaces-2026-08-05.png`. Del lado del CLIENTE, contra +`org.freedesktop.portal.Desktop`: + +| interfaz | versión | +|---|---| +| `Screenshot` | 2 | +| `FileChooser` | 3 | +| `ScreenCast` | 5 | +| `Settings` | 2 | +| `Access` | **no existe, y está bien** | + +**`org.freedesktop.portal.Access` no es una interfaz de cliente**: `Access` vive sólo como +`org.freedesktop.impl.portal.Access`, o sea del lado del BACKEND — es como el frontend le pide al +escritorio que muestre el diálogo de permiso. Pedirla al frontend devuelve `No such interface`, que +es el comportamiento correcto y no un hueco. (El sondeo inicial la pidió mal; el error era del +sondeo, no del portal.) + +Del lado del BACKEND, contra `org.freedesktop.impl.portal.desktop.cosmic`: `Screenshot` 2, +`ScreenCast` 4, `Settings` 2, y `Access` + `FileChooser` responden +`UnknownProperty 'version'`. **Ese error prueba que la interfaz ESTÁ**: si faltara, D-Bus contestaría +`No such interface`; `UnknownProperty` significa que la encontró y que esa implementación no publica +la propiedad `version`. + +Y el `ListNames` del bus muestra `org.freedesktop.impl.portal.desktop.cosmic` **activado** junto a +`org.freedesktop.impl.portal.PermissionStore`: el frontend levantó al backend por D-Bus activation, +que es justamente el eslabón que el `.service` con `@libexecdir@` sustituido hace posible. + +⚠ **Alcance honesto de esta medición**: prueba DISPONIBILIDAD y ENRUTADO, no los flujos completos. +La única interfaz ejercida de punta a punta —con fichero en disco— es `Screenshot`. + ## Lo que falta, en orden -1. **Probar las otras cuatro interfaces del portal.** La captura está verificada con fichero; faltan - `FileChooser` (abrir un fichero desde una aplicación), `ScreenCast` (compartir pantalla, que es la - que ejercita pipewire de verdad), `Settings` y `Access`. El andamiaje ya está: se manejan desde - `cosmic-term` por QMP igual que la captura. +1. **Ejercer los flujos, no sólo sondear**: `FileChooser` desde una aplicación que use el portal + (`cosmic-store` se compiló con la feature `xdg-portal`; `cosmic-edit` NO la usa, va con el + selector propio de `cosmic-files` como crate) y `ScreenCast`, que es la que ejercita pipewire de + verdad. 2. **Decidir `gvfs`** (ver la corrección de arriba: las piezas ya están selladas, lo que falta es la decisión sobre la segunda glib). Destrabaría los montajes remotos de cosmic-files y su applet. 3. **Enchufar la tienda a `.swm`**: servir `org.freedesktop.PackageKit` y encender la feature