MiniWin open source embedded window manager - update

Not open for further replies.

Thread Starter


Joined Feb 2, 2018
Three years ago I posted details about my (at the time) newly released open source project, MiniWin, a window manager for small embedded systems with a touch screen display. It got a rather hostile and dismissive response from one poster here (both in public and in private messages) which rather put me off this forum (it turned out he sells a commercial closed source UI framework, which explains a lot).

However, it didn't put me off my project, and it has grown a lot since then. Three years ago it was targeted at two ST development boards and only 1 compiler, GCC. Since then it has been ported to the following...

  • NXP development board using a LPC Cortex M4 device
  • Renesas development board using a RX processor built with commercial Renesas CC-RX and free GCC-RX compilers
  • Microchip PIC32 development boards using MX and MZ processors built with XC-32 compiler
  • Espressif development board using ESP-32 processor built with ESP-IDF
  • Arduino IDE projects using ESP-32 DevKitC and shortly to come Arduino Due boards
  • Raspberry Pi Zero and shortly to come Raspberry Pi Pico with M0 processor boards built with GCC
  • Linux simulator built with GCC or clang compilers
  • Windows simulator built with GCC, clang or Microsoft cl compilers

The number of sample projects has expanded to 8 for each hardware target/compiler variant (a total of 120 example projects) with FatFS file system, FreeRTOS and an OV7670 video camera integration in the examples. The MiniWin and application and UI code is common for all hardware variants, only a small hardware abstraction layer differs.

A code generator has been developed which takes a UI specification in JSON and creates all UI source code as well as application code for Windows and Linux simulators and Arduino IDE. There's a collection of example JSON configuration files to expand upon.

The actual user interface has not changed much in the last 3 years. 3D look, tab and tree controls, and TrueType font support have been added as well as a collection of standard dialogs. The aesthetics of the UI is basic, but as it's all open source, it's easy to modify a dialog's or control's paint function to change its appearance.

MiniWin has some features particular to small embedded systems:

  • It uses no dynamic memory
  • It requires no display shadow buffers
  • It has reached MISRA 2012 compliance for all 'required' features - both the MiniWin code and the code generator generated code.
  • Compiles without warning with strict ISO C99 compliance enabled (-std=c99 for GNU/clang based compilers)

The fundamental design philosophy of MiniWin has not changed - to be simple to use, easy to understand and able to be user modified. A criticism from the aforementioned poster was that I was not using "the true power of and black art of C". That's deliberate. I want no 'black art' in this project, just easy to follow well documented professional standard code. It's not as performance oriented as it could be, I know that, but it's reliable and works, quick to get going, and works well on small low resource devices that it's designed for. MiniWin is now used in a variety of commercial products, all for free.

There's a website here...

and the git repo is here...

The repo is a big download, but you can delete all the example projects for hardware variants you're not interested in. If anyone can think of, or would like to see, a port to other processor architectures or variants, let me know. I've held off doing a 16 bit processor variant port as they seem to be dying a death with the likes of 32 bit Picos and ESPs being so cheap.

It's all MIT licensed, so do what you want with it, just don't claim it's yours or prevent me from doing what I want with it.
Last edited:


Joined Aug 21, 2008
This post is being considered for the finished projects collectiom. It is not open for comment at this time.
@Wendy would you please offer instructions to the TS (miniwinwm) so they can add this to the completed projects collection, or if necessarty move it there?
Last edited:
Not open for further replies.