Skip to content

Gnim

Library which brings JSX and reactivity to GNOME JavaScript.

If you are not already familiar with GJS and GObject, you should read gjs.guide first.

This library provides:

Obligatory Counter Example

tsx
function Counter() {
  const [counter, setCounter] = createState(0)

  function increment() {
    setCounter((v) => v + 1)
  }

  return (
    <Gtk.Box spacing={8}>
      <Gtk.Label label={counter((c) => c.toString())} />
      <Gtk.Button onClicked={increment}>Increment</Gtk.Button>
    </Gtk.Box>
  )
}

Templates