MiniGUI Overview

A mature cross-platform windowing system and GUI system for embedded and/or IoT devices.

Introduction to MiniGUI

What's MiniGUI

MiniGUI is a mature cross-platform windowing system and GUI (Graphics User Interface) support system for embedded systems and/or IoT devices.

MiniGUI is released under GPL and the dual-licensing applies to commercial use.

MiniGUI aims to provide a fast, stable, full-featured, and cross-platform windowing and GUI support system, which is especially fit for embedded systems or IoT devices based-on Linux/uClinux, eCos, and other traditional RTOSes, such as VxWorks, ThreadX, Nucleus, pSOS, uC/OS-II, and OSE.

Besides MiniGUI core, FMSoft also provides some components for the developers to develop app much easier:

  • mGPlus: A MiniGUI component which provides support for advanced graphics functions like path, gradient, anti-aliased stretch, and color combination.

  • mGNCS: This component provides a new control set for MiniGUI app. By using mGNCS, you can use miniStudio to develop MiniGUI app in WYSIWYG way.

  • mGEff: mGEff provides an animation framework for MiniGUI app. It also provides some popular UI/UE special effects.

  • mGUtils: A MiniGUI component which contains miscellaneous utilities like ColorSelectionDialogBox, FileOpenDialogBox, and so on.

  • mGi: An input method component for MiniGUI. This component provides some typical input methods (such as soft keyboard, hand-writing, and predict text input for mobile phone) for MiniGUI apps.

There are also some legacy MiniGUI components:

  • mGp: A printing component for MiniGUI. By using mGp, you can print out the graphics created by MiniGUI app to general-purpose printers.

  • mG3d: A simple three-dimension component for MiniGUI. This component provides a simple 3D API for app. You can use mG3d to create simple 3D UI.

MiniGUI is a free software project. In December 1998, the founder of FMSoft, Wei Yongming, began to develop MiniGUI under the GNU General Public License (GPL). In September 2002, the core developers of MiniGUI founded FMSoft and started the commercial marketing with the free software. By now, FMSoft still continues to release MiniGUI as a free software project.

You can download the official source code tarballs of MiniGUI and its components from the site:

FMSoft also created the public repositories for MiniGUI core, MiniGUI components, and other open source apps on GitHub. You can visit them on:

History of MiniGUI

About twenty years have pasted since MiniGUI was initially created at the end of 1998, and now it becomes much reliable and stable. During the past years, many remarkable changes have taken place in the MiniGUI project.

At the original, the version 0.2.xx was based on SVGALib and PThread (LinuxThreads). Then the version 0.3.xx had many enhanced features including Graphics Abstract Layer (GAL), Input Abstract Layer (IAL), and the support for multiple charsets and multiple fonts.

In version 1.0.00, we designed MiniGUI -Lite, which was more fit for some complex embedded systems, such as PDAs, Thin-Clients, or STBs. MiniGUI -Lite made the embedded systems more stable and efficient. The version 1.0.00 provided the native fbcon engine based on Linux frame buffer device directly as well.

In the development of version 1.1.00, we re-wrote the GAL and GDI interfaces, and provided some advanced video features, such as raster operation, transparent blitting, alpha blending, and video hardware acceleration. We also provided some important GDI functions, such as Ellipse, Arc, Polygon, and FloodFill.

In the development of version 1.6.0, we added advanced 2D graphics functions to MiniGUI. It provides the abstract logical pen and brush objects, and can be used to render advanced graphics objects.

In the development of version 2.0.x, we developed MiniGUI -Processes.

In the development of version 3.0.x, we introduced Look & Feel Renderer, BIDI text support, No-rectangular window, double-buffer window, and other main features.

A brief history description of the development progress lay below:

  • In December 1998, WEI Yongming began to develop MiniGUI, and applied it in a computerized numerical control (CNC) system.

  • In March 2000, Lenovo adopted MiniGUI to develop the installer for HappyLinux V1.0 (a Linux distribution).

  • From Apr. 2000 to present, MiniGUI is being developed and released under the GPL license.

  • In Sep. 2002, the main developers of MiniGUI founded Beijing FMSoft Technologies Co., Ltd., and started the commercial marketing with free software (Dual Licensing).

  • MiniGUI V1.2.6 and MiniGUI V1.3.0 were released in May 2003 and Sep. 2003 respectively.

  • In Oct. 2004, MiniGUI was ported to the VxWorks and eCos. Thus, MiniGUI had become a cross-OS embedded GUI system.

  • In 2006, FMSoft released MiniGUI V2.0.
    • MiniGUI -Processes runtime mode
    • Unicode support

  • In 2010, FMSoft released MiniGUI 3.0.
    • Look & Feel Renderers
    • BIDI text support
    • Double-buffer

  • In 2012, FMSoft released miniStudio, the WYSWYG IDE for MiniGUI.

  • In 2017, FMSoft released new open-source apps/components for MiniGUI ecosystem:
    • mDolphin is a WebKit-based browser; licensed under Apache 2.0.
    • mGPlus provides support for advanced graphics functions like path, gradient, anti-aliased stretch, and color combination; licensed under GPL.
    • mGEff provides an animation framework for MiniGUI apps; licensed under GPL.
    • mGNCS provides a new control set for MiniGUI apps. It simplified the development of MiniGUI apps. Licensed under GPL.

  • In the near future, FMSoft will release miniStudio as a share software, any MiniGUI developer can use it for free.
    • Windows
    • Ubuntu Linux

Advantages of MiniGUI

  • Support for Multiple Operating Systems
  • Excellent Portability and Great Scalability.
    • Monochrome to true-color display.
    • With or without video acceleration.
    • Keypad or touch panel.
    • Local charset or Unicode.
    • 100MHz to 1GHz CPU.
  • Best Balance between Performance and Functionality
  • Flexible Configurability
  • A large number of successful cases
    • Tens of millions of shipments of feature phones.
    • Millions of shipments of digital photo frames.
    • Millions of shipments of industry devices.
  • Minimal footprint:
    • 100MHz CPU
    • Runtime RAM consumption: 1MB
    • Static/shared library: 500KB~900KB

Highlights of MiniGUI

Runtime modes

You can configure and compile MiniGUI as one of three runtime modes:

  • `MiniGUI-Threads': A program running on MiniGUI -Threads can create multiple cascaded windows in different threads, and all the windows belong to a single process. MiniGUI -Threads is fit for some real-time systems on Linux/uClinux, eCos, uC/OS-II, VxWorks, pSOS, ThreadX, and OSE.

  • `MiniGUI-Processes': A program running on MiniGUI -Processes is an independent process, which can also create multiple windows. MiniGUI -Processes is fit for some complex embedded systems, such as PDAs, Thin-Clients or STBs. This mode is only useful for full-featured UNIX-like operating systems, such as Linux.

  • `MiniGUI-Standalone': A single process version of MiniGUI. This mode is useful for some small systems, like uClinux or RTOSes.

The original MiniGUI (version 1.0) run in MiniGUI -Threads mode. It is based on POSIX-compliant thread library. And this thread-based architecture of MiniGUI is very fit for most traditional embedded operating systems, such as eCos, uC/OS-II, and VxWorks. However, if you use embedded Linux, the architecture like X Window will have better stability and scalability, because of the independent memory address space of every process.

Since version 2.0, we provides a new runtime mode called MiniGUI -Processes. You can use MiniGUI -Processes to run more than one MiniGUI -based program in the form of UNIX process at the same time. MiniGUI -Processes is a full-featured multi-process version of original MiniGUI -- You can run a program based on MiniGUI -Processes from a program called 'mginit'. Just like X Window, the former process is called a client, and the latter the server.

Clients connect to the server via UNIX domain socket, and the server receives and responses requests from clients. The server provides shared resources for clients, manage window objects, and sends mouse (or touch screen) and keyboard events to the active top-most client. If a client exits or dies for some reasons, it will not damage other clients and the server.

Support for multiple charsets

  • ISO8859-1 ~ ISO8859-15

Support for multiple font types

  • MiniGUI defined font types: RBF and VBF.
  • MiniGUI defined Unicode Pre-rendered fonts (UPF).
  • Qt Pre-rendered fonts (QPF).
  • TrueType.
  • User-defined BITMAP fonts.

Support for various graphics output devices

  • All types of display mode
  • All types of LCD controller
  • YUV output device like TV set

Support for various input devices

  • Keyboard/keypad
  • Touch-panel
  • Remote controller

Common controls:

  • Label, button, single-line and multi-line edit boxes, list box, combo box, progress bar, property sheet, toolbar, track bar, tree view, list view, month calendar, grid view, icon view, animation, and so on.

Look and Feel Renderer

  • To customize the appearance of MiniGUI windows and controls.
  • Four built-in LF renderers
    • Classic: Windows style appearance.
    • Fashion: macOS style appearance.
    • Flat: use for gray screen.
    • Skin: render MiniGUI windows/controls by user defined pictures.
  • Developer can develop his/her own LF renderer
  • The metrics, color, font, and icon of window elements can be customized.


  • Use universal virtual frame buffer to develop MiniGUI apps on desktop computer.
  • Support for common GUI elements, including menu, acceleration key, caret, timer, etc.
  • Support for multiple keyboard layouts.
  • Support for built-in resources. Thus, MiniGUI can be used on some embedded systems without file systems.
  • Special support for embedded systems, including the common I/O operations, byte-orders related functions, touch screen calibration interface, and so on.

Successful Cases

  • Huawei
    • Digital Photo Frames
  • Leadcore
    • 3G feature phone solution (Arena)
  • RDA
    • 3G feature phone solution
  • Industry Leaders
    • ABB, Bosch, Mindray, HIKVISION, Nanrui

MiniGUI Ecosystem

Open source apps on MiniGUI


mDolphin is a full-featured WEB/WAP browser, which is developed based on the open source browser core WebKit and uses MiniGUI as its underlying graphics support system. You can use mDolphin in feature phone, Mobile Internet Device (MID), video telephone, IPTV and other products. mDolphin conforms with the latest WWW standards and specifications, like HTML 5, CSS 3, and so on.

In Aug. 2017, FMSoft released the source code of mDolphin under Apache 2.0 license.


This software intends to provide a total solution for PMP (Portable Multimedia Player), which uses MiniGUI as the embedded graphics platform.

In Nov. 2017, FMSoft released mGallery under Apache 2.0 license.


This software intends to provide a light-weight MiniGUI -based web browser (HTML 3.2 and part JavaScript).

FMSoft releases mSpider under GPL 3.0 license, because mSpider is derived from Dillo, a GPL'd web browser project.


mEagle is an embedded GIS development platform which addresses the needs of map browse, query, analysis, etc.


miniStudio is a kind of integrated development environment oriented MiniGUI. miniStudio provides WYSIWYG UI design for users and can generate and maintain MiniGUI -based software projects automatically. miniStudio is based on Eclipse, you can use miniStudio to edit, compile, run, debug, and accelerate the development of MiniGUI apps.

We introduce mGNCS (the new control set for MiniGUI) when we develop miniStudio. We implement mGNCS in object-oriented concept but use C language. mGNCS standardizes the control’s API, refactor the redraw mechanism of the controls. Additionally, developers can design new controls based on mGNCS and import them into miniStudio easily.

Note that miniStudio is not an open source software. miniStudio is a shareware, all people can download it and use it for free. For more information, please visit:

Other Information

The original author of MiniGUI is WEI Yongming, and now MiniGUI is maintained by FMSoft. For more information, please browse our home page:

If you have any technical problem, advice or comment, please send messages to

Commercial Use

MiniGUI and its components are licensed under the GPL license. So any links about MiniGUI must follow GPL. If you cannot accept GPL, you need to be licensed from FMSoft. If you wonder that if you need the commercial license of MiniGUI, please refer to the LICENSE.POLICY file.

We provide you the commercial license of MiniGUI according to the number of the run-time binary copies of MiniGUI. If you are interested in the commercial license of MiniGUI, please write to

-- Vincent Wei - 2017-11-20


Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r3 - 2017-12-12 - YongmingWei
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback