Making a small GUI with microui and fenster

Max Bernstein just wanted to put pixels on a screen. He didn’t want to think about SDL this or OpenGL that, just draw a pixel buffer and be done.

fenster, a tiny 2D canvas library by Serge Zaitsev, does just that. It’s a tiny drop-in header-only C/C++ file that weighs no more than 400 LOC of pretty readable code. It works with WinAPI, Cocoa, and X11. And it handles keyboard and mouse input, too!

Sometimes Max wanted to do just a little more than draw pixels—maybe have a menu, some buttons, render text—and doesn’t want to completely DIY but still not think about SDL.

Fortunately, microui by rxi exists and handles the translation from GUI elements into a simple retargetable drawing bytecode. It’s similarly a small, drop-in library, weighing only 1500 LOC.

Then, as usual, Kartik and I had a small argument and that resulted in us creating the fenster backend for microui! I sent him a skeleton to show what I wanted to do and he did most of the heavy lifting for the OpenGL-like parts.

The result is a less than 250 LOC file that binds microui to fenster. It’s inspired by the SDL renderer demo, but with a couple of added functions to abstract away keys and mouse buttons. It’s hacky and there’s some stuff we still don’t understand, but it works! And by “works” I mean draws the expected demo windows, handles mouse hover and click, and handles keyboard input.

Check it out via the blog post here and on GitHub here. It’s under a permissible MIT license.


Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7:30pm ET! To join, head over to YouTube and check out the show’s live chat and our Discord!

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 38,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — New Products 11/15/2024 Featuring Adafruit bq25185 USB / DC / Solar Charger with 3.3V Buck Board! (Video)

Python for Microcontrollers – Adafruit Daily — Python on Microcontrollers Newsletter: A New Arduino MicroPython Package Manager, How-Tos and Much More! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

EYE on NPI – Adafruit Daily — EYE on NPI Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

Adafruit IoT Monthly — The 2024 Recap Issue!

Maker Business – Adafruit Daily — Apple to build another chip at TSMC Arizona

Electronics – Adafruit Daily — SMT Tip – Stop moving around!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !


No Comments

No comments yet.

Sorry, the comment form is closed at this time.