this past week has been a weird experiment of seeing how far i can take a tiny xplat gtk app written in typescript.

here's how it looks. i must say, gtk on mac and windows is *damn* pretty. untweaked. kudos, gtk devs. ❤️

but ultimately, i ported to c# and wpf on windows, even though it's hideous.

gtk + gjs on windows took me *days* to get building. i had to build gjs from source, fiddle with msys2 packages, and generally try to grok the mismatch.

this silly little app kept locking up the ui, somehow. every time i thought i had it fixed, the ui locked up somewhere else. gjs issue, i think.

yes, i know python + gtk plays nicely on windows. i don't know python well enough to choose it over typescript for this. however, i do know c#. at a certain point, it was less effort to build (and, hopefully, maintain) a braindead c# + wpf port.

i'm grateful gtk works well on mac; i'd choose qt or slint or flutter or something over maintaining 2 ports. but i agree with @nikitonsky - we've lost 2/3 of native:

https://tonsky.me/blog/fall-of-native/

the only platform that isn't a trainwreck is linux. qt is good. gtk is good. the devs care, and it shows.

Claude is an Electron App because we’ve lost native

Article argues that Claude is not an Electron app not because LLMs can’t do it, but because there are no advantages left for native

tonsky.me

we all know how macos and swift ui are broken. i was *shocked* by how broken wpf is in 2026. dotnet 9 gives you native light/dark theming... except for the titlebar? that still has to be custom. oh, and the default about dialog, too.

wat.

i know there's winui3 and maui and rnwin and... whatever. but they have their own problems and the fact that microsoft has 4 or 5 gui frameworks in 2026 and not a single one of them is blessed as the future of windows app dev is psychotic. so my windows users get the most boring thing i can manage.
regardless which of these "native" toolkits you choose on windows, the widgets are always flat, sharp rectangles with no contrast partly blind people like me can't see anyway. if microsoft can't do basic #a11y, i'm forced to lean in. you get what you get, windows people. sorry.

but mac gets gtk. shout out the #gtk and #adwaita devs. ❤️

gtk on macos isn't just pretty... it's *prettier and more consistent* than native macos tooling, whatever "native" macos means in 2026.

the gtk app looks more native than 7/9 mac apps i had running when i took that screenshot. here's why.

@deobald been wondering if I should commit to just trying out gtk for cross platform desktop. until recently, I was more in the camp of looking for solutions that make use of the underlying design language + apis (e.g. wxWidgets), but that's slowly changing after realizing how much Niki's post resonated with me and the steady degradation of macOS.

your post is helpful to know that gtk on macOS is Actually Nice.

@deobald disclaimer is that I personally don't really care about the gtk story on Windows. I kind of just accept that doing anything on Windows will be a struggle and I'm totally unwilling to lean into a Windows-specific stack 😅

@andrew_chou typescript is definitely an odd choice, on my part. there's plenty of gtk apps that work beautifully on windows: gimp, inkscape, etc.

those things are also infinitely more complex than anything i'd ever build. :)

gtk with c, c++, or python will be a solid experience even on windows, i think.

@deobald Yeah I was referring more to the dev experience on Windows than the actual outcomes. I also would start with gjs and TypeScript so your posts were very applicable in that case 😄

@andrew_chou yeah, gjs on windows was quite a hassle to get up and running. it's *very* possible i was doing something wrong. i haven't been a real programmer for over a decade, and i haven't built desktop apps since 2008.

still, i wouldn't recommend typescript if you're hoping for a quick and easy windows build.

@andrew_chou worth noting that i was building spidermonkey 128esr not 140esr ... maybe the latter fixes the bug(s) that were causing my ui freezes, but i'd already burnt two days on it so i gave up. if you attempt ts on gtk on windows, grab the latest and greatest instead of old and stable, i think.
@deobald @andrew_chou would be nice if you had a writeup or something about GTK+GJS on windows and macOS. perhaps we could try improve GJS on windows???

@vixalientoots @andrew_chou i could certainly try but i’m definitely the stupidest person to be talking about the space. :)

i do plan to write up this silly little experiment, though. i’ll definitely talk about the gjs + gtk on windows bit.

@deobald @andrew_chou please do, it would be super helpful!
@deobald This is such an underrated problem. Native Windows widgets have been an accessibility nightmare for years. For partially sighted users, the lack of proper high-contrast support means they're forced to use third-party overlays or browser-based alternatives where accessibility is actually better. The browser is ironically becoming the most accessible platform. #a11y #accessibility #Windows
@deobald what's your opinion on wxWidgets? I have used a program (TreeSheets) on Win, Mac and Linux and it worked well on all three.

@samebchase i think wxwidgets is nice. the problem, in my case, is a mix of things:

* i want it to look nice or native or both
* wxwidgets still looks kind of dated, as far as i can tell
* i have platform deps: libsecret (or equivalent), http, a pdf viewer, an image renderer, etc.
* i would /like/ to keep this code in typescript ... partly because it's well-known and partly because i'd like to get comfortable with it

that said, it does have ruby bindings. if i get tired of maintaining a wpf port of my gtk app... it's a real option, i suppose.

@samebchase i’ve been thinking about this problem a lot (and not just this week). the line any toolkit or library or framework needs to tow is between the ui on one hand and the platform on the other.

going all-in on something like flutter is basically saying “all your platform are belong to flutter” where one eschews control for platform agnosticism and widgets that aren’t widgets at all. in a world where programmers pride themselves on min/zero deps, flutter is the fuck-it option: depend on a massive pile of libraries and abstractions and hope google never rips it away from you.

this makes *some* sense on mobile where ios and android and {future-mobile-os} aren’t interestingly different.

but the desktop is a cluster. it’s still reflective of the 80s and 90s when its design emerged. if macosx hadn’t happened, there would be 3 very different targets to hit. now there’s effectively two. but windows is a doozy.

it gets worse as win/mac rot — how long until users can only install “apps” from a store?