🚪 cosmic: las cinco interfaces del portal, sondeadas — y Access no es un hueco

Del lado CLIENTE (org.freedesktop.portal.Desktop): Screenshot 2,
FileChooser 3, ScreenCast 5, Settings 2.

`org.freedesktop.portal.Access` NO EXISTE, y está bien: Access vive sólo
como org.freedesktop.impl.portal.Access, del lado del BACKEND — es como el
frontend le pide al escritorio que muestre el diálogo de permiso. Mi primer
sondeo la pidió al frontend y el «No such interface» era un error DEL
SONDEO, no del portal.

Del lado BACKEND (impl.portal.desktop.cosmic): Screenshot 2, ScreenCast 4,
Settings 2; Access y FileChooser devuelven UnknownProperty 'version'. Ese
error PRUEBA que la interfaz está: si faltara, D-Bus contestaría «No such
interface». UnknownProperty = la encontró y esa implementación no publica
esa propiedad.

Y el ListNames muestra impl.portal.desktop.cosmic ACTIVADO junto a
impl.portal.PermissionStore: el frontend levantó al backend por D-Bus
activation, que es el eslabón que habilita el .service con @libexecdir@
sustituido.

ALCANCE HONESTO: esto prueba DISPONIBILIDAD y ENRUTADO, no los flujos
completos. La única ejercida de punta a punta —con fichero en disco— sigue
siendo Screenshot.

Próximo: ejercer FileChooser desde una app 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.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-05 06:50:30 -04:00
co-authored by Claude Opus 5
parent ada054cf07
commit 99e670ee4f
2 changed files with 36 additions and 4 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

+36 -4
View File
@@ -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