Bootstrap the Dashward repo per arch/UBUNTU-DASHBOARD-SPACE.md: - pnpm-workspaces monorepo (sdk, extension, container, widgets-builtin/*) - GNOME extension stub (metadata.json, src/*.ts placeholders for warden, guard, supervisor, entry UX, DBus service) - WebKit container stub (GJS main + page-side runtime + dashboard.html) - TypeScript widget SDK (defineWidget + types) - Builtin clock widget as the first SDK consumer example - DBus interface XML (proto/shell.iface.xml) and shared types - esbuild configs for extension and container; tsc for SDK - Design doc copied in at repo root for discoverability No functional logic yet -- all components are placeholders that compose in extension.ts so the build chain can be exercised. P1 (workspace warden) starts next. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 lines
942 B
TypeScript
43 lines
942 B
TypeScript
// Shared types between extension, container, and SDK. Keep in sync with
|
|
// shell.iface.xml. See design §8.
|
|
|
|
export type Theme = 'light' | 'dark';
|
|
|
|
export interface SystemInfo {
|
|
theme: Theme;
|
|
battery?: { level: number; charging: boolean };
|
|
network?: { connected: boolean; type: 'wifi' | 'ethernet' | 'cellular' | 'none' };
|
|
brightness?: number;
|
|
}
|
|
|
|
export interface LayoutEntry {
|
|
instanceId: string;
|
|
widgetId: string;
|
|
x: number;
|
|
y: number;
|
|
w: number;
|
|
h: number;
|
|
}
|
|
|
|
export interface LayoutFile {
|
|
widgets: LayoutEntry[];
|
|
}
|
|
|
|
export interface WidgetManifest {
|
|
id: string;
|
|
name: string;
|
|
version: string;
|
|
entry: string;
|
|
icon?: string;
|
|
size: { w: number; h: number; minW?: number; minH?: number; maxW?: number; maxH?: number };
|
|
permissions: WidgetPermission[];
|
|
configSchema?: Record<string, string>;
|
|
}
|
|
|
|
export type WidgetPermission =
|
|
| 'timer'
|
|
| 'battery'
|
|
| 'network'
|
|
| 'brightness'
|
|
| 'notifications';
|