10 ms·
The stable options for native cross-platform GUI are: 1. Sciter - Languages: C++/Python/Go/Rust/Pascal (optional: HTML/CSS/tiscript) - Development time: fast
by UnnoTed 6y ago
The stable options for native cross-platform GUI are:
1. Sciter
- Languages: C++/Python/Go/Rust/Pascal (optional: HTML/CSS/tiscript)
- Development time: fast
- Resource usage: light (space and performance)
- Visual customization: easy, doesn't use native widgets.
2. Qt
- Languages: C++/Python (optional: CSS/JS/QML)
- Development time: slow
- Resource usage: quite heavy (space), but well performant
- Visual customization: QtWidgets: hard, QML: easy, doesn't use native widgets.
3. WxWidgets
- Languages: C++/Python
- Development time: slow
- Resource usage: light (space and performance)
- Visual customization: hard, uses native widgets.
4. Lazarus
- Languages: Pascal
- Development time: slow
- Resource usage: light (space and performance)
- Visual customization: hard, uses native widgets.
[1]: https://sciter.com/ https://sciter.com/ - https://quark.sciter.com/ https://quark.sciter.com/
[2]: https://www.qt.io/ https://www.qt.io/
[3]: https://www.wxwidgets.org/ https://www.wxwidgets.org/
[4]: https://www.lazarus-ide.org/ https://www.lazarus-ide.org/
- pkphilip 6y agoI am not sure what you mean when you say that the development time on Lazarus is slow. I would actually say that it is perhaps the fastest in the list.
- mamcx 6y agoTrue. Lazarus/Delphi are the "APEX predators" for UI building. Their only caveat is their lack of resources (Lazarus) and weird costly licensing (Delphi).
- pkphilip 6y agoYes, the Delphi licensing cost is horrible. However, if you are using Lazarus you don't need to use Delphi at all. The lack of sufficient developers who are familiar with Lazarus/Freepascal is a problem though. But again, this is a chicken and egg type of issue. Getting up to speed in Lazarus does not take very long though because the IDE itself guides a person through in the components and you can clearly see the properties and components they have etc. Compared to the challenge of wrangling many of these cross-platform frameworks to develop a desktop, it is a piece of cake in Lazarus. Sadly, what keeps Lazarus back is the fact that most people aren't even aware that it exists and a perceived notion that it is not a cool/capable framework.
- UnnoTed 6y agoLazarus allows you to design the UI quickly, but theres a lack of third party libraries when compared to the mainstream programming languages. 1.1k https://github.com/topics/pascal https://github.com/topics/pascal 27k https://github.com/topics/cpp https://github.com/topics/cpp 161k https://github.com/topics/python https://github.com/topics/python
- pkphilip 6y agoLazarus already comes with tonnes of components (over 200) and lots of libraries but yes, it is still possible that you want to access some functionality which is not provided natively by the built-in components. But then, you may not.
- Lammy 6y agoDoes SWT count as stable? Its website looks identical to when I used it (and liked it!) 10+ years ago, so I'd ray probably so :) https://www.eclipse.org/swt/widgets/ https://www.eclipse.org/swt/widgets/
- billfruit 6y agoOne another viable option may be java with JavaFX.
- billfruit 6y agoPerhaps Xamarin as well, not sure if it works on Linux.
- digi59404 6y agoIt does but by default it uses GTK2. You won’t get the same experience on all platforms with Xamarin Desktop. Each platform has a different rendering engine.
- zerr 6y agoQt (Widgets as well as QML) doesn't use native controls and it is fairly easy to customize (even Widgets, lookup "stylesheet"). For wxWidgets, there is wxUniversal, which draws custom controls, thus easier to customize - not sure how well it is maintained though. I'd argue that dev time is quite fast for all - Qt, wxWidgets, Lazarus.
- andi999 6y agoI dont know if Lazarus compiles as fast as Delphi, but I'd argue that dev time for Delphi is equal to compile time for Qt app.
- andi999 6y agoTk is probably also native since version 8 or so. But somehow the tutorials for Tk usually have ugly examples (not pleasing the eye).
- bscphil 6y agoDo you have to update code to take advantage of native widgets? I use SCID [1] because it's the best FLOSS tool for its purpose, but the interface is still absolutely horrific looking. It doesn't even respect the DPI hints that GTK and QT programs do, so the fonts are too big on my computer. [1] http://scid.sourceforge.net/ http://scid.sourceforge.net/
- jabirali 6y agoAt least on Linux, Tk apps still tend to look like remnants from before Windows 95. (Which personally is the main reason I avoid Tk apps whenever possible, including Tkinter apps.)
- ofrzeta 6y agoThere's tkinter.ttk that makes your widgets look slightly more modern.
- raverbashing 6y agoWxWidgets worked fine and it was very easy to integrate on small C++ projects when I tried. If you just need some basic windows it's the way to go. Qt is good but it requires you to go fully into the Qt ecosystem (build tools, etc) not sure about QML though.
- bsenftner 6y agoI second wxWidgets. It can produce small executables, like 50K, that sport a complete modern UI. Just look for the AUX addition, that the more modern and customizable version.
- c-smile 6y agoJust to get a feeling, see screenshots of Sciter Notes application on major desktop platforms: https://notes.sciter.com/ https://notes.sciter.com/ The application uses exactly same code on all platforms: https://github.com/c-smile/sciter-sdk/tree/master/notes https://github.com/c-smile/sciter-sdk/tree/master/notes It even runs on Windows 2000: https://sciter.com/necromancing-sciter-on-windows-2000/ https://sciter.com/necromancing-sciter-on-windows-2000/
- flingo 6y agoIs there any way to get a GPL-compatible version of Sciter? I couldn't tell, just from glancing at the website/github.
- dkersten 6y agoI’m not sure how you’re coming up with the development time estimates but personally I’ve found Qt to be fast to develop in, both Widgets (using designer) and QML. Hell, I mostly do React web UIs nowadays for various reasons, but I find QML a lot easier and faster than web UI’s, especially for layout (vs bootstrap style layouts as well as flexbox and css grid).
- c-smile 6y agoWhat is your estimation of creating something like this: https://notes.sciter.com/ https://notes.sciter.com/ ? UI, application logic and data storage. QML is far not enough for this I think. It took me 3.5 months ( https://notes.sciter.com/2017/09/11/motivation-and-a-bit-of-history/ https://notes.sciter.com/2017/09/11/motivation-and-a-bit-of-... ). But I shall admit that this does not include architecture time as I knew internal architecture of EverNote upfront.
- dkersten 6y agoIt’s difficult to estimate and I don’t know enough about that applications requirements either, but to give some kind of indication, two years ago I wrote a tool to control an LED (neopixel) strip, or, rather, to create an animation that would be played back on the neopixels. The animation was a json file containing a timeline of events and parameters (think “at time t fade pixels 2 through 10 from rgb x to rgb y over 5 seconds). You could have four parallel timelines that got blended together. I wrote a GUI editing tool using QML that had three main UI elements: a visualisation of the LEDs, a properties widget and a timeline. It also had start, stop, rewind buttons so you could play the animation back on the visualisation panel. The visualisation panel was also interactive to select individual leds. The timeline had time labels at the top which you could click to select a time and four “swimlanes” where you could draw the effects on, which controlled start time and duration (the rest of the parameters could then be set in the properties window, for the selected effect). The led visualisation and timeline components were custom made (I don’t remember if they were made using custom QSceneNodes, QOainter or composed out of nested QML elements). The end result wasn’t particularly pretty, but I was going for functionality over look and the audience was limited to myself and one other person. The entire application (including the code to actually drive the leds, which ran on a raspberry pi, but shared code with the GUI tool to make the playback in the UI as realistic as possible) took 3 to 4 days. I’m sure given a few weeks I could have made it look really slick and given a few months could have made the UX something I would be happy to have other users use. So I don’t know how long your application would take me, especially if it has to look identical to what you have, but I have been quite productive in QML, even when custom components were needed. I’m not trying to say it would have been a better choice for you, though, just that I often find Qt and QML being under appreciated and underrated. Although the Qt companies recent behaviour and aggressiveness in getting people to switch from open source to paid license had really put me off to the point where I’m not sure I’d use it for a new project, but those reasons are all not related to anything technical.
- justin66 6y agoYou've overstated the comparative advantages of Sciter so much that, upon clicking through, people might flash back to when they found out was a Segway was and shout, "it's a @#$&-+) scooter?!?"
- bscphil 6y agoIn particular, it's very weird that "doesn't use native widgets" is presented as an advantage, given that apparently the result is that your apps end up looking like this on every platform: https://notes.sciter.com/ https://notes.sciter.com/
- c-smile 6y agoYou can use native platform widgets with Sciter. If you will find one suitable. It is just that there are absolutely no standard platform widgets (at least on Windows) for this UI. https://notes.sciter.com/wp-content/uploads/2017/09/notes-screenshot.jpg https://notes.sciter.com/wp-content/uploads/2017/09/notes-sc... And even if there are some, integrating them with what your app is needed will lead to some mess like here: https://notepad-plus-plus.org/assets/images/notepad4ever.gif https://notepad-plus-plus.org/assets/images/notepad4ever.gif Custom components a la Windows 2000, some in Windows XP with default styled Windows 8 stuff - the zoo.
- zelly 6y agoYou can add Flutter to this list which is becoming a viable option for desktop UIs. The downside is Dart, but that's not so different from picking Pascal/Delphi just for its UI framework.
- sli 6y agoI would say the downside is Google, because they may just kill Flutter and/or Dart even if they get popular. I just can't make myself hitch anything important to Google's tech anymore. I do think Dart itself is a fine language, though.
- 946789987649 6y agoFlutter is open source though, no?
- zelly 6y agoSo is Tensorflow but do you really think volunteers could maintain it?
- adontz 6y agoI'd rather disagree about Qt/QML. It is fast. What people initially miss about UI libraries is composition features. Which are over the top for QML and not so to put is softly for Sciter.
- collyw 6y agoPascal is still going?
- dublin 6y ago"Native" GUI toolkits that do not fully implement pen and touch UI are not really native, are they? Do NOT assume your users are on devices that are limited to 20th century UI hardware! (Win10 can fully leverage both pen and touch, iOS does touch well and pen fairly badly...)