Hong Kong
Meridan ReportHong Kong: Gateway to Asian capital markets

Advertisement · Why this ad?

Technology

CUI – Native UI components for C

Katherine Langford
Editor-in-Chief · Monday, November 9, 2026 at 7:35 PM · 2 min read
CUI – Native UI components for C — Hong Kong Technology news
Native UI components for About 190 components, compiled to machine code with no browser or runtime inside. Windows, macOS, Linux and the web, from one C99 codebase. Get started Browse components $ git clone https://github.com/yappologistic/CUI Overview Editor Data Planning Assistant Charts Preview Code ~190 components ~250 KB a complete app < 0.25 ms per frame Win · Mac · Linux · Web one C99 codebase 0 dependencies 01 Everything a desktop app needs Not a box of primitives: complete components, designed together, that look finished without styling. Each tile below is running; click into one and use it. Browse all components Data grid Thousands of rows, sorting, filters and spreadsheet selection. Docs Command palette Fuzzy search with groups and shortcuts. Docs Node editor Pan, zoom and wire nodes together. Docs Property inspector Typed editors in folding groups. Docs Charts Lines, bars, donuts and a dozen more. Docs Chat Bubbles, replies and reactions. Docs 02 Your interface is plain C Components are functions that draw themselves and return what happened. Your variables are the state, and the whole screen is described again every frame, so there is nothing to keep in sync. How immediate mode works #include #include int main( void ) { cui_app *app = cui_app_create (&(cui_app_desc){ .title = "My app" }); if (!app) return 1 ; bool notify = true ; int clicks = 0 ; while ( cui_app_frame (app)) { cui_ctx *ui = cui_app_ui (app); cui_column (ui, .pad = 24 , .gap = 12 ) { cui_heading (ui, "Welcome" , 2 ); cui_switch (ui, "Email me when a build fails" , ¬ify); if ( cui_button (ui, "Count" , .variant = CUI_BUTTON_PRIMARY )) clicks++; cui_textf (ui, "Clicked %d times" , clicks); } } cui_app_destroy (app); return 0 ; } 03 Make it yours Light and dark, eight accents, and semantic tokens your own drawing follows too. Try them on a live page of components. Theming Light Dark Preview Code 04 Small, fast and careful Native apps should start instantly and stay out of the way. These are the numbers and rules CUI is held to. Design principles 0.1 to 0.25 ms a frame A full screen builds, lays out and paints in a fraction of a millisecond. An idle app uses no CPU. About 250 KB That is a complete app, window and fonts included. CUI draws its own components, so there is no browser, no runtime and no dependency to ship. Win32, Cocoa and X11 Or SDL2 and GLFW, drawn with OpenGL or the software renderer. The core only emits triangles, so your own renderer works too. Keyboard and reduced motion Controls take Tab, Enter, Space and the arrow keys, and each component page lists its keys. Every animation has a reduced motion path, and text meets 4.5:1 contrast. 05 Learn it in an afternoon Six short guides take you from your first window to your own components and your own renderer. Start with the first guide 01 Getting started Build CUI, open a window and learn the frame loop. Read 02 Layout Rows, columns, sizes, grids, scrolling and split views. Read 03 Theming Light and dark, eight accents, tokens, fonts and motion. Read 04 Custom components Draw your own components with the same tools. Read 05 Integration Bring your own window, input and renderer. Read 06 Design principles The rules every component follows. Read Start with one window Build CUI, open a window and draw your first components in a few minutes. Get started Source on GitHub Photograph: Ansel Adams, The Tetons and the Snake River , 1942. U.S. National Archives, public domain.
Up nextFormalizing CPythonTechnology · 6 min read
You're offline — showing the last loaded page