UNPKG

@girs/gnome-shell

Version:

GJS TypeScript type definitions for GNOME Shell Extensions

96 lines (76 loc) 2.91 kB
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/extensionSystem.js import type Gio from '@girs/gio-2.0'; import * as Signals from '../misc/signals.js'; import type { ExtensionState, ExtensionType } from '../misc/extensionUtils.js'; import type { Extension } from '../extensions/extension.js'; /** The Metadata Object for Extensions * * This is different from the one in extension.js because it encodes the raw * metadata loaded directly from metadata.json * * @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/extensionSystem.js#L400 * @version 46 */ interface ExtensionMetadata extends Record<string, any> { // GNOME Shell checks these properties readonly uuid: string; readonly name: string; readonly description: string; readonly 'shell-version': readonly string[]; } /** * * * @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/misc/extensionUtils.js#L30 * @version 46 */ export interface ExtensionObject { readonly metadata: ExtensionMetadata; readonly uuid: string; readonly type: ExtensionType; readonly dir: Gio.File; readonly path: string | null; readonly error: string; readonly hasPrefs: boolean; readonly hasUpdate: boolean; readonly canChange: boolean; readonly sessionModes: readonly string[]; readonly state?: ExtensionState; readonly stateObj?: Extension; } /** * @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/dbusServices/extensions/extensionsService.js#L15 * @version 46 */ export namespace ExtensionManager { interface SignalMap { readonly 'extension-state-changed': [extension: ExtensionObject]; } /** * * @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/data/dbus-interfaces/org.gnome.Shell.Extensions.xml#L234 * @version 46 */ interface OpenExtensionPrefsOptions { modal?: boolean; } } /** * @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/extensionSystem.js#L29 * @version 46 */ export class ExtensionManager<S extends Signals.SignalMap<S> = ExtensionManager.SignalMap> extends Signals.EventEmitter<S> { init(): void; get updatesSupported(): boolean; lookup(uuid: string): ExtensionObject; getUuids(): readonly string[]; enableExtension(uuid: string): boolean; disableExtension(uuid: string): boolean; openExtensionPrefs(uuid: string, parentWindow: string, options: ExtensionManager.OpenExtensionPrefsOptions): boolean; notifyExtensionUpdate(uuid: string): void; logExtensionError(uuid: string, error: unknown): void; createExtensionObject(uuid: string, dir: Gio.File, type: ExtensionType): void; loadExtension(extension: ExtensionObject): Promise<void>; unloadExtension(extension: ExtensionObject): Promise<boolean>; reloadExtension(oldExtension: ExtensionObject): Promise<void>; }