Dashboard custom widgets
Dashboard custom widgets (QWidget) let you describe your own home card in a single.qwidget file: layout, text, buttons, inputs, media, data sources, triggers, and TypeScript functions. It is a separate mechanism from plugin dashboard:widgets:
Open the editor
- On the home page, click Edit layout in the top-right corner.
- Click + on the toolbar.
- In the Custom widgets section, click New widget.
- XML: widget structure with line numbers, syntax highlighting, folding, search, schema completion, and live validation.
- Functions: edit
Function.ScriptTypeScript with completion forInput/Inputs/Data/Resources/Results/Host, plus Run.
First widget
Import and export
- Import from URL: enter
https://.../*.qwidget, fetch and validate it, then load it. Once saved, the widget checks for updates silently every 6 hours. - Import file: choose a local
.qwidget/.xmlfile. Relative paths are based on that file’s directory. - Export file: save the current XML. Local
Widget.Using Name="..."dependencies are not inlined; the editor warns about missing dependencies before export.
Domain confirmation
The right panel lists every domain the widget will access:Data Source="Url"sourcesWidget UpdateUrl/ online import sourceWidget.Using Urlnested widgets- Static
Image/MediaURLs
Updates and risk
Online widgets check for updates silently every 6 hours; data, text, and layout updates do not prompt. Custom widgets can run TypeScript, execute commands, call plugin APIs, and read local files, so:- Confirm when a remote widget import or update adds/changes executable content; decline keeps the old XML.
- Literal commands in local widgets and user-input commands do not prompt on every click.
- Commands generated from online data are confirmed by final command hash.
- See Security and trust.
- Only use widgets you trust. The launcher developers are not responsible for risks caused by custom widgets.
Storage and limits
- Definitions and data caches are stored in local
localStorage; layout uses the existing home grid storage. - XML ≤256KB, depth 16, 1000 elements, 8 data sources, 200 rendered list items.
- Online text/JSON/XML ≤1MB, binary ≤8MB.
- Nesting depth ≤5, up to 20 nested instances per parent.
- Function scripts ≤64KB, default timeout 3 seconds (max 10 seconds).