On Thursday, 27 May 2021 at 01:17:44 UTC, someone wrote:

Any comments are welcomed, even any comments regarding anyone experience with GUI development within D, no matter whether the answer would be relevant to my specific question seeking a choice or not.

First and foremost, thanks everybody for your replies :) !

I didn't know some of the toolkits you advised me to try even existed.

There was a lot of info for me to digest before starting answering you on some of the specifics and/or personal experience with them, so, I did my homework and make the following summary (mainly relevant to my requirements) to organize my thoughts so I could make a roadmap to start selecting/discarding toolkits, and please, let me know anything I got wrong and/or point me to anything that is plainly wrong in the following summary:

- Microsoft [MFC](https://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library) is a Microsoft Visual C++ wrapper around the Windows API - Microsoft [Windows Forms](https://en.wikipedia.org/wiki/Windows_Forms) for the net framework (not a Windows API wrapper) - Microsoft [WPL](https://en.wikipedia.org/wiki/Windows_Presentation_Foundation) (aka Windows Presentation Foundation) for the net framework 3.0 using XAML or any CLR language - Microsoft [WinUI # 1](https://docs.microsoft.com/windows/apps/winui/) - Microsoft [WinUI # 2](https://docs.microsoft.com/windows/apps/winui/winui2/release-notes/) for UWP XAML apps - Microsoft [WinUI # 3](https://docs.microsoft.com/windows/apps/winui/winui3/release-notes/) for UWP XAML / Win32 apps (aka Project Reunion)

- Gnome [GNUstep](https://en.wikipedia.org/wiki/GNUstep) for Objective-C - Apple [Cocoa](https://en.wikipedia.org/wiki/Cocoa_(API)) for Objective-C

- [MOTIF](https://en.wikipedia.org/wiki/Motif_(software)) for C is a legacy UNIX toolkit - [libagar](http://libagar.org/) (aka agar) for (industry-standard ANSI X3.159-1989) C: [documentation](http://libagar.org/docs) for [1.6.0](http://libagar.org/mdoc.cgi?man=AG_Intro.3), [screenshots](http://libagar.org/screenshots.html)
   - supports texture and GPU acceleration wherever available
   - supports linux/freeBSD/dragonFlyBSD (at least)

- [Fox](http://www.fox-toolkit.org/home.html) for C++: [overview](http://www.fox-toolkit.org/goals.html), plain [documentation](http://www.fox-toolkit.org/doc.html), [FAQ](http://www.fox-toolkit.org/faq.html), and [screenshots](http://www.fox-toolkit.org/screenshots.html) - relies only on core system facilities and **does not wrap** native GUI libraries or toolkits
   - supports linux/freeBSD (at least)
   - used by the xfe file manager app

- [wxWidgets](https://en.wikipedia.org/wiki/WxWidgets) (former wxWindows) for C++: [overview](https://docs.wxwidgets.org/3.0/page_introduction.html), excellent plain [documentation](https://docs.wxwidgets.org/3.0/), [tutorials](https://docs.wxwidgets.org/3.0/page_topics.html); eg: [hello world app](https://docs.wxwidgets.org/3.0/overview_helloworld.html)
   - supports native platform controls wherever possible
- supports UniCode: (https://docs.wxwidgets.org/3.0/overview_unicode.html)overview
   - wxMSW is the native port for Microsoft Windows
   - wxGTK2 port supporting GTK+ 2.# ≥ 2.6
   - wxGTK3 port supporting GTK+ 3.#
   - first-impressions: fully-alive

- [arsd](http://dpldocs.info/experimental-docs/arsd.html#desktop-gui): [simpledisplay](http://dpldocs.info/experimental-docs/arsd.simpledisplay.html) → [minigui](http://dpldocs.info/experimental-docs/arsd.minigui.html) for D: plain documentation - simpleDisplay provides basic cross-platform GUI-related functionality: creating windows, drawing on them, working with the clipboard, timers, openGL, and more; but, **does not provide** high-level GUI widgets - simpleDisplay does not have any dependencies outside the OS and color.d - simpleDisplay should support UniCode and i18n internationalization since its written in D to begin with (my assumption) - miniGUI primary goal is to be useful without being large and complicated (like GTK and/or QT) and it isn't hugely concerned with appearance - miniGUI keeps it simple on linux: some controls can be customized with CSS-inspired Widget.Style classes
   - miniGUI supports the native controls/themes on Windows
- miniGUI supports creating widget trees at runtime from XML with arsd.minigui_xml - miniGUI requirements are arsd.simpledisplay and arsd.color dependencies on which it is built: nothing more - miniGUI had mostly additive changes or bug fixes since its inception until 05-2021 - miniGUI should support UniCode and i18n internationalization since its written in D to begin with (my assumption)

- [dlangUI](https://github.com/buggins/dlangui) for D: [documentation](http://buggins.github.io/dlangui/ddox/), [tutorials](https://github.com/buggins/dlangui/wiki), and [screenshots](http://buggins.github.io/dlangui/screenshots.html) - it is a major-refactored port of the Cool Reader app project for C++ - supports openGL based acceleration: fallbacks to pure Win32 API / SDL / X11 when the openGL library is not available and/or cannot be loaded
   - supports highly-customizable styles and themes
   - supports UniCode and i18n internationalization
   - requirements: DMD ≥ 2.077
   - requirements: third-party: DerelictGL3 for OpenGL support
- requirements: third-party: DerelictFT and FreeType library support under linux and optionally under Windows - requirements: third-party: DerelictFI and FreeImage library support for image decoding - requirements: third-party: DerelictSDL2 and SDL2 for cross platform support - requirements: third-party: XCB and X11 bindings (patched) when SDL2 is not used
   - first-impressions: seems abandoned

- Gnome [GTK+](https://en.wikipedia.org/wiki/GTK%2B) (former GIMP ToolKit) for C (using GObject library targeting Glib) (currently using Cairo)
   - primarily targeting the X-Windows system
   - used in Gnome, LXDE, XFCE, MATE, Cinamon
   - used by Marco, Mutter, Xfwm (and some more) window managers

- [QT](https://en.wikipedia.org/wiki/Qt_(framework)) is for C++
   - primarily targeting the X-Windows system or Wayland
   - used in KDE, LXQT, Lumina, Unity
- QT [has removed LTS from the OSS community](https://catfox.life/2021/03/21/really-leaving-the-linux-desktop-behind/) plainly admitting they want us to be their beta testers and that paid commercial users are the only ones who deserve stability

- [Elementary](https://en.wikipedia.org/wiki/Enlightenment_Foundation_Libraries) for C
   - part of EFL (aka Elementary Foundation Libraries)

- [sciter](https://sciter.com/): is an embeddable HTML/CSS/JavaScript engine for modern UI development - still need to research it: left it as the last one because it seems it is the opposite of what I am looking for

At first glance, but that could end quite differently, possible ones are (ordering not standing): dlangUI and arsd.miniGUI written in D, agar written in C, Fox and wxWidgets written in C++.

Regarding dlangUI: its a shame if it was really abandoned ... does someone seriously considered forking it ? Or is it pointless since it needs a lot of human resources that are not there to begin with which is what I suspect ?


Reply via email to