
Ask HN: What language/framework do you recommend for UI-heavy desktop apps? - fileeditview
To clarify what I am looking for:<p>A language&#x2F;framework to build a cross-platform (linux,windows,mac) desktop application which will feature many charts and graphs.<p>This is currently a hobby project so it could also be something more exotic. So far I had the following ideas:<p>- Qt: I am not too hyped because I would like to avoid C++ and Python. Also the licensing of Qt always confused me. If this project was to be sold at one point would I have to pay for licensing?<p>- Javascript&#x2F;Electron&#x2F;d3.js: This is my current approach. Big plus here is d3 is offering me all the charts&#x2F;graphs I can imagine for my app. Drawback is that Electron has a bad rep for being wasteful etc.<p>- Gtk: I recently saw that gtk even offers Javascript bindings.. maybe that would be an alternative? Seemed to be poorly documented at a first glance. It&#x27;s also not clear what gtk would bring to the table in terms of graphs and charts.<p>- Racket Scheme: This was a fun idea because playing around with Racket again would be lovely. I saw that some kind of UI is part of the standard library but I am doubtful if this is a serious option, especially considering the charts&#x2F;graphs.<p>What else could be worth checking out? Would love to get some unexpected recommendations!
======
jboynyc
Don't dismiss Racket too soon, I would say. The developer of ActivityLog2 has
been doing a lot to integrate charts and graphs into Racket GUI applications,
and the program itself ([https://github.com/alex-
hhh/ActivityLog2](https://github.com/alex-hhh/ActivityLog2)) is a good
showcase of that work. His blog is also worth a read ([https://alex-
hhh.github.io/index.html](https://alex-hhh.github.io/index.html)). Take a
look!

~~~
fileeditview
Thanks for mentioning this.. very interesting. I even had this project starred
on Github but did not remember it.. :)

I will give racket another look. Do you by any chance know some more real
world Racket applications?

~~~
soegaard
Check this example:

[https://dev.to/goober99/learn-racket-by-example-gui-
programm...](https://dev.to/goober99/learn-racket-by-example-gui-
programming-3epm)

~~~
fileeditview
Good thing I just checked the thread again. Thanks for the link!

------
davismwfl
Honestly the only one I have used successfully and the one I see most
professional companies choose is Qt. Yes you possible have to pay for a
license when you get to that point, but they work with small
companies/startups and the license fees are not crazy and it saves you tons of
time while making your app performant, portable and clean.

Gtk to me is just not worth the effort, it is a mess and documentation is
horrid. We tried Gtk on one project I worked on a while back and it was
abandoned because of the struggles we had to go through just to make it work
as expected. While Qt isn't a panacea by any means, it is lightyears better
than Gtk. I know I am pissing off someone that knows Gtk well and can't see
why it is hard to use, but coming from the perspective of I need to get an app
running and not struggle through a framework, Gtk just doesn't cut it.

And especially if you are talking about graphing, performance etc, Qt will be
the best of them. While you are on the open source Qt you get community
support and lots of help/examples. And if you do reach the point you are
paying for a license then at least with Qt you will get quick support and
problem resolution not based on a communities best efforts which may not align
with your companies issues.

If I didn't mind some pain in framework maturity, I'd probably try Flutter.
Flutter desktop is in early previews IIRC, but it (at least for mobile) is
documented much better and is easier to use than Gtk IMO. Flutter does work
pretty well for mobile, but that's the only thing I've used it for, so no clue
on what the desktop preview even looks like.

~~~
fileeditview
Thanks for your input. It coincides with my impression about Qt and Gtk. Years
ago I made an application (for myself) with Qt and C++ and it was kind of a
pleasant experience. I was only reluctant because I would like to not use C++
in my free time.. I will however consider this again and maybe see what
bindings exist for Qt.

I don't think Flutter is an option for me. I would then rather go the
JS/Electron route. It just makes no sense to learn Dart to me.. the only use
for it seems Flutter.

~~~
davismwfl
Yea, I only mentioned flutter because it is there and is growing, but if I
wanted to ship a desktop app quickly to get moving, it'd be Qt for me. I
personally love C/C++, but understand not everyone does, but for installed
desktop apps, C/C++ still just makes the most sense to me.

I know Wireshark moved off Gtk to Qt for a variety of reasons, but some of
their key points from what I remember was Gtk was falling further behind on
issues, current trends and platform support whereas Qt has really kept up and
keeps evolving with the market.

Good luck with whatever you choose.

------
newfeatureok
Use Electron. If your app takes off then you can reevaluate and re-write as
necessary.

~~~
tnolet
Correct. Seems to work fine for Slack and Notion among others.

------
baspey
I'm surprised that nobody talks about wxWidgets!

[https://www.wxwidgets.org/](https://www.wxwidgets.org/)

It's what I use for my app "Coollector Movie Database" and I'm very happy with
it.

Ok, it's C++, but you get a super fast app, and there's no licensing issue
contrary to Qt (it's completely free even for commercial apps). I recommend!

------
lotwxyz
The idea of creating cross platform desktop applications is why I created
_Linux on the Web_. First of all, it is merely a website, so there is no
concept of downloading anything, and needing to give system-level permissions.
But it is a website that looks, acts, and most importantly feels like any
other desktop environment in the world.

I have been working on this, nearly full-time, in one form or another, since
2011, ie, near the beginning of the Chrome/v8/nodejs-led webapp "blastoff"
point. You can give the desktop environment a try at
[https://lotw.xyz/desk.os](https://lotw.xyz/desk.os) (pay attention to the
bottom-left corner of the screen).

My main audience at the present time is people just like yourself, so
hopefully we can keep in touch (I'm Dennis). There are ways to communicate
built into the interface.

------
okareaman
I'm still using Meld since I switched to Windows from Linux. It's not a quite
a native UI but close enough. I was surprised to find it is written in Python.
It uses GTK for UI. It's worth looking into. I know I am.

~~~
fileeditview
Do you mean Meld the merge and diff tool? I do not know any other Meld and
could not Google anything related to UI programming..

Maybe you misread my question? I was asking for UI frameworks to develop
applications with.. such as GTK, Qt etc.

~~~
okareaman
Yes, I meant Meld the merge and diff tool. It uses the GTK sdk to produce a
pretty nice UI (although their UX is a little clunky)
[https://meldmerge.org/](https://meldmerge.org/)

