Meanwhile Microsoft makes the start menu with React
post
Electron is the only cross platform gui toolkit...
If you ignore QT, GTK and everything else.
I'm so glad that Microsoft makes an awesome cross platfor--- wait, no, but they contribute code to--- hmmm ... Hey, what does Microsoft do to make apps more portable again?
The real reasons often are:
- They want be able to hire much cheaper webdevs instead of software devs.
- Electron has a lot of built-in data collecting metrics, which they urgently need for creating a real-life KITT.
- Easy live embedding of content. Sure you can add your own solution, in fact I created ETML as a solution for this problem for my engine, all without any support for nasty scripting languages or convoluted stylesheets (style-inheritance in CSS turned me off from webdev even more than JS did). At best, it can be used for things like embedding videos on Discord, because no one else thought some universal approach, let alone one that disallows proprietary players. At worst, it's being used for ads.
Also a lot of Windows-only apps are Electron apps, only because the manufacturer wants to go "fuck you", even putting protections into the code just in case you wanted to run it on Linux.
EDIT: Forgot the "live embeds" reason.
one of the funniest (and sadly accurate) things i've heard said about linux backwards-compatibility is that its most stable API is Win32. you can run really old windows software on wine because they support stuff even windows doesn't anymore.
of course this is because the expectation is that you can just recompile old software to work on new systems, which is not really a thing on window.s
The most stable system is one that is out of support. No updates == No breakage! π
Itβs very amusing to imagine devs carefully watching for an EOL/EOS date and starting to build software only after
It's so portable! With maximal efforts we support both windows 7, windows 8.1 (but not 8.0), windiws 10 and soon Windows 11 !!!
/s
Flatpak
AppImage
Snap
Hell, let's not forget
Python
Perl
Java
POSIX
The first 3 are Linux only. It's irrelevant.
Also each is pretty bad in terms of usability and practicality, either losing integration because "containerized" or taking GBs of space or both.
Edit: guys relax, I'm not a linux hater, I use it daily. But windows does have a unified environment, which makes deployment so much easier, while linux doesn't. And that's a problem since you either have old broken apps on distro repositories, or impractical, potebtially bloated, and even more fractionated environments like those I mentioned. They are patches and we should work towards a more standard environment, not adding more and more levels of abstraction like electron does.
Even Torvalds says it so.
AppImages can get quite large because each app is self-contained, but the "losing integration" part is nonsense these days for any of these formars. That's why we have portals, and if those aren't enough you can still give the app full permissions.
Appimages are usually quite reasonable in size, it's Flatpak that usually require 2/3 GB per app since every package has its own version of KDE/Gnome or other runtimes so every app still has to download a new one.
That's simply not true, if the required dependencies are already downloaded they get used by every Flatpak app. If you have three apps requiring the Gnome 46 libs those only exist once.
I don't know where this myth about Flatpaks always being gigabytes in size originates from or why it's so persistent, but it's wrong.
I'm not saying that's not true.
I'm saying I've almost never downloaded a Flatpak that didn't require a new dependency downloaded.
When I removed all my flatpk some time ago, I had: Steam, Viking, Discord, FreeCad and Flatseal to manage them. All of them and their dependencies used something arounx 17 GB of disk space (most of which was of course several versions of dependency runtimes), and that was after I removed all the unused runtimes that forn some reason it doesn't remove after I uninstall or they are upgraded.
I'm sure if I installed more Flatpaks, some dependencies would eventually be reused, but you still need a good collection of them at any given time. So in pracrice you still need a lot lf space unfortunately.
In my experience the issue is different flatpaks depending on different versions of gnome platform or mesa or whatever, so you have multiple versions of the same library.
I have plenty of storage though so I don't care that much.
I donβt know where this myth about Flatpaks always being gigabytes in size originates from or why itβs so persistent, but itβs wrong.
Alright, here is ~25 GUI apps flatpak vs appimage:

- 6 GiB flatpak.
- 2.7 GIB appimage.
This is if you have a filesystem with transparent compression, If you do not have such filesystem (ext4), then it is more like 15 GIB vs 2.9 GiB lol.
This comparison is missing the flatpak equivalents of kdeconnect, deadbeef and a few CLI tools that I have on right btw, flatpak-dedup-checker for some reason doesn't check the /var/lib/flatpak/repo directory which is usually another +1GiB in best case scenario.
losing integration because βcontainerizedβ
Bollocks. I've seen that many times with Flatpak (can't speak for Snap), and every single time it was either because the packager failed to set up permissions or because the user messed with permissions that the application needed. Break off the tip of a screwdriver and it will no longer function as a screwdriver.
And I know you're talking out of your ass because AppImage isn't even sandboxed.
taking GBs of space
That part is true and accurate, and for a very good reason: dependency pinning. System packages can break if they don't have the correct versions of shared libraries. If a package requires a very old version of a library, and doesn't link it statically or supply it with the package, it can misbehave, have missing features, or refuse to even start. Flatpak (and probably Snap too, can't speak for it) solves that by letting the packager specify (pin) the exact version of a dependency. If five separate packages require five different versions of the GNOME application framework, then they will download five separate packages of the correct version. AppImage solves it by being monolithic: everything is packaged together into a single executable.
losing integration because βcontainerizedβBollocks. Iβve seen that many times with Flatpak (canβt speak for Snap), and every single time it was either because the packager failed to set up permissions or because the user messed with permissions that the application needed. Break off the tip of a screwdriver and it will no longer function as a screwdriver.
Well then I guess you haven't tried to get a password manager like KeepassXC to work with a Flatpak browser, because none of the solutions I've seen are "fix the permissions".
From what I've read it seems you shouldn't run a browser as a flatpak anyway, as this somehow weakens the built-in isolation.
I think I originally read about this somewhere librewolf-related but can't seem to find it now.
I did find this similar discussion: https://discuss.privacyguides.net/t/correct-way-to-install-browsers-on-linux-securely/27046/6
I don't know if it's still the case, but up to a couple of years ago, Flatpak was configured so that externally mounted folders were not accessible. I discovered that when Steam on flatpak refused to install games on my hdd, and it was quite frustrating to figure out how to enable it. Still, it's difficult to criticize how "bloated" are electron apps (they are) when I need to download 2GB or runtime for an 80MB telegram binary
Snaps integration is even worse as I've seen browser extensions state they straight don't work on snap's browsers. Also desktop integration on gnone (even files drag and drop between snaps) are broken on the ubuntu installations I tried.
Appimages have the least drawbacks and are my preferred methods between the three (at least they take less storage space than an equivalent Flarpak for some reason, but are still broken sometimes), yet they still miss a central package repository, and that's a big problem.
yet they still miss a central package repository, and thatβs a big problem.
It's a package repository, but I would hardly call it "central"
Well, upstream is now considering either merging or just pointing to the AM repository because it is bigger and better maintained.
Flatpak is good. I say that as both a user of them and a dev of applications that are published as flatpaks.
.net
.net cli apps are cross platform and can be portable :p
Gui in .net isnt fully cross platform ( maui is everything except linux ) but frameworks like avalonia ( .net ) and imgui fix all that :')
Thanks for reminding me why Maui doesn't support Linux. I saw Maui mentioned in an earlier comment and was baffled why KDE would make something not working that doesn't work in Linux. It's because Microsoft stole the Maui name from KDE: https://www.phoronix.com/news/Microsoft-KDE-MAUI
@DacoTaco @MoogleMaestro there is a port of mono winforms implementation to modern dotnet and it's really works:github.com/DanielVanNoord/Syst
Winforms of all things haha. Eeuw xD
But thats flipping awesome and i love it!
I know xamarin was wpf being cross platform with mono, but thats a dead horse thanks to microsoft haha
@DacoTaco Yes, it's Microsoft decided to kill classic win32 widgets and any XAML support in Mono, forcing new WinRT platform and not providing any GUI support in netcore. It's sad that nobody made some crossplatform WPF implementation for modern dotnet, Maui is not incompatible with existing source code, IIRC
Itβs sad that nobody made some crossplatform WPF implementation for modern dotnet
That's basically Avalonia UI.
I believe Uno Platform is similar, but less of a WPF variant, and closer to Xamarin or MAUI in the style of Xaml that they use.
@hdsrob >Thatβs basically Avalonia UI.no, avalonia cannot help you run existing applications. Also. Avalonia is a crap, taking minutes to parse xml crap on poor hardwareYes, there are many implementaion of WPF-like UI, but no implementation of existing Windows UI.mono's winforms allows you run existing winforms apps without single line change or even without recompiling (just replace related System.Windows.* assembies)
Avalon is actually xaml and cross platform. Personally id rather have a razor format of gui code, but xaml is a good second. Its basically what maui was suppose to be
Does not MAUI compile to Linux, just that you need to compile on Windows?
Nope. The ui framework doesnt support linux at all. None of its cross platform claases and enums have linux. Its stupid because .net and aspcore just work on linux...
https://github.com/dotnet/maui
Android, iOS, iPadOS, macOS, and Windows
Everything but Linux, that's funny.
I look at MAUI a year or so ago and IIRC, "official" Linux support was made by the community.
Lazarus gang, this is your chance!
GTK is not accessible anywhere other than Linux and is therefore not a serious option outside of Linux.
I hate the Windows API so much. There are like 100 million function that all start with a capital letter and take a kajillion arguments just to do the most simple thing imaginable (see CreateThread). And there are twenty different typedefs for the same type (PSTR, LPSTR, tchar* all point to char*). Also all variables and function arguments should start with their types, like hWindow if the window is a HANDLE.
I hate this joke of a programming interface so much, I hope everyone sticks to programming with POSIX and platform-agnostic libraries.
EDIT: And also, did I mention that if you want to use it, you get all of it or none of it? It's literally a single header file named Windows.h. You get just that and take it or leave it.
The windows API documentation is a joke
They must really like the taste of leather.
Tell me you have no idea how software development works without saying it...
Tbh, it's not entirely wrong, which is the reason why it works so well as rage bait.
It's really not about Linux, but it is about supporting anything and everything out there with a single app. Use Electron and you can have the same app running on Windows, Mac, Linux, Android, iOS, your car, your game console, your smart fridge and in a website.
Of course the result sucks, but if you can cut development effort into a fraction while also supporting systems that you would have never supported otherwise, that's not a bad deal for businesses.
This is such a hilariously bad take. I like how "I can't use Win32 on Linux" morphed into "re-write the whole app in Javascript just so I can use Electron."
Meanwhile, Wine and QT are like: "am I a joke to you?"
I'll add that (IMO) a lot of applications are becoming increasingly malicious, although less-so in the desktop space. I'm happy that devs like this are forced to quasi-sandbox their crap into a browser. Actually, if anyone knows how to crack into an Electron app in order to restore local plugins, user-scripts, and sandbox security controls, let me know. Or just liberate the guts into a local web app instead so I can use a real browser? This trend could be very useful for local security if those features become available.
I can code in C on all 3 (more if you include BSDs). You would not believe how amazing my skills are to avoid platform specific dependencies in a language that predates all these OS.
How do you deal with platform specific stuff? I am talking about desktop API and friends. (If that's even a thing in your problem space). /gen
You can consider nappgui sdk which will handle it
https://nappgui.com/en/home/web/home.html
However because this is C, letβs just use libraries GLib/GTK is already cross-platform.
Code Example/Build process https://wrycode.com/gtk3-cross-compile/
There are other examples/libraries so it depends on what you need.
I only just realized the Proton and Electron naming schemes lol
This is not even mental gymnastics at that point.
What kind of shit for brains asshole is still defending Windows in 2025?
He's a magician, because reading this, I aged 10 years and grew a metastatic tumor.
Aren't Qt and GTK cross platform? I have Dolphin and Kate running on my Windows work laptop.
As is wxWidgets and others.
Dear god, I had to write wxWidgets/C++ for Win32 last year for work and it was horrific. Never again, back to modern web standards for me. The irony is that it was justified as being "cross platform" but we never got around to actually making it work on Linux. Makes no sense, it should have been an internal web app. (Admittedly, this was for law enforcement software and they seem to love windows.)
Yeah, he doesn't know what he's talking about. There is a shitload of frontend developers that specialize in web standards and technologies. Electron was developed to take advantage of that deep pool of frontend developers. The side affect, is that other OSes can just support electron and they get the developers and the applications for free. Which has been a major boon for Linux users and those looking to escape Microsoft's vendor lockin strategy. Today might be different, but in the past, nobody was intending to support Linux by creating electron apps. If they cared so much or it was so important, they would have been using Qt and GTK prior to Electron.
(Apple as a platform is so closed that it couldn't be influenced by this utter crap and the developers can use the OS native API's.)
A hidden gem of stupidity and nonsense in the already pretty dumb tirade.
Okay, how does this dude explain native Linux apps?
Thank God this guy got disliked to hell.
Amongst the apps mentioned as bloated on Windows were Teams, Discord (major offender) and WhatsApp. The latter is a curious case because a Universal Windows app existed (now being deprecated I guess?) that was more memory efficient than the Web wrapper.
And in case, someone in interested there is a terminal client for WhatsApp (and Telegram) called nchat. Sure, it is not at feature parity with web client (images is a big problem, for obvious reasons) but the simple fact that a third party client taking so little resources exists is a damning indictment of Meta. It shows that resource efficient clients are possible (provided the parent company junks the metaverse).
top 99 comments