diff --git a/.gitignore b/.gitignore index 298eb4d..40b878d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -node_modules/ -@girs/ +node_modules/ \ No newline at end of file diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..10edede --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +nodejs system diff --git a/.vscode/settings.json b/.vscode/settings.json index 8c8cc3a..91bc4f5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,28 @@ { - "typescript.tsdk": "node_modules/typescript/lib", + "biome.enabled": true, + "editor.formatOnSave": true, "explorer.fileNesting.patterns": { - "flake.nix": "*.nix, flake.lock, .envrc", + "flake.nix": "*.nix, flake.lock, .envrc, .tool-versions", "package.json": " pnpm-lock.yaml, tsconfig.json, .gitignore" }, "files.exclude": { - ".direnv": true, - "node_modules": true, - "@girs": true - } -} + ".direnv": true + // "@girs": true, + // "node_modules": true + }, + "terminal.integrated.defaultProfile.linux": "fish-fhs", + "terminal.integrated.profiles.linux": { + "fish-fhs": { + "args": [ + "--user", + "--pty", + "--quiet", + "--same-dir", + "--service-type=exec", + "fish" + ], + "path": "systemd-run" + } + }, + "typescript.tsdk": "./node_modules/typescript/lib" +} \ No newline at end of file diff --git a/@girs/appmenuglibtranslator-24.02.d.ts b/@girs/appmenuglibtranslator-24.02.d.ts new file mode 100644 index 0000000..714c66c --- /dev/null +++ b/@girs/appmenuglibtranslator-24.02.d.ts @@ -0,0 +1,83 @@ +/// +/// +/// +/// + +/** + * Type Definitions for Gjs (https://gjs.guide/) + * + * These type definitions are automatically generated, do not edit them by hand. + * If you found a bug fix it in `ts-for-gir` or create a bug report on https://github.com/gjsify/ts-for-gir + * + * The based EJS template file is used for the generated .d.ts file of each GIR module like Gtk-4.0, GObject-2.0, ... + */ + +declare module 'gi://AppmenuGLibTranslator?version=24.02' { + // Module dependencies + import type Gio from 'gi://Gio?version=2.0'; + import type GObject from 'gi://GObject?version=2.0'; + import type GLib from 'gi://GLib?version=2.0'; + import type GModule from 'gi://GModule?version=2.0'; + + export namespace AppmenuGLibTranslator { + /** + * AppmenuGLibTranslator-24.02 + */ + + namespace Importer { + // Constructor properties interface + + interface ConstructorProps extends GObject.Object.ConstructorProps { + action_group: Gio.ActionGroup; + actionGroup: Gio.ActionGroup; + bus_name: string; + busName: string; + model: Gio.MenuModel; + object_path: string; + objectPath: string; + } + } + + class Importer extends GObject.Object { + static $gtype: GObject.GType; + + // Properties + + get action_group(): Gio.ActionGroup; + get actionGroup(): Gio.ActionGroup; + set bus_name(val: string); + set busName(val: string); + get model(): Gio.MenuModel; + set object_path(val: string); + set objectPath(val: string); + + // Constructors + + constructor(properties?: Partial, ...args: any[]); + + _init(...args: any[]): void; + + static ['new'](bus_name: string, object_path: string): Importer; + } + + type ImporterClass = typeof Importer; + /** + * Name of the imported GIR library + * `see` https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L188 + */ + const __name__: string; + /** + * Version of the imported GIR library + * `see` https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L189 + */ + const __version__: string; + } + + export default AppmenuGLibTranslator; +} + +declare module 'gi://AppmenuGLibTranslator' { + import AppmenuGLibTranslator2402 from 'gi://AppmenuGLibTranslator?version=24.02'; + export default AppmenuGLibTranslator2402; +} +// END diff --git a/@girs/astal-3.0.d.ts b/@girs/astal-3.0.d.ts new file mode 100644 index 0000000..bb2c4b6 --- /dev/null +++ b/@girs/astal-3.0.d.ts @@ -0,0 +1,2248 @@ +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// + +/** + * Type Definitions for Gjs (https://gjs.guide/) + * + * These type definitions are automatically generated, do not edit them by hand. + * If you found a bug fix it in `ts-for-gir` or create a bug report on https://github.com/gjsify/ts-for-gir + * + * The based EJS template file is used for the generated .d.ts file of each GIR module like Gtk-4.0, GObject-2.0, ... + */ + +declare module 'gi://Astal?version=3.0' { + // Module dependencies + import type AstalIO from 'gi://AstalIO?version=0.1'; + import type GLib from 'gi://GLib?version=2.0'; + import type GObject from 'gi://GObject?version=2.0'; + import type Gio from 'gi://Gio?version=2.0'; + import type GModule from 'gi://GModule?version=2.0'; + import type Gdk from 'gi://Gdk?version=3.0'; + import type cairo from 'cairo'; + import type Pango from 'gi://Pango?version=1.0'; + import type HarfBuzz from 'gi://HarfBuzz?version=0.0'; + import type freetype2 from 'gi://freetype2?version=2.0'; + import type GdkPixbuf from 'gi://GdkPixbuf?version=2.0'; + import type Gtk from 'gi://Gtk?version=3.0'; + import type xlib from 'gi://xlib?version=2.0'; + import type Atk from 'gi://Atk?version=1.0'; + + export namespace Astal { + /** + * Astal-3.0 + */ + + export namespace MouseButton { + export const $gtype: GObject.GType; + } + + enum MouseButton { + PRIMARY, + MIDDLE, + SECONDARY, + BACK, + FORWARD, + } + + export namespace Exclusivity { + export const $gtype: GObject.GType; + } + + enum Exclusivity { + NORMAL, + /** + * Request the compositor to allocate space for this window. + */ + EXCLUSIVE, + /** + * Request the compositor to stack layers on top of each other. + */ + IGNORE, + } + + export namespace Layer { + export const $gtype: GObject.GType; + } + + enum Layer { + BACKGROUND, + BOTTOM, + TOP, + OVERLAY, + } + + export namespace Keymode { + export const $gtype: GObject.GType; + } + + enum Keymode { + /** + * Window should not receive keyboard events. + */ + NONE, + /** + * Window should have exclusive focus if it is on the top or overlay layer. + */ + EXCLUSIVE, + /** + * Focus and Unfocues the window as needed. + */ + ON_DEMAND, + } + const MAJOR_VERSION: number; + const MINOR_VERSION: number; + const MICRO_VERSION: number; + const VERSION: string; + function widget_set_css(widget: Gtk.Widget, css: string): void; + function widget_get_css(widget: Gtk.Widget): string; + function widget_set_class_names(widget: Gtk.Widget, class_names: string[]): void; + function widget_get_class_names(widget: Gtk.Widget): string[]; + function widget_toggle_class_name(widget: Gtk.Widget, class_name: string, condition: boolean): void; + function widget_set_cursor(widget: Gtk.Widget, cursor: string): void; + function widget_get_cursor(widget: Gtk.Widget): string; + function widget_set_click_through(widget: Gtk.Widget, click_through: boolean): void; + function widget_get_click_through(widget: Gtk.Widget): boolean; + + export namespace WindowAnchor { + export const $gtype: GObject.GType; + } + + enum WindowAnchor { + NONE, + TOP, + RIGHT, + LEFT, + BOTTOM, + } + namespace Box { + // Constructor properties interface + + interface ConstructorProps extends Gtk.Box.ConstructorProps { + vertical: boolean; + children: Gtk.Widget[]; + child: Gtk.Widget; + } + } + + class Box extends Gtk.Box { + static $gtype: GObject.GType; + + // Properties + + /** + * Corresponds to [property`Gtk`.Orientable :orientation]. + */ + get vertical(): boolean; + set vertical(val: boolean); + get children(): Gtk.Widget[]; + set children(val: Gtk.Widget[]); + get child(): Gtk.Widget; + set child(val: Gtk.Widget); + + // Constructors + + constructor(properties?: Partial, ...args: any[]); + + _init(...args: any[]): void; + + static ['new'](vertical: boolean, children: Gtk.Widget[]): Box; + // Conflicted with Gtk.Box.new + + static ['new'](...args: never[]): any; + + // Methods + + get_vertical(): boolean; + set_vertical(value: boolean): void; + get_children(): Gtk.Widget[]; + set_children(value: Gtk.Widget[]): void; + get_child(): Gtk.Widget; + set_child(value: Gtk.Widget): void; + } + + namespace Button { + // Signal callback interfaces + + interface Hover { + (event: HoverEvent): void; + } + + interface HoverLost { + (event: HoverEvent): void; + } + + interface Click { + (event: ClickEvent): void; + } + + interface ClickRelease { + (event: ClickEvent): void; + } + + interface Scroll { + (event: ScrollEvent): void; + } + + // Constructor properties interface + + interface ConstructorProps extends Gtk.Button.ConstructorProps {} + } + + /** + * This button has no extra functionality on top if its base [class`Gtk`.Button] class. + * The purpose of this Button subclass is to have a destructable struct as the argument in GJS event handlers. + */ + class Button extends Gtk.Button { + static $gtype: GObject.GType