Saltar al contenido

Crear paneles

Crear paneles

Un panel de la comunidad es una carpeta de archivos web que Deska ejecuta en un sandbox sobre tu escritorio. Qué es, cómo habla con Deska, las reglas que sigue y dónde está documentada cada parte.

Qué es un panel

Un panel de la comunidad es una pequeña página web que vive en un escritorio de Deska, junto a terminales, editores y tareas. Lo escribes como una carpeta: un panel.json que dice qué es el panel y qué puede hacer, una página HTML, y los scripts, estilos, imágenes y fuentes que esa página cargue. No hay paso de compilación, ni servidor, ni framework que adoptar. Deska le sirve la carpeta al propio panel.

Deska ejecuta la página en un marco aislado con un origen propio, así que no puede leer tus archivos, tus otros paneles, tus agentes ni tu cuenta. La página solo habla con Deska a través de window.deska, el SDK que Deska sirve en /__deska/sdk.js dentro de cada panel. Con él un panel guarda sus propios datos, sigue el tema, sabe cuándo está en pantalla y, si la persona lo permite, envía avisos, abre enlaces y copia texto.

Un panel aparece en dos lugares:

  • En el escritorio, como un panel en el lienzo, en un dock o en una ventana propia. Todo paquete lo tiene.
  • En Extras, el popover del lienzo donde están Enfoque y Música, como una fila con una línea de estado y un control redondo. Es opcional; consulta Extras.
NotaLos paneles de la comunidad corren en la app de escritorio, desde Deska 1.26.0. La app del teléfono y app.deska.dev no los abren.

El panel más pequeño

Con dos archivos tienes un panel que carga, sigue el tema y te saluda con su nombre:

panel.jsonjson
{
  "schema": 1,
  "id": "hello-desk",
  "name": "Hello Desk",
  "version": "0.1.0",
  "description": "Says hello in Deska's colors.",
  "author": "Your name",
  "sdk": 1,
  "contributes": { "panel": { "entry": "index.html" } }
}
index.htmlhtml
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <script src="/__deska/sdk.js"></script>
  <style>
    body { margin: 0; padding: 16px; background: var(--deska-bg); color: var(--deska-text); font: 13px var(--deska-font-ui); }
  </style>
</head>
<body>
  <p id="hello">Waiting for Deska</p>
  <script type="module">
    const init = await deska.ready()
    document.getElementById('hello').textContent = `Hello from ${init.panel.name}`
  </script>
</body>
</html>

Ponlos en una carpeta, abre la Biblioteca de paneles (Cmd/CtrlShiftE), ve a Comunidad, luego a Crear un panel, elige Cargar una carpeta y selecciónala. El panel aparece en tu escritorio y se recarga cada vez que guardas. Crea tu primer panel lleva la misma idea más lejos en unos quince minutos.

De una carpeta al escritorio de otras personas

  1. Construye. Escribe la carpeta, pruébala junto a tu editor con la herramienta de vista previa del repositorio de ejemplos y cárgala en Deska con Cargar una carpeta. Deska la revisa con las mismas reglas que encontrará al publicarse. Consulta Pruebas y depuración.
  2. Solicita acceso. Publicar está abierto a autores invitados. Cuéntanos qué estás construyendo en deska.dev/panels/apply.
  3. Publica. Cuando aprueben tu cuenta, pulsa Publicar en la página de la carpeta cargada en Deska. deska.dev vuelve a revisar el paquete y lo publica. Consulta Publicar.
  4. Lo instalan. Otras personas lo encuentran en Descubrir y en deska.dev/panels, leen qué puede hacer y a qué sitios se conecta, y lo instalan. Lo que instalan sigue a su cuenta en cada computadora donde inician sesión.
  5. Actualiza. Sube version y publica otra vez. Las instalaciones ofrecen la actualización, y antes vuelven a preguntar si la versión nueva pide un permiso o un sitio que no se había permitido.

Las reglas en breve

Cada regla tiene su razón y una forma de resolverla en El sandbox; los límites exactos están en Códigos de error y límites.

ReglaQué hacer en su lugar
Solo los sitios de network, por httpsDeclara cada host del que el panel pide datos o carga imágenes, fuentes y medios. La API debe aceptar cualquier origen (CORS).
Sin localStorage, indexedDB ni cookiesGuarda los datos en deska.storage: 256 KB por paquete, compartidos por todas sus copias en la computadora. Guarda las imágenes y otros archivos en deska.files: 32 MB por archivo, 256 MB por paquete.
Sin descargasGuarda un archivo con deska.files.save: la persona elige dónde.
Sin marcos propios, workers ni scripts remotosIncluye tus librerías dentro del paquete. Reproduce medios de hosts declarados con <audio> y <video>, o muestra la página de otro sitio a través de Deska con deska.embed.
Los formularios nunca navegan; sin ventanas emergentes ni alert()Maneja el envío con preventDefault() y abre enlaces con deska.openUrl.
El foco solo se mueve cuando la persona actúaLlama a openUrl, clipboard.write y files.save directo desde un clic; pide atención con deska.notify.
Sin secretosNo hay un lugar seguro para un token. Usa APIs públicas.
Se puede recargar en cualquier momentoGuarda lo importante en el almacenamiento y reconstruye a partir de lo que responde deska.ready().

Dónde está cada cosa

Empieza desde un ejemplo

deska-panels-examples en GitHub reúne catorce paneles con licencia MIT, una carpeta inicial y la herramienta de vista previa. Lee uno, cópialo o carga cualquier carpeta de panels/ con Cargar una carpeta. Empieza por Team Clocks, y ten SDK Playground abierto mientras construyes: ejecuta cada llamada y muestra cada código de error. La lista completa, con capturas, está en Paneles de ejemplo.

Si solo quieres instalar paneles, todo lo que necesitas está en Paneles de la comunidad.