La sección app y sus ventanas declaradas
Declarar una ventana en la configuración frente a crearla en tiempo de ejecución: qué gana cada opción, por qué la etiqueta es lo primero que hay que decidir, y qué pasa cuando la lista está vacía.
La ventana declarada
La etiqueta, que es lo primero
De todas las claves de arriba, la que hay que decidir antes es label, porque no es un nombre para leer: es la clave con la que el resto del sistema se refiere a esa ventana.
Aparece en cuatro sitios, y cambiarla obliga a tocarlos todos a la vez:
| dónde aparece | para qué |
|---|---|
| en Rust | app.get_webview_window("main") para obtener la ventana |
| en un evento dirigido | emitir solo a esa ventana en vez de a todas. Nivel 20 |
| en una capability | "windows": ["main"] — este permiso vale aquí y no en las demás. Fase V |
| en el frontend | para saber en qué ventana se está ejecutando, si hay varias |
La convención es minúsculas, sin espacios, y describiendo el papel y no el contenido: main, settings, preview, splash. Un nombre como ventana1 no dice nada dentro de un fichero de permisos, que es justo donde más falta hace que diga algo.
Declarada frente a creada
La combinación que funciona en casi todas las aplicaciones: la ventana principal declarada, y las demás creadas. La principal se beneficia de existir antes del gancho de inicialización y de estar a la vista en un fichero; las secundarias —ajustes, un documento, una vista previa— dependen de lo que el usuario haga, así que se crean.
La lista vacía, y para qué sirve
"windows": [] es válido y no es un error: significa que la aplicación arranca sin ninguna ventana y que las creará el código.
Sirve para dos cosas concretas:
- Una aplicación que vive en la bandeja. Arranca sin ventana, pone su icono, y abre una solo cuando el usuario la pide. Nivel 50.
- Una ventana que depende de datos. Leer la sesión anterior, decidir en qué monitor y con qué tamaño abrir, y entonces crearla. Es más trabajo que declararla y da un arranque que respeta lo que el usuario dejó.
El aviso que va con eso: en Windows y en Linux, cerrar la última ventana termina la aplicación por defecto. Una aplicación sin ventanas al arrancar necesita decirle al bucle de eventos que no se muera, y ese es el nivel 25.