Gnim
Library that brings JSX, reactivity and type-safety to GNOME JavaScript.
- TypeScript support for generating GObject Introspection type annotations
- JSX and reactivity for both Gtk Applications and Gnome extensions
- GObject decorators for a convenient way for subclassing GObjects
- DBus decorators for a implementing DBus services and proxies
Obligatory Counter Example
tsx
function Counter() {
const [count, setCount] = createState(0)
function increment() {
setCount((v) => v + 1)
}
effect(() => {
console.log("count is", count())
})
return (
<Gtk.Box spacing={8}>
<Gtk.Label label={count((c) => c.toString())} />
<Gtk.Button onClicked={increment}>Increment</Gtk.Button>
</Gtk.Box>
)
}