@elizaos/capacitor-desktop 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/definitions.d.ts +231 -0
- package/dist/esm/definitions.d.ts.map +1 -0
- package/dist/esm/definitions.js +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/web.d.ts +111 -0
- package/dist/esm/web.d.ts.map +1 -0
- package/dist/esm/web.js +272 -0
- package/dist/plugin.cjs.js +269 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +272 -0
- package/dist/plugin.js.map +1 -0
- package/electrobun/src/index.ts +708 -0
- package/electrobun/tsconfig.json +16 -0
- package/package.json +68 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import type { PluginListenerHandle } from "@capacitor/core";
|
|
2
|
+
export interface TrayMenuItemBase {
|
|
3
|
+
id: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
type?: "normal" | "separator" | "checkbox" | "radio";
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
visible?: boolean;
|
|
9
|
+
icon?: string;
|
|
10
|
+
accelerator?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TrayMenuItemWithSubmenu extends TrayMenuItemBase {
|
|
13
|
+
submenu?: TrayMenuItem[];
|
|
14
|
+
}
|
|
15
|
+
export type TrayMenuItem = TrayMenuItemWithSubmenu;
|
|
16
|
+
export interface TrayOptions {
|
|
17
|
+
icon: string;
|
|
18
|
+
tooltip?: string;
|
|
19
|
+
title?: string;
|
|
20
|
+
menu?: TrayMenuItem[];
|
|
21
|
+
}
|
|
22
|
+
export interface TrayClickEvent {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
button: "left" | "right" | "middle";
|
|
26
|
+
modifiers: {
|
|
27
|
+
alt: boolean;
|
|
28
|
+
shift: boolean;
|
|
29
|
+
ctrl: boolean;
|
|
30
|
+
meta: boolean;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface TrayMenuClickEvent {
|
|
34
|
+
itemId: string;
|
|
35
|
+
checked?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface GlobalShortcut {
|
|
38
|
+
id: string;
|
|
39
|
+
accelerator: string;
|
|
40
|
+
enabled?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface GlobalShortcutEvent {
|
|
43
|
+
id: string;
|
|
44
|
+
accelerator: string;
|
|
45
|
+
}
|
|
46
|
+
export interface AutoLaunchOptions {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
openAsHidden?: boolean;
|
|
49
|
+
path?: string;
|
|
50
|
+
args?: string[];
|
|
51
|
+
}
|
|
52
|
+
export interface WindowOptions {
|
|
53
|
+
width?: number;
|
|
54
|
+
height?: number;
|
|
55
|
+
x?: number;
|
|
56
|
+
y?: number;
|
|
57
|
+
minWidth?: number;
|
|
58
|
+
minHeight?: number;
|
|
59
|
+
maxWidth?: number;
|
|
60
|
+
maxHeight?: number;
|
|
61
|
+
resizable?: boolean;
|
|
62
|
+
movable?: boolean;
|
|
63
|
+
minimizable?: boolean;
|
|
64
|
+
maximizable?: boolean;
|
|
65
|
+
closable?: boolean;
|
|
66
|
+
focusable?: boolean;
|
|
67
|
+
alwaysOnTop?: boolean;
|
|
68
|
+
fullscreen?: boolean;
|
|
69
|
+
fullscreenable?: boolean;
|
|
70
|
+
skipTaskbar?: boolean;
|
|
71
|
+
frame?: boolean;
|
|
72
|
+
transparent?: boolean;
|
|
73
|
+
opacity?: number;
|
|
74
|
+
title?: string;
|
|
75
|
+
vibrancy?: "appearance-based" | "light" | "dark" | "titlebar" | "selection" | "menu" | "popover" | "sidebar" | "header" | "sheet" | "window" | "hud" | "fullscreen-ui" | "tooltip" | "content" | "under-window" | "under-page";
|
|
76
|
+
backgroundColor?: string;
|
|
77
|
+
}
|
|
78
|
+
export interface WindowBounds {
|
|
79
|
+
x: number;
|
|
80
|
+
y: number;
|
|
81
|
+
width: number;
|
|
82
|
+
height: number;
|
|
83
|
+
}
|
|
84
|
+
export interface NotificationOptions {
|
|
85
|
+
title: string;
|
|
86
|
+
body?: string;
|
|
87
|
+
icon?: string;
|
|
88
|
+
silent?: boolean;
|
|
89
|
+
urgency?: "normal" | "critical" | "low";
|
|
90
|
+
timeoutType?: "default" | "never";
|
|
91
|
+
actions?: Array<{
|
|
92
|
+
type: "button";
|
|
93
|
+
text: string;
|
|
94
|
+
}>;
|
|
95
|
+
closeButtonText?: string;
|
|
96
|
+
hasReply?: boolean;
|
|
97
|
+
replyPlaceholder?: string;
|
|
98
|
+
}
|
|
99
|
+
export interface NotificationEvent {
|
|
100
|
+
action?: string;
|
|
101
|
+
reply?: string;
|
|
102
|
+
}
|
|
103
|
+
export interface PowerMonitorState {
|
|
104
|
+
onBattery: boolean;
|
|
105
|
+
batteryLevel?: number;
|
|
106
|
+
isCharging?: boolean;
|
|
107
|
+
idleState: "active" | "idle" | "locked" | "unknown";
|
|
108
|
+
idleTime: number;
|
|
109
|
+
}
|
|
110
|
+
export interface DesktopPlugin {
|
|
111
|
+
createTray(options: TrayOptions): Promise<void>;
|
|
112
|
+
updateTray(options: Partial<TrayOptions>): Promise<void>;
|
|
113
|
+
destroyTray(): Promise<void>;
|
|
114
|
+
setTrayMenu(options: {
|
|
115
|
+
menu: TrayMenuItem[];
|
|
116
|
+
}): Promise<void>;
|
|
117
|
+
registerShortcut(options: GlobalShortcut): Promise<{
|
|
118
|
+
success: boolean;
|
|
119
|
+
}>;
|
|
120
|
+
unregisterShortcut(options: {
|
|
121
|
+
id: string;
|
|
122
|
+
}): Promise<void>;
|
|
123
|
+
unregisterAllShortcuts(): Promise<void>;
|
|
124
|
+
isShortcutRegistered(options: {
|
|
125
|
+
accelerator: string;
|
|
126
|
+
}): Promise<{
|
|
127
|
+
registered: boolean;
|
|
128
|
+
}>;
|
|
129
|
+
setAutoLaunch(options: AutoLaunchOptions): Promise<void>;
|
|
130
|
+
getAutoLaunchStatus(): Promise<{
|
|
131
|
+
enabled: boolean;
|
|
132
|
+
openAsHidden: boolean;
|
|
133
|
+
}>;
|
|
134
|
+
setWindowOptions(options: WindowOptions): Promise<void>;
|
|
135
|
+
getWindowBounds(): Promise<WindowBounds>;
|
|
136
|
+
setWindowBounds(options: WindowBounds): Promise<void>;
|
|
137
|
+
minimizeWindow(): Promise<void>;
|
|
138
|
+
maximizeWindow(): Promise<void>;
|
|
139
|
+
unmaximizeWindow(): Promise<void>;
|
|
140
|
+
closeWindow(): Promise<void>;
|
|
141
|
+
showWindow(): Promise<void>;
|
|
142
|
+
hideWindow(): Promise<void>;
|
|
143
|
+
focusWindow(): Promise<void>;
|
|
144
|
+
isWindowMaximized(): Promise<{
|
|
145
|
+
maximized: boolean;
|
|
146
|
+
}>;
|
|
147
|
+
isWindowMinimized(): Promise<{
|
|
148
|
+
minimized: boolean;
|
|
149
|
+
}>;
|
|
150
|
+
isWindowVisible(): Promise<{
|
|
151
|
+
visible: boolean;
|
|
152
|
+
}>;
|
|
153
|
+
isWindowFocused(): Promise<{
|
|
154
|
+
focused: boolean;
|
|
155
|
+
}>;
|
|
156
|
+
setAlwaysOnTop(options: {
|
|
157
|
+
flag: boolean;
|
|
158
|
+
level?: "normal" | "floating" | "torn-off-menu" | "modal-panel" | "main-menu" | "status" | "pop-up-menu" | "screen-saver";
|
|
159
|
+
}): Promise<void>;
|
|
160
|
+
setFullscreen(options: {
|
|
161
|
+
flag: boolean;
|
|
162
|
+
}): Promise<void>;
|
|
163
|
+
setOpacity(options: {
|
|
164
|
+
opacity: number;
|
|
165
|
+
}): Promise<void>;
|
|
166
|
+
showNotification(options: NotificationOptions): Promise<{
|
|
167
|
+
id: string;
|
|
168
|
+
}>;
|
|
169
|
+
closeNotification(options: {
|
|
170
|
+
id: string;
|
|
171
|
+
}): Promise<void>;
|
|
172
|
+
getPowerState(): Promise<PowerMonitorState>;
|
|
173
|
+
quit(): Promise<void>;
|
|
174
|
+
relaunch(): Promise<void>;
|
|
175
|
+
getVersion(): Promise<{
|
|
176
|
+
version: string;
|
|
177
|
+
name: string;
|
|
178
|
+
runtime: string;
|
|
179
|
+
chrome: string;
|
|
180
|
+
node: string;
|
|
181
|
+
}>;
|
|
182
|
+
isPackaged(): Promise<{
|
|
183
|
+
packaged: boolean;
|
|
184
|
+
}>;
|
|
185
|
+
getPath(options: {
|
|
186
|
+
name: "home" | "appData" | "userData" | "sessionData" | "temp" | "exe" | "module" | "desktop" | "documents" | "downloads" | "music" | "pictures" | "videos" | "recent" | "logs" | "crashDumps";
|
|
187
|
+
}): Promise<{
|
|
188
|
+
path: string;
|
|
189
|
+
}>;
|
|
190
|
+
writeToClipboard(options: {
|
|
191
|
+
text?: string;
|
|
192
|
+
html?: string;
|
|
193
|
+
image?: string;
|
|
194
|
+
rtf?: string;
|
|
195
|
+
}): Promise<void>;
|
|
196
|
+
readFromClipboard(): Promise<{
|
|
197
|
+
text?: string;
|
|
198
|
+
html?: string;
|
|
199
|
+
rtf?: string;
|
|
200
|
+
hasImage: boolean;
|
|
201
|
+
}>;
|
|
202
|
+
clearClipboard(): Promise<void>;
|
|
203
|
+
openExternal(options: {
|
|
204
|
+
url: string;
|
|
205
|
+
}): Promise<void>;
|
|
206
|
+
showItemInFolder(options: {
|
|
207
|
+
path: string;
|
|
208
|
+
}): Promise<void>;
|
|
209
|
+
beep(): Promise<void>;
|
|
210
|
+
addListener(eventName: "trayClick", listenerFunc: (event: TrayClickEvent) => void): Promise<PluginListenerHandle>;
|
|
211
|
+
addListener(eventName: "trayDoubleClick", listenerFunc: (event: TrayClickEvent) => void): Promise<PluginListenerHandle>;
|
|
212
|
+
addListener(eventName: "trayRightClick", listenerFunc: (event: TrayClickEvent) => void): Promise<PluginListenerHandle>;
|
|
213
|
+
addListener(eventName: "trayMenuClick", listenerFunc: (event: TrayMenuClickEvent) => void): Promise<PluginListenerHandle>;
|
|
214
|
+
addListener(eventName: "shortcutPressed", listenerFunc: (event: GlobalShortcutEvent) => void): Promise<PluginListenerHandle>;
|
|
215
|
+
addListener(eventName: "notificationClick", listenerFunc: (event: NotificationEvent) => void): Promise<PluginListenerHandle>;
|
|
216
|
+
addListener(eventName: "notificationAction", listenerFunc: (event: NotificationEvent) => void): Promise<PluginListenerHandle>;
|
|
217
|
+
addListener(eventName: "notificationReply", listenerFunc: (event: NotificationEvent) => void): Promise<PluginListenerHandle>;
|
|
218
|
+
addListener(eventName: "windowFocus", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
219
|
+
addListener(eventName: "windowBlur", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
220
|
+
addListener(eventName: "windowMaximize", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
221
|
+
addListener(eventName: "windowUnmaximize", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
222
|
+
addListener(eventName: "windowMinimize", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
223
|
+
addListener(eventName: "windowRestore", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
224
|
+
addListener(eventName: "windowClose", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
225
|
+
addListener(eventName: "powerSuspend", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
226
|
+
addListener(eventName: "powerResume", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
227
|
+
addListener(eventName: "powerOnAC", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
228
|
+
addListener(eventName: "powerOnBattery", listenerFunc: () => void): Promise<PluginListenerHandle>;
|
|
229
|
+
removeAllListeners(): Promise<void>;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,cAAc,eAAe,CAAC;AAI9B,eAAO,MAAM,OAAO,eAElB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { WebPlugin } from "@capacitor/core";
|
|
2
|
+
import type { AutoLaunchOptions, GlobalShortcut, GlobalShortcutEvent, NotificationEvent, NotificationOptions, PowerMonitorState, TrayClickEvent, TrayMenuClickEvent, TrayMenuItem, TrayOptions, WindowBounds, WindowOptions } from "./definitions";
|
|
3
|
+
type DesktopEventData = TrayClickEvent | TrayMenuClickEvent | GlobalShortcutEvent | NotificationEvent | undefined;
|
|
4
|
+
export declare class DesktopWeb extends WebPlugin {
|
|
5
|
+
private pluginListeners;
|
|
6
|
+
createTray(_options: TrayOptions): Promise<void>;
|
|
7
|
+
updateTray(_options: Partial<TrayOptions>): Promise<void>;
|
|
8
|
+
destroyTray(): Promise<void>;
|
|
9
|
+
setTrayMenu(_options: {
|
|
10
|
+
menu: TrayMenuItem[];
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
registerShortcut(_options: GlobalShortcut): Promise<{
|
|
13
|
+
success: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
unregisterShortcut(_options: {
|
|
16
|
+
id: string;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
unregisterAllShortcuts(): Promise<void>;
|
|
19
|
+
isShortcutRegistered(_options: {
|
|
20
|
+
accelerator: string;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
registered: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
setAutoLaunch(_options: AutoLaunchOptions): Promise<void>;
|
|
25
|
+
getAutoLaunchStatus(): Promise<{
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
openAsHidden: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
setWindowOptions(_options: WindowOptions): Promise<void>;
|
|
30
|
+
getWindowBounds(): Promise<WindowBounds>;
|
|
31
|
+
setWindowBounds(_options: WindowBounds): Promise<void>;
|
|
32
|
+
minimizeWindow(): Promise<void>;
|
|
33
|
+
maximizeWindow(): Promise<void>;
|
|
34
|
+
unmaximizeWindow(): Promise<void>;
|
|
35
|
+
closeWindow(): Promise<void>;
|
|
36
|
+
showWindow(): Promise<void>;
|
|
37
|
+
hideWindow(): Promise<void>;
|
|
38
|
+
focusWindow(): Promise<void>;
|
|
39
|
+
isWindowMaximized(): Promise<{
|
|
40
|
+
maximized: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
isWindowMinimized(): Promise<{
|
|
43
|
+
minimized: boolean;
|
|
44
|
+
}>;
|
|
45
|
+
isWindowVisible(): Promise<{
|
|
46
|
+
visible: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
isWindowFocused(): Promise<{
|
|
49
|
+
focused: boolean;
|
|
50
|
+
}>;
|
|
51
|
+
setAlwaysOnTop(_options: {
|
|
52
|
+
flag: boolean;
|
|
53
|
+
}): Promise<void>;
|
|
54
|
+
setFullscreen(options: {
|
|
55
|
+
flag: boolean;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
setOpacity(_options: {
|
|
58
|
+
opacity: number;
|
|
59
|
+
}): Promise<void>;
|
|
60
|
+
showNotification(options: NotificationOptions): Promise<{
|
|
61
|
+
id: string;
|
|
62
|
+
shown: boolean;
|
|
63
|
+
error?: string;
|
|
64
|
+
}>;
|
|
65
|
+
closeNotification(_options: {
|
|
66
|
+
id: string;
|
|
67
|
+
}): Promise<void>;
|
|
68
|
+
getPowerState(): Promise<PowerMonitorState>;
|
|
69
|
+
quit(): Promise<void>;
|
|
70
|
+
relaunch(): Promise<void>;
|
|
71
|
+
getVersion(): Promise<{
|
|
72
|
+
version: string;
|
|
73
|
+
name: string;
|
|
74
|
+
runtime: string;
|
|
75
|
+
chrome: string;
|
|
76
|
+
node: string;
|
|
77
|
+
}>;
|
|
78
|
+
isPackaged(): Promise<{
|
|
79
|
+
packaged: boolean;
|
|
80
|
+
}>;
|
|
81
|
+
getPath(_options: {
|
|
82
|
+
name: string;
|
|
83
|
+
}): Promise<{
|
|
84
|
+
path: string;
|
|
85
|
+
}>;
|
|
86
|
+
writeToClipboard(options: {
|
|
87
|
+
text?: string;
|
|
88
|
+
html?: string;
|
|
89
|
+
}): Promise<void>;
|
|
90
|
+
readFromClipboard(): Promise<{
|
|
91
|
+
text?: string;
|
|
92
|
+
html?: string;
|
|
93
|
+
rtf?: string;
|
|
94
|
+
hasImage: boolean;
|
|
95
|
+
}>;
|
|
96
|
+
clearClipboard(): Promise<void>;
|
|
97
|
+
openExternal(options: {
|
|
98
|
+
url: string;
|
|
99
|
+
}): Promise<void>;
|
|
100
|
+
showItemInFolder(_options: {
|
|
101
|
+
path: string;
|
|
102
|
+
}): Promise<void>;
|
|
103
|
+
beep(): Promise<void>;
|
|
104
|
+
addListener(eventName: string, listenerFunc: (event: DesktopEventData) => void): Promise<{
|
|
105
|
+
remove: () => Promise<void>;
|
|
106
|
+
}>;
|
|
107
|
+
removeAllListeners(): Promise<void>;
|
|
108
|
+
protected notifyListeners(eventName: string, data: DesktopEventData): void;
|
|
109
|
+
}
|
|
110
|
+
export {};
|
|
111
|
+
//# sourceMappingURL=web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/web.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { WebPlugin } from "@capacitor/core";
|
|
2
|
+
// No-op for features unavailable on web; callers should check return values.
|
|
3
|
+
const webUnavailable = (_feature) => { };
|
|
4
|
+
export class DesktopWeb extends WebPlugin {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.pluginListeners = [];
|
|
8
|
+
}
|
|
9
|
+
// System Tray - Not available in browser
|
|
10
|
+
async createTray(_options) {
|
|
11
|
+
webUnavailable("System tray");
|
|
12
|
+
}
|
|
13
|
+
async updateTray(_options) {
|
|
14
|
+
webUnavailable("System tray");
|
|
15
|
+
}
|
|
16
|
+
async destroyTray() {
|
|
17
|
+
webUnavailable("System tray");
|
|
18
|
+
}
|
|
19
|
+
async setTrayMenu(_options) {
|
|
20
|
+
webUnavailable("System tray");
|
|
21
|
+
}
|
|
22
|
+
// Global Shortcuts - Not available in browser
|
|
23
|
+
async registerShortcut(_options) {
|
|
24
|
+
webUnavailable("Global shortcuts");
|
|
25
|
+
return { success: false };
|
|
26
|
+
}
|
|
27
|
+
async unregisterShortcut(_options) {
|
|
28
|
+
webUnavailable("Global shortcuts");
|
|
29
|
+
}
|
|
30
|
+
async unregisterAllShortcuts() {
|
|
31
|
+
webUnavailable("Global shortcuts");
|
|
32
|
+
}
|
|
33
|
+
async isShortcutRegistered(_options) {
|
|
34
|
+
return { registered: false };
|
|
35
|
+
}
|
|
36
|
+
// Auto Launch - Not available in browser
|
|
37
|
+
async setAutoLaunch(_options) {
|
|
38
|
+
webUnavailable("Auto launch");
|
|
39
|
+
}
|
|
40
|
+
async getAutoLaunchStatus() {
|
|
41
|
+
return { enabled: false, openAsHidden: false };
|
|
42
|
+
}
|
|
43
|
+
// Window Management - Limited in browser
|
|
44
|
+
async setWindowOptions(_options) {
|
|
45
|
+
webUnavailable("Window options");
|
|
46
|
+
}
|
|
47
|
+
async getWindowBounds() {
|
|
48
|
+
return {
|
|
49
|
+
x: window.screenX,
|
|
50
|
+
y: window.screenY,
|
|
51
|
+
width: window.outerWidth,
|
|
52
|
+
height: window.outerHeight,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async setWindowBounds(_options) {
|
|
56
|
+
webUnavailable("Setting window bounds");
|
|
57
|
+
}
|
|
58
|
+
async minimizeWindow() {
|
|
59
|
+
webUnavailable("Window minimize");
|
|
60
|
+
}
|
|
61
|
+
async maximizeWindow() {
|
|
62
|
+
webUnavailable("Window maximize");
|
|
63
|
+
}
|
|
64
|
+
async unmaximizeWindow() {
|
|
65
|
+
webUnavailable("Window unmaximize");
|
|
66
|
+
}
|
|
67
|
+
async closeWindow() {
|
|
68
|
+
window.close();
|
|
69
|
+
}
|
|
70
|
+
async showWindow() {
|
|
71
|
+
window.focus();
|
|
72
|
+
}
|
|
73
|
+
async hideWindow() {
|
|
74
|
+
webUnavailable("Window hide");
|
|
75
|
+
}
|
|
76
|
+
async focusWindow() {
|
|
77
|
+
window.focus();
|
|
78
|
+
}
|
|
79
|
+
async isWindowMaximized() {
|
|
80
|
+
return { maximized: false };
|
|
81
|
+
}
|
|
82
|
+
async isWindowMinimized() {
|
|
83
|
+
return { minimized: document.hidden };
|
|
84
|
+
}
|
|
85
|
+
async isWindowVisible() {
|
|
86
|
+
return { visible: !document.hidden };
|
|
87
|
+
}
|
|
88
|
+
async isWindowFocused() {
|
|
89
|
+
return { focused: document.hasFocus() };
|
|
90
|
+
}
|
|
91
|
+
async setAlwaysOnTop(_options) {
|
|
92
|
+
webUnavailable("Always on top");
|
|
93
|
+
}
|
|
94
|
+
async setFullscreen(options) {
|
|
95
|
+
options.flag
|
|
96
|
+
? document.documentElement.requestFullscreen()
|
|
97
|
+
: document.exitFullscreen();
|
|
98
|
+
}
|
|
99
|
+
async setOpacity(_options) {
|
|
100
|
+
webUnavailable("Window opacity");
|
|
101
|
+
}
|
|
102
|
+
// Notifications - Using Web Notification API
|
|
103
|
+
async showNotification(options) {
|
|
104
|
+
const id = `notification_${Date.now()}`;
|
|
105
|
+
if (!("Notification" in window)) {
|
|
106
|
+
return {
|
|
107
|
+
id,
|
|
108
|
+
shown: false,
|
|
109
|
+
error: "Notification API not available in this browser",
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (Notification.permission === "denied") {
|
|
113
|
+
return { id, shown: false, error: "Notification permission denied" };
|
|
114
|
+
}
|
|
115
|
+
if (Notification.permission !== "granted") {
|
|
116
|
+
const permission = await Notification.requestPermission();
|
|
117
|
+
if (permission !== "granted") {
|
|
118
|
+
return {
|
|
119
|
+
id,
|
|
120
|
+
shown: false,
|
|
121
|
+
error: "Notification permission not granted",
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const notification = new Notification(options.title, {
|
|
126
|
+
body: options.body,
|
|
127
|
+
icon: options.icon,
|
|
128
|
+
silent: options.silent,
|
|
129
|
+
});
|
|
130
|
+
notification.onclick = () => this.notifyListeners("notificationClick", {});
|
|
131
|
+
return { id, shown: true };
|
|
132
|
+
}
|
|
133
|
+
async closeNotification(_options) {
|
|
134
|
+
// Web Notification API doesn't provide a way to close notifications by ID.
|
|
135
|
+
// Notifications auto-close or the user dismisses them.
|
|
136
|
+
}
|
|
137
|
+
// Power Monitor
|
|
138
|
+
async getPowerState() {
|
|
139
|
+
const getBattery = navigator.getBattery;
|
|
140
|
+
if (getBattery) {
|
|
141
|
+
try {
|
|
142
|
+
const battery = await getBattery.call(navigator);
|
|
143
|
+
return {
|
|
144
|
+
onBattery: !battery.charging,
|
|
145
|
+
batteryLevel: battery.level * 100,
|
|
146
|
+
isCharging: battery.charging,
|
|
147
|
+
idleState: "active", // Idle detection not available on web
|
|
148
|
+
idleTime: 0,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
console.debug("[Desktop] Battery API access failed:", err);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
onBattery: false, // Unknown, defaulting to false
|
|
157
|
+
idleState: "unknown",
|
|
158
|
+
idleTime: 0,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// App
|
|
162
|
+
async quit() {
|
|
163
|
+
window.close();
|
|
164
|
+
}
|
|
165
|
+
async relaunch() {
|
|
166
|
+
window.location.reload();
|
|
167
|
+
}
|
|
168
|
+
async getVersion() {
|
|
169
|
+
// On web platform, version info is limited. Return actual browser info where available.
|
|
170
|
+
// Note: "version" and "name" would need to come from app config - returning "unknown" to indicate unavailability
|
|
171
|
+
return {
|
|
172
|
+
version: "unknown", // App version not available on web - would need to be injected at build time
|
|
173
|
+
name: "unknown", // App name not available on web - would need to be injected at build time
|
|
174
|
+
runtime: "N/A", // Not running in the desktop runtime
|
|
175
|
+
chrome: navigator.userAgent.match(/Chrome\/([0-9.]+)/)?.[1] ?? "unknown",
|
|
176
|
+
node: "N/A", // Not running in Node
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
async isPackaged() {
|
|
180
|
+
return { packaged: false };
|
|
181
|
+
}
|
|
182
|
+
async getPath(_options) {
|
|
183
|
+
throw new Error("File system paths are not available in browser environment");
|
|
184
|
+
}
|
|
185
|
+
// Clipboard
|
|
186
|
+
async writeToClipboard(options) {
|
|
187
|
+
if (options.text) {
|
|
188
|
+
await navigator.clipboard.writeText(options.text);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (options.html) {
|
|
192
|
+
await navigator.clipboard.write([
|
|
193
|
+
new ClipboardItem({
|
|
194
|
+
"text/html": new Blob([options.html], { type: "text/html" }),
|
|
195
|
+
}),
|
|
196
|
+
]);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async readFromClipboard() {
|
|
200
|
+
return { text: await navigator.clipboard.readText(), hasImage: false };
|
|
201
|
+
}
|
|
202
|
+
async clearClipboard() {
|
|
203
|
+
await navigator.clipboard.writeText("");
|
|
204
|
+
}
|
|
205
|
+
// Shell
|
|
206
|
+
async openExternal(options) {
|
|
207
|
+
window.open(options.url, "_blank");
|
|
208
|
+
}
|
|
209
|
+
async showItemInFolder(_options) {
|
|
210
|
+
webUnavailable("Show in folder");
|
|
211
|
+
}
|
|
212
|
+
async beep() {
|
|
213
|
+
const ctx = new AudioContext();
|
|
214
|
+
const osc = ctx.createOscillator();
|
|
215
|
+
const gain = ctx.createGain();
|
|
216
|
+
osc.connect(gain).connect(ctx.destination);
|
|
217
|
+
osc.frequency.value = 800;
|
|
218
|
+
osc.type = "sine";
|
|
219
|
+
gain.gain.setValueAtTime(0.3, ctx.currentTime);
|
|
220
|
+
gain.gain.exponentialRampToValueAtTime(0.01, ctx.currentTime + 0.1);
|
|
221
|
+
osc.start(ctx.currentTime);
|
|
222
|
+
osc.stop(ctx.currentTime + 0.1);
|
|
223
|
+
}
|
|
224
|
+
// Events
|
|
225
|
+
async addListener(eventName, listenerFunc) {
|
|
226
|
+
const entry = { eventName, callback: listenerFunc };
|
|
227
|
+
// Create and track window event listeners to avoid memory leaks
|
|
228
|
+
if (eventName === "windowFocus") {
|
|
229
|
+
entry.windowListener = () => listenerFunc(undefined);
|
|
230
|
+
window.addEventListener("focus", entry.windowListener);
|
|
231
|
+
}
|
|
232
|
+
else if (eventName === "windowBlur") {
|
|
233
|
+
entry.windowListener = () => listenerFunc(undefined);
|
|
234
|
+
window.addEventListener("blur", entry.windowListener);
|
|
235
|
+
}
|
|
236
|
+
this.pluginListeners.push(entry);
|
|
237
|
+
return {
|
|
238
|
+
remove: async () => {
|
|
239
|
+
const i = this.pluginListeners.indexOf(entry);
|
|
240
|
+
if (i >= 0) {
|
|
241
|
+
// Remove window event listener if it exists
|
|
242
|
+
if (entry.windowListener) {
|
|
243
|
+
if (entry.eventName === "windowFocus")
|
|
244
|
+
window.removeEventListener("focus", entry.windowListener);
|
|
245
|
+
else if (entry.eventName === "windowBlur")
|
|
246
|
+
window.removeEventListener("blur", entry.windowListener);
|
|
247
|
+
}
|
|
248
|
+
this.pluginListeners.splice(i, 1);
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
async removeAllListeners() {
|
|
254
|
+
// Clean up all window event listeners before clearing
|
|
255
|
+
for (const entry of this.pluginListeners) {
|
|
256
|
+
if (entry.windowListener) {
|
|
257
|
+
if (entry.eventName === "windowFocus")
|
|
258
|
+
window.removeEventListener("focus", entry.windowListener);
|
|
259
|
+
else if (entry.eventName === "windowBlur")
|
|
260
|
+
window.removeEventListener("blur", entry.windowListener);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
this.pluginListeners = [];
|
|
264
|
+
}
|
|
265
|
+
notifyListeners(eventName, data) {
|
|
266
|
+
this.pluginListeners
|
|
267
|
+
.filter((l) => l.eventName === eventName)
|
|
268
|
+
.forEach((l) => {
|
|
269
|
+
l.callback(data);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|