cd /news/developer-tools/v0-1-0-0-of-ghcup-gtk-released · home topics developer-tools article
[ARTICLE · art-132816] src=discourse.haskell.org ↗ pub= topic=developer-tools verified=true sentiment=· neutral

V0.1.0.0 of ghcup-gtk released

A Haskell developer released version 0.1.0.0 of gi-gtk4-declarative, a fork of the gi-gtk-declarative library updated for GTK4 and Adwaita with assistance from Anthropic's Claude, published on GitHub under the handle enzuru. The library brings declarative GTK widget construction to Haskell, which the developer says also makes unit testing easier, and is being used to build a spreadsheet application that uses GNU Guile Scheme instead of spreadsheet formulas. The developer is seeking additional applications to adopt the library to improve its quality and offered to submit pull requests updating them.

read1 min views1 publishedSep 17, 2026

Hey there, I am a relatively new Haskell user who registered just for this thread.

I’ve taken the old gi-gtk-declarative library, and working with Claude, updated it for GTK4 + Adwaita: GitHub - enzuru/gi-gtk4-declarative: Declarative GTK4 programming in Haskell · GitHub

The original gi-gtk-declarative library allowed for a declarative Haskell way to build GTK3 applications, as opposed to the imperative way seen in most other languages, documentation available here: gi-gtk-declarative

I’m using it to build a spreadsheet application, where instead of spreadsheet language you can use GNU Guile Scheme.

I’m looking for more applications to use this updated library so that it can improve in quality. If you’d be interested, I could write a PR trying to update your application to use it. You don’t need to accept the PR, but perhaps you might like it better.

Now I can write GTK widgets declaratively like:

cellLabelWidget :: GridHandlers -> CellDraw -> Widget GridEvent
cellLabelWidget handlers drawn = widget Gtk.Label
  [ #hexpand := True
  , #xalign := if cellNumeric drawn then 1.0 else 0.0
  , #ellipsize := Pango.EllipsizeModeEnd
  , #singleLineMode := True
  , #label := cellLabel drawn
  , #name := T.pack (refName (cellRef drawn))
  , #hasTooltip := not (T.null (cellTooltip drawn))
  , #tooltipText := cellTooltip drawn
  , classes (cellStyles drawn)
  , onClickPressed (\presses _ _ -> Pressed (cellRef drawn) presses)
  , afterCreated (onCellBuilt handlers)
  ]

This also makes it much easier to write unit tests.

── more in #developer-tools 4 stories · sorted by recency
── more on @gi-gtk4-declarative 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/v0-1-0-0-of-ghcup-gt…] indexed:0 read:1min 2026-09-17 ·