This document describes the internal architecture and protocols of the Web Deck shell.
Web Deck uses a multi-view approach where the system UI and apps are managed as BrowserView instances on top of a single BrowserWindow.
- Main shell:
src/main/index.jsmanages the lifecycle ofBrowserViews. - System UI: A transparent/persistent overlay at the bottom of the screen.
- Apps: Dynamic web pages loaded into their own containers.
The following channels are used for communication between the Renderer and Main processes via the webdeck context bridge.
nav-back: Request the active app to go back in history.nav-home: Switch to the Launcher view.nav-recents: Switch to the Recents (Task Manager) view.load-app: Load a specific app. Payload:{ id: string, title: string, url: string }.kill-app: Terminate a running app. Payload:appId: string.
get-apps: Returns the list of apps defined inapps.json.get-running-apps: Returns the list of currently open apps (including screenshots).
refresh-recents: Notifies the Recents view to reload the list of running apps.
- Quick Run:
npm run dev(builds renderer once and starts Electron). - HMR Mode:
- Step 1:
npm run dev:renderer(starts the Vite dev server). - Step 2:
npm run dev:electron(starts Electron pointing to the dev server).
- Step 1:
The shell identifies the view mode via a URL query parameter ?mode=... (e.g., launcher, recents, overlay).