I know the author focused on Nim, but I wonder how Lazarus (or Delphi I guess) would fare. Sadly it's FreePascal, but it really does look like the less bullshit platform to make cross-platform desktop applications.
Cross-Platform GUI Toolkit Trainwreck (2016)
121–130 of 177 posts
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#122So many sub-debates hidden in this "cross-platform native GUI": 1) I want to write a GUI code once 2) I want to ship something that works on Windows / Linux / MacOS 2.1) I want to ship something that looks the same on Windows / Linux / MacOS 3) I want to ship a binary that works on Windows, a binary that works on Linux, a binary that works 3.1) I want to ship a small and efficient binary 4) I want to ship something t…
> 2.1) I want to ship something that looks the same on Windows / Linux / MacOS Why? I want my macOS apps to use Mac-native UI elements, and Windows apps to use Windows-native UI elements. (There is no one native Linux UI, so we can leave that one aside...)
Branding teams are in my experience very picky about lots of stuff. For example, my employer's brand design team recently released a rule that when our logo is included alongside others logos in a list of companies involved in a partnership, it may not be included in a vertical list, only a horizontal list.
Using the standard background colour for the platform on your app when it's not one of the brand design team approved colours? Also out.
etc. etc.
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#123So many sub-debates hidden in this "cross-platform native GUI": 1) I want to write a GUI code once 2) I want to ship something that works on Windows / Linux / MacOS 2.1) I want to ship something that looks the same on Windows / Linux / MacOS 3) I want to ship a binary that works on Windows, a binary that works on Linux, a binary that works 3.1) I want to ship a small and efficient binary 4) I want to ship something t…
> 2.1) I want to ship something that looks the same on Windows / Linux / MacOS Why? I want my macOS apps to use Mac-native UI elements, and Windows apps to use Windows-native UI elements. (There is no one native Linux UI, so we can leave that one aside...)
It's a common concern to avoid confusing users who switch OS often (eg when demoing on someone else's machine.)
The fact that it contradicts the other requirement ("but it does not look like the other apps") is lost on no one.
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#124So many sub-debates hidden in this "cross-platform native GUI": 1) I want to write a GUI code once 2) I want to ship something that works on Windows / Linux / MacOS 2.1) I want to ship something that looks the same on Windows / Linux / MacOS 3) I want to ship a binary that works on Windows, a binary that works on Linux, a binary that works 3.1) I want to ship a small and efficient binary 4) I want to ship something t…
> 2.1) I want to ship something that looks the same on Windows / Linux / MacOS Why? I want my macOS apps to use Mac-native UI elements, and Windows apps to use Windows-native UI elements. (There is no one native Linux UI, so we can leave that one aside...)
But I suspect lots of software companies would think that describes them, when in reality there's probably fewer than 10 products that meet that bar.
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#125Earlier quoted context omitted.
Shameless plug: https://github.com/AshampooSystems/boden We are working on providing exactly that thin native wrapper in modern C++ without much bloat.
Do you guys plan on supporting desktop apps or are you sticking with mobile?
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#126So many sub-debates hidden in this "cross-platform native GUI": 1) I want to write a GUI code once 2) I want to ship something that works on Windows / Linux / MacOS 2.1) I want to ship something that looks the same on Windows / Linux / MacOS 3) I want to ship a binary that works on Windows, a binary that works on Linux, a binary that works 3.1) I want to ship a small and efficient binary 4) I want to ship something t…
Windows support is implemented via https://github.com/Microsoft/react-native-windows and targets W10, Xbox, and Windows Mixed Reality.
MacOS support is experimental, but mostly working. Linux currently needs an Electron wrapper. Theoretically you could port one of the react-native-desktop projects to use GTK or Qt.
Then of course you have native iOS and Android components with Facebook's ReactNative and web support via React.
ReactXP wraps all of these projects allowing you to write React components and TypeScript code that is shared among every platform. It's the same workflow as Electron, even less so, with native UI.
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#127Earlier quoted context omitted.
I have the same question. There are many things that are problematic about Qt (personally, I loathe anything that feels the need to interject itself in the middle of the build process) but to completely ignore Qt without explanation - and subsequently post detailed experiences with libraries I've never even heard of - led me to believe the author exists in some uninteresting-to-me parallel plane of existence.
You mentioned it but, the strange meta object macro processing that qt depends up on, has been something I dislike. If I remember correctly GTK or other toolkits does not do anything similar. And qt python bindings seems to be very poorly documented, same case with Java bindings.
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#128So many sub-debates hidden in this "cross-platform native GUI": 1) I want to write a GUI code once 2) I want to ship something that works on Windows / Linux / MacOS 2.1) I want to ship something that looks the same on Windows / Linux / MacOS 3) I want to ship a binary that works on Windows, a binary that works on Linux, a binary that works 3.1) I want to ship a small and efficient binary 4) I want to ship something t…
> 2.1) I want to ship something that looks the same on Windows / Linux / MacOS Why? I want my macOS apps to use Mac-native UI elements, and Windows apps to use Windows-native UI elements. (There is no one native Linux UI, so we can leave that one aside...)
See VSCode, Discord, Spotify...
It's easier to get a single code-base that 'just works' across platforms if you have an abstraction that is truly cross-platform. One of the major value propositions of developing with Electron is this ability to develop cross-platform 'with confidence' - I can build an app on Windows and be 99% sure it's going to look function the same on OSX / Linux.
> I want my macOS apps to use Mac-native UI elements, and Windows apps to use Windows-native UI elements
That's a fine goal but it means you end up needing more platform-specific code. It's a trade-off, and there isn't a one-size-fits-all solution.
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#129I think he got it wrong when he quickly ruled out IMGUI, as you can use it to create a small app with next to no dependencies. He complains that you need to redraw your GUI at 60 FPS, but this is wrong, you should be able to draw with it only when needed. I am a big fan of Nuklear. I can write a tiny C app that compiles on macOS, Windows, iOS, and Android with it. The look and feel of Nuklear can be something you don…
> He complains that you need to redraw your GUI at 60 FPS, but this is wrong, you should be able to draw with it only when needed. Yep, he did that, as stated here from TFA: > The solution was to redraw only when needed: as a quick hack I introduced a global boolean doRedraw and set it to true only when an input event was received or the internal application state had been changed (e.g. the framebuffer had been updat…
nk_layout_row_dynamic(ctx, (float) row_height, 3); // a row of 3 buttons if (nk_button_label(ctx, "Previous")) ... if (nk_button_label(ctx, "Next")) ...
Here is small app I made with Nuklear: https://www.youtube.com/watch?v=MycIYcutlMA
Re: Cross-Platform GUI Toolkit Trainwreck (2016)
#130Earlier quoted context omitted.
> He jokingly mentions Qt in the caption of the final picture. well, he can keep joking and I can keep shipping Qt apps and everyone's happy
Except your users, they end up with your MBs.