How do you create a cross-platform GUI without using Electron?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • Mergify - Updating dependencies is time-consuming.
  • SonarCloud - Analyze your C and C++ projects with just one click.
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • tauri

    Build smaller, faster, and more secure desktop applications with a web frontend.

    https://tauri.studio/ - I haven’t used it myself but looks pretty interesting. They say they use existing browser engine shipped with OS and desktop integration layer written in Rust. The claim is that you get an application size under 1MB

  • sciter

    Sciter: the Embeddable HTML/CSS/JS engine for modern UI development

    Sciter [1] is kind of a really lightweight electron. It's about 8Mb, cross platform, and you can either run it standalone (like electron) or use it as a library from Rust/D/Python/C#/whatever. You pay for that with a lack of compatibility with the existing Javascript ecosystem. Any moderately complex JavaScript library that interacts with the dom will probably use something that Sciter doesn't implement, so you end up reimplementing stuff like graph libraries. On the other hand there are a couple of very useful additional APIs that regular browsers don't have (like SQLite).

    1: https://sciter.com/

  • Mergify

    Updating dependencies is time-consuming.. Solutions like Dependabot or Renovate update but don't merge dependencies. You need to do it manually while it could be fully automated! Add a Merge Queue to your workflow and stop caring about PR management & merging. Try Mergify for free.

  • awesome-electron-alternatives

    A curated list of awesome Electron alternatives.

  • javafx-gradle-plugin

    Gradle plugin that makes it easy to work with JavaFX 11+ (by openjfx)

  • JUCE

    JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.

  • fyne

    Cross platform GUI toolkit in Go inspired by Material Design

    I recently built one using Fyne for golang. It works well for my case but Fyne is still very new and in development.

    http://fyne.io/

  • FLTK

    FLTK - Fast Light Tool Kit - https://github.com/fltk/fltk - cross platform GUI development

  • SonarCloud

    Analyze your C and C++ projects with just one click.. SonarCloud, a cloud-based static analysis tool for your CI/CD workflows, offers a one-click automatic analysis of C and C++ projects hosted on GitHub. Zero configuration and free for open-source projects! Analyze free.

  • vue-nodegui

    Build performant, native and cross-platform desktop applications with native Vue + powerful CSS like styling.🚀

  • react-nodegui

    Build performant, native and cross-platform desktop applications with native React + powerful CSS like styling.🚀

  • nodegui

    A library for building cross-platform native desktop applications with Node.js and CSS 🚀. React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org

  • wxWidgets

    Cross-Platform C++ GUI Library

    https://www.wxwidgets.org/

    It's open source, the code has always felt reasonably clean to me, and it gives your apps native look and feel.

  • solvespace

    Parametric 2d/3d CAD

    https://github.com/solvespace/solvespace/tree/master/src/pla...

    There is no other platform specific code anywhere in the app, but like I said above we don't support widgets.

    There is also an emscripten port in a branch, but it doesn't want to build recently.

  • Godot

    Godot Engine – Multi-platform 2D and 3D game engine

  • Uno Platform

    Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.

  • MudBlazor

    Blazor Component Library based on Material design. The goal is to do more with Blazor, utilizing CSS and keeping Javascript to a bare minimum. [Moved to: https://github.com/MudBlazor/MudBlazor] (by Garderoben)

    There are grid controls from the usual commercial vendors like Radzen and Telerik. I used them briefly during a free trial. It has a funny name, but MudBlazor [1] has been the MIT licensed library I have been using lately. I have been using their Table control, which may be what you are looking for in a data grid. [2] Check it out and see.

    [1] https://mudblazor.com/

    [2] https://mudblazor.com/components/table#api

  • libui

    Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

    libui has bindings for many languages but might be too immature for complex needs https://github.com/andlabs/libui

  • Avalonia

    Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET Foundation community project.

    I've had decent experiences with Python and Qt5. Windows was historically the painful part, but FBS¹ makes that a lot less painful nowadays. Tk also works reasonably well if you don't need the features and native integration that Qt offers (and I'm pretty sure FBS can handle Tkinter apps just fine).

    The .NET ecosystem is another solid choice for cross-platform desktop app development (and nowadays even mobile, too). Avalonia² in particular looks promising, and is probably what I'd try using first should I ever be tasked with developing a desktop app again.

    ----

    ¹: https://build-system.fman.io/

    ²: https://avaloniaui.net/

  • pywebview

    Build GUI for your Python program with JavaScript, HTML, and CSS

    There's pywebview (https://github.com/r0x0r/pywebview/) which is a Python lib that uses whatever native webview implementation exists. Obviously means some compatibility work between each OS, but gives out very small apps what work very well on the whole. I'm using it on my cross platform email client (https://kanmail.io).

  • WatchHN

    Watch a thread on Hacker News, in a Lazarus based GUI

    I've decided to dust off my somewhat rusty Lazarus, GIT and GitHub skills to build a Lazarus application to follow this thread using the HN API hosted by firebase.

    I've never done anything like this (https/json) before but I suspect I'll be done in a day or two.

    I'm not near the MVP yet, but it does manage to fetch the data and count the JSON objects in it for the main body of this thread.

    With Debug info, the windows executable is 25 megabytes, without it 3.1 megabytes.

    Here's the github link: https://github.com/mikewarot/WatchHN

  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts