Microui+fenster=Small GUI
Max Bernstein discusses a new backend integrating the fenster and microui libraries for simplified GUI development. The project is open-source, inviting contributions while still needing refinements in rendering and shortcuts.
Read original articleMax Bernstein discusses the development of a small GUI solution using two libraries: fenster and microui. Fenster, created by Serge Zaitsev, is a lightweight 2D canvas library that simplifies drawing pixels on the screen without the complexities of SDL or OpenGL. It is a header-only C/C++ library with around 400 lines of code, compatible with WinAPI, Cocoa, and X11, and supports keyboard and mouse input. Microui, developed by rxi, allows for the creation of GUI elements like menus and buttons, translating them into a simple drawing bytecode, but it typically relies on SDL as a backend. Bernstein and his collaborator Kartik created a fenster backend for microui, resulting in a compact file of less than 250 lines that integrates the two libraries. This new backend simplifies the rendering process and includes additional functions for handling input. While the project is functional, there are still aspects to refine, such as rendering logic and keyboard shortcuts. The blog post encourages readers to explore the project and contribute to its open-source development.
- Fenster is a lightweight 2D canvas library for simple pixel drawing.
- Microui translates GUI elements into drawing bytecode and is typically used with SDL.
- A new backend was created to integrate microui with fenster, simplifying GUI development.
- The project is open-source, inviting contributions and improvements.
- There are still features to refine, including rendering logic and keyboard shortcuts.
Related
Writing GUI apps for Windows is painful
Samuel Tulach discusses challenges in writing Windows GUI apps in C++, emphasizing requirements like Windows support, styling, and efficiency. He evaluates various frameworks, recommending Dear ImGui for its simplicity and lightweight design.
Writing GUI applications on the Raspberry Pi without a desktop environment
This article explains writing GUI applications on a Raspberry Pi without a desktop environment. It covers interacting with the framebuffer, configuring resolutions, using low-level interfaces, Raylib library, and optimizing CPU usage.
Writing GUI apps doesn't have to be painful
The author discusses challenges in developing Windows GUI apps, opting for Go with Fyne library for a smart card reader project. Despite minor drawbacks, Go+Fyne proved efficient, attracting users and contributors.
ImRAD is a GUI builder for the ImGui library
ImRAD is a GUI builder for the ImGui library, supporting multiple operating systems with extensive widget options, dynamic variable management, and GPL-free generated code for project integration. Installation varies by platform.
Clojure Desktop UI Framework
Humble UI is a Clojure-based desktop UI framework designed for cross-platform application development, featuring a user-friendly API, ongoing development, and resources like a Slack community and sample applications.
Many decades ago when I worked on a C++ team we hired very smart but not C++ guru employees. I wrote a portable graphics library so team members could write X11 apps without learning details that domain experts really didn’t need to learn. With my company’s permission, I rewrote that code on my own time and added support for Mac, and Windows. That code became the two editions of my Portable GUIs with C++ books for McGraw-Hill.
Sorry to rant so much off topic, but mostly being retired now I have been thinking of getting back into C++ (I usually use Lisp languages and Python now). I think this very cool project will be the start of a few very fun days of playing with C++ again.
[1] https://github.com/freedesktop/pixman [2] https://github.com/nakst/luigi
Also, to keep the core drawing code short so that it can be fully listed on a blog post or in a print magazine.
What I liked is is a self-sufficient set of files that compile immediately without any dependency issues (even on the Mac). There should be more work like that:
- making it even easier to use
- making it simpler and simpler
- making it faster
- making the library footprint smaller
Thanks!
Microui seems very cool as well but not in a "the comments section is very often longer than this code" sense. Still, I'll definitely be poking around with this a bit more for the novelty.
Maybe a dumb question, but why not Dear ImGui (https://github.com/ocornut/imgui). "It's way too big and complex" is a completely reasonable answer, but I found it fantastic for debug menus, and there are a few applications that have used it as their _main_ GUI (Ship of Harkinian as an example).
(Edit for fixing the name of the project)
Any suggested reading?
Or, can I already?
Or is it just the header there? I see there is both a Cpp and a Go file there too, so I am a bit unsure which does what.
Related
Writing GUI apps for Windows is painful
Samuel Tulach discusses challenges in writing Windows GUI apps in C++, emphasizing requirements like Windows support, styling, and efficiency. He evaluates various frameworks, recommending Dear ImGui for its simplicity and lightweight design.
Writing GUI applications on the Raspberry Pi without a desktop environment
This article explains writing GUI applications on a Raspberry Pi without a desktop environment. It covers interacting with the framebuffer, configuring resolutions, using low-level interfaces, Raylib library, and optimizing CPU usage.
Writing GUI apps doesn't have to be painful
The author discusses challenges in developing Windows GUI apps, opting for Go with Fyne library for a smart card reader project. Despite minor drawbacks, Go+Fyne proved efficient, attracting users and contributors.
ImRAD is a GUI builder for the ImGui library
ImRAD is a GUI builder for the ImGui library, supporting multiple operating systems with extensive widget options, dynamic variable management, and GPL-free generated code for project integration. Installation varies by platform.
Clojure Desktop UI Framework
Humble UI is a Clojure-based desktop UI framework designed for cross-platform application development, featuring a user-friendly API, ongoing development, and resources like a Slack community and sample applications.