Making a GTK application in Haskell, part 1
Vosporos
147 points
39 comments
October 05, 2026
Related Discussions
Found 5 related stories in 84.6ms across 8,581 title embeddings via pgvector HNSW
- Turbo Haskell simonmic · 16 pts · September 30, 2026 · 53% similar
- Turbo Haskell pjmlp · 50 pts · October 01, 2026 · 52% similar
- Turbo Haskell carbolymer · 11 pts · September 30, 2026 · 52% similar
- Show HN: I built a native app for coding agents with Rust and GPUI 0x142857 · 22 pts · August 16, 2026 · 50% similar
- Develop Cross-Platform CLI and GUI Tools with Tcl/Tk aryonoco · 86 pts · August 31, 2026 · 48% similar
Discussion Highlights (7 comments)
seba_dos1
Replace `backdrop-filter` on `.backdrop::after` with `filter` on `.backdrop picture` for a free scrolling performance boost.
birchcove
i've been writing Haskell GUIs for a few years and mostly stick to react-banana or reflex because wiring up gtk-gi signals manually gets messy fast. The Elm architecture pattern here looks clean on paper but I'm curious how you handle async events from the widget tree without ending up in callback hell. Did you end up wrapping all GI callbacks in a channel that feeds into your update loop?
drnick1
Just keep in mind that some people like me avoid Haskell and the huge package mess it causes on Linux. Pandoc is infamous for that. Just stick to C++.
beanjuiceII
bro takes 2 years to make a todo list
pluc
> import GI.Awd qualified as Adw please tell me that's a typo
shevy-java
Are people still using gtk? I started to learn it back then via ruby-gtk2. It was not the best experience but I learned several key things pertaining to widgets and the UI. Then came gtk3; it was in some ways worse than GTK2, but it also brought a few improvements such as the partial CSS support. I always miss that when I use e. g. wxwidget. Then came GTK4 though and things changed. Tons of old things broke or no longer worked. Simple things such as main_window_widget.move(0, 0) for top-left positioning (I added an alias to this, .top_left in ruby and that worked nicely); there are work-arounds to get the old behaviour, but this is just one example of so many more things that were eliminated. GTK4 is a GNOMEy-toolkit and GTK5 will be even worse since it will be wayland-only. "Interacting" with the GNOMEy-GTK devs is a total waste of time and I am hardly the only one who had that experience. For GNOMEys it may be a useful platform, but GTK no longer is a general toolkit really, despite claims by the current GTK devs otherwise. Why would we non-GNOMEys want to keep GTK on life support? There really needs to be a toolkit that can work in a much more de-centralized way. Sadly I also don't have a good idea here, since funding is an issue and GUIs seem to have taken a huge hit ever since the world wide web became dominating.
Koshkin
Is a widget a monad? Anyway, the examples in this tutorial are another proof that Haskell is the best imperative language !