μGui · EMBEDDED GUI LIBRARY

Lightweight library.
Beautiful screens.

30+ widget families with anti-aliased rendering, a built-in animation engine and a semantic theme system — in portable C with zero heap allocation. Designed for the screens that get audited: medical devices and automotive clusters, and every industrial or consumer panel in between.

Explore the widgets Get started

  • Zero-heap, caller-owned memory
  • MISRA‑C checked
  • IEC 62304 · ISO 26262 profile
μGuiSIM‑800 · 800×480
Central patient monitor rendered by the μGui C library on an 800 by 480 panel: three sweeping waveform lanes for ECG, plethysmograph and respiration, large heart-rate and SpO2 numerals, NIBP and temperature tiles, status icons, alarms toggle and Start-NIBP button REAL C RENDER
Twin-dial automotive cluster rendered by the μGui C library on an 800 by 480 panel: speedometer and tachometer with damped needles and redlines, digital readouts, gear indicator, icon tell-tales, blinking turn signals, fuel and coolant gauges REAL C RENDER
Coffee machine front panel rendered by the μGui C library on an 800 by 480 panel: drink carousel with page dots, a mug whose foam, milk and coffee layers follow three recipe sliders, a MAKE COFFEE button with brew progress, steam, and water and bean level gauges REAL C RENDER
Smart home wall panel rendered by the μGui C library on an 800 by 480 panel: sidebar rail, round thermostat dial with plus and minus, mode chips, weekly energy bars, scene cards, shortcut toggles and device cards — switching between a light and a dark theme REAL C RENDER

Every screen on this device is the real thing — recordings of the C library rendering the example screens, frame by frame, at 1:1 pixels. Four products, one library — watch Smart Home switch its whole theme to dark at night.

30+widget families
0heap allocations
MISRA‑Cstatic-analysis checked
62304 · 26262compliance profile

Made for the screens that matter

Most GUI libraries chase phones. μGui is built for panels where a redraw glitch is a field report — and where the codebase itself gets reviewed.

Medical devices

Deterministic redraws, caller-owned memory and semantic status colours — alert, nominal and informational states are first-class palette entries, not conventions. A compliance documentation set positions μGui as SOUP under IEC 62304.

Automotive

Fixed memory footprint known at link time, no allocator to fragment, no garbage collector to pause a cluster mid-drive. Positioned as a Safety Element out of Context (SEooC) for ISO 26262 programs.

Industrial & beyond

Coffee machines, lab instruments, HVAC panels, wearables — the same premium widget set scales down to the smallest monochrome display and up to full-colour touch panels.

Why teams pick μGui

Zero-heap architecture

Every widget lives in storage you declare — a widget struct plus a small _ext struct. No malloc, no fragmentation, no out-of-memory surprises after week three in the field.

Anti-aliased everything

Arcs, polygons, rounded corners and 2 bpp fonts are all edge-blended by the rendering core. The result reads as “premium” even on a bare 320×240 panel.

Animation engine built in

Attach one ugui_anim_cfg_t and a tap darkens, lightens or colour-inverts the widget automatically. Press feedback without a single line of animation code.

Ship only what you use

Every widget family sits behind its own compile-time switch. Fonts, images, keypad support — each is a flag. Your binary contains exactly the GUI you use, nothing else.

Semantic theming

Four theme slots — accent, surface, knob, background — drive every default. Rebrand an entire product with a handful of -D flags; swap dark for light without touching a widget.

Touch and keypad, same code

Widgets respond to touch events and to keypad focus navigation through one event mask. Build once, ship with a touchscreen or with four hard keys.

Write C. Ship polish.

This is the entire program-side of a screen — real code from the widget docs, next to the exact frame it renders.

/* file-scope storage — no heap, ever */
ugui_screen_t          screen_home;
static ugui_widget_t   s_root;
static ugui_widget_t   s_box;
static ugui_box_ext_t  s_box_ext;
static ugui_text_cfg_t s_text;

/* build it */
ugui_widget_box_init(&s_root, &s_box, &s_box_ext);
ugui_text_cfg_init(&s_text, "Hello uGui",
                   &lexend_14pt_2bpp, UGUI_THEME_KNOB,
                   UGUI_ALIGN_CENTER, (ugui_point_t){0, 0}, 1u);
ugui_widget_box_set_text(&s_box, &s_text);
ugui_screen_add_widget(&screen_home, &s_box);
The rendered frame: a purple rounded box with the caption Hello uGui, centred on a 320×240 panel
Rendered by the library on a 320×240 panel — defaults included. See the full Box docs →

30+ families. One design language.

From a humble label to waveforms, tables and calendars — every family shares the same defaults, theme slots and event model. Documented families are highlighted; the rest are on the way.

Make in India. Made of widgets.

Make in India lion assembled as a mosaic of real μGui widget screenshots — calendars, gauges, toggles, tables, waveforms and more

Ready when your panel is.

Start with the widget catalog, or grab the skeleton and have a screen rendering in minutes.

Browse the catalog Get started