.pragma library // Descriptive metadata and requested heights only. SurfaceManager owns geometry; // PopoutHost owns QML components and their service wiring. var fallbackHeight = 300; var entries = { "clock": { "width": 760, "height": 580, "component": "calendar-agenda", "source": "Time.qml", "visual": ["clock", "date", "calendar-grid", "agenda"] }, "system": { "width": 780, // Side-by-side cards, issues band, and top-processes row. "height": 600, "component": "system-resources", "source": "Resources.qml", "visual": ["identity-card", "live-metrics", "sparklines", "issues-band", "top-processes"] }, "notifications": { "width": 560, "height": 460, "component": "notification-history", "source": "Notifications.qml", "visual": ["summary", "attention", "actions"] }, "tray": { "width": 520, "height": 440, "component": "tray-menu-host", "source": "Tray.qml", "visual": ["items", "attention", "native-menu-host"] }, "media": { "width": 560, "height": 420, "component": "media-controls", "source": "Media.qml", "visual": ["active-player", "transport", "progress", "selection"] }, "noko": { "width": 640, "height": 560, "component": "speech-transcription", "source": "Noko.qml noko.mjs", "visual": ["doctor", "setup", "record", "history"] }, "clipboard": { "width": 520, "height": 560, "component": "clipboard-history", "source": "Clipboard.qml", "visual": ["search", "cards", "thumbnails", "private-mode"] }, "vault": { "width": 840, "height": 580, "component": "vault-browser", "source": "Vault.qml VaultPanel.qml vault-native", "visual": ["search", "favorites", "details", "totp", "unlock"] }, "launcher": { "width": 760, "height": 432, "component": "app-launcher", "source": "Launcher.qml", "visual": ["app-search", "desktop-icons", "desktop-actions", "desktop-entry-details"] }, "audio": { "width": 488, "height": 520, "component": "audio-mixer", "source": "Audio.qml", "visual": ["sinks", "sources", "streams", "mute"] }, "brightness": { "width": 488, "height": 340, "component": "brightness-control", "source": "Brightness.qml", "visual": ["level", "luminance-shader", "osd"] }, "connectivity": { "width": 620, "height": 540, "component": "connectivity-panel", "source": "Network.qml+Bluetooth.qml", "visual": ["network", "wifi", "bluetooth", "devices"] }, "power": { "width": 368, "height": 188, "batteryHeight": 248, "component": "power-battery", "source": "Power.qml", "visual": ["battery", "profile", "session", "confirmation"] } }; function catalogJson() { const descriptiveEntries = {}; for (const name of Object.keys(entries)) { const entry = entries[name]; descriptiveEntries[name] = { "component": entry.component, "source": entry.source, "visual": entry.visual }; } return JSON.stringify({ "host": "PopoutHost.qml", "loaderPolicy": "single-active-loader-with-close-retention", "completeContent": true, "entries": descriptiveEntries }); }