Skip to content

gjsify/ts-for-gir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2,183 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TS for GIR

TypeScript type definition generator for GObject introspection GIR files

ts-for-gir generates accurate TypeScript definitions from GObject Introspection for GJS projects β€” strong typing, IDE jump-to-definition, autocompletion across the whole GNOME stack.

πŸ“– Project page on the gjsify website: gjsify.github.io/gjsify/projects/ts-for-gir β€” install paths, quickstart, generator usage, links to the related Patterns docs.

Browse the full TypeScript API Documentation for GLib, GTK, GStreamer, and more.

Quick Start

gjsify dlx @ts-for-gir/cli create my-app   # no install, no Node.js
# or
npx @ts-for-gir/cli create my-app          # via npm

Pick a template interactively, or pass --template <id>:

Template Best for
types-gjsify Node-free GJS app β€” all dev scripts (install, build, run, format) routed through gjsify
types-npm Single-package, types from @girs/* NPM, esbuild + node
types-locally Generate types into ./@types/ (no @girs/* dep)
types-workspace npm workspace with @girs/* as locally-generated workspace packages
cd my-app && npm start    # or `gjsify run start` for types-gjsify

Installation

GJS β€” no Node.js required

curl -fsSL https://raw.githubusercontent.com/gjsify/ts-for-gir/main/install.js -o /tmp/install.js
gjs -m /tmp/install.js && rm /tmp/install.js

Installs to ~/.local/bin/. Update later with ts-for-gir self-update. Powered by GJSify.

Alternative β€” if you already have the gjsify CLI installed: gjsify dlx @ts-for-gir/cli <args> (npx-style, no install) or gjsify install -g @ts-for-gir/cli (managed global).

Node.js

npx @ts-for-gir/cli --help
# or globally:
npm install -g @ts-for-gir/cli

CLI Usage

ts-for-gir generate Gtk-4.0                          # generate types for a single module
ts-for-gir generate Gtk-4.0 --reporter               # with diagnostics
ts-for-gir analyze -f ./ts-for-gir-report.json       # inspect the report
ts-for-gir --help                                    # all commands

See the CLI documentation for advanced options.

Pre-generated NPM Packages

If you just want the types without generating them yourself:

npm install @girs/gjs @girs/gtk-4.0
import "@girs/gjs";
import "@girs/gjs/dom";
import "@girs/gtk-4.0";

import Gtk from "gi://Gtk?version=4.0";

const button = new Gtk.Button();

All packages are listed at gjsify/types. Missing a module? Open an issue.

Showcase

GNOME Applications

GNOME Shell Extensions

Example Projects

Looking for a starting point? These example projects demonstrate how to use the TypeScript definitions with various bundlers:

More examples with screenshots and descriptions can be found in the Examples directory. For information on using the examples with different CLI options, refer to the CLI documentation.

Project Structure

ts-for-gir consists of several packages:

Submodules

This repo contains Git submodules for pre-generated types and documentation:

  • types-dev (branch dev) β€” used during local development. Scripts write generated packages here.
  • types-release (branch main) β€” updated by the release workflow on tags.
  • docs (branch main) β€” generated HTML documentation, deployed to gjsify.github.io/docs.

Useful scripts:

gjsify run build:types          # regenerate into ./types-dev
gjsify run build:types:release  # regenerate into ./types-release
gjsify run build:doc            # build HTML docs into ./docs

Further Reading

About

TypeScript type definition generator for GObject introspection interfaces

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors