✔️The smallest header-only GUI library(4 KLOC) for all platforms

Overview

Welcome to GUI-lite

Logo

The smallest header-only GUI library (4 KLOC) for all platforms.

Why GuiLite

Lightweight

  • ✂️ Small: 4,000+ lines of C++ code, zero dependency, header-only(GuiLite.h)

  • Fast: High Rendering performance, even work on MCU

  • 👫🏻Compatible: Work smoothly with 3rd party frameworks(Qt/MFC/Winform/Cocoa/Web)

  • ⚙️ ️Hardware Minimum Requirements:

    Processor Disk/ROM space Memory
    24 MHZ 29 KB 9 KB

Cross platform

  • Supported OSes: iOS/macOS/WatchOS, Android, Linux, Windows, RTOS... or MCU without OS
  • Supported languages: C/C++, Swift, Java, Javascript, C#, Golang...
  • Supported 3rd party libraries: Qt, MFC, Winforms, CoCoa...

Hero features

  • ☁️ Cloud + IoT Solution: master your IoT business all over the world
  • 🔣 Multi-language, supports UTF-8; 📀 Playback Video
  • 🔨 Toolkit for building font/image resources
  • 📐 Layout GUI WYSIWYG
  • 📊 Code Telemetry and Analysis in real time(remove .sh/.bat files if dislike to share)
  • 📦 Supports 3D and Web
  • 🐋 Run in docker with a single command: sudo docker run -it --privileged -v /dev:/dev-share idea4good/gui-lite:latest bash /run.sh

Easy to learn and support

Even a C beginner could master GUI-lite quickly. The source code only uses basic C++ features (class, virtual function). We chose C++ as it could make the code size significantly smaller and easier to read.

Demo wall

  • Zero dependency, 100% build pass & runnable
  • Click the demo you like, and run it on your hardware
  • Most of the demos have about 100 lines of UI code, code repository is here.

MCU platform



3D on STM32

Wave on STM32

Particle on STM32

Star on STM32

3D wave on STM32

Keyboard on STM32

Mario on STM32

3D circle on STM32

3D donut on STM32

Timer

Molecule move

Pendulum effect

IoT feature



Monitor IoT device on cloud

Code Telemetry & Analysis in real time

Track IoT device over the world

Multi-language, Design tool and video



Lattice Font

Freetype Font

Layout GUI

Render JPG file quickly

Play video with FFmpeg

Widgets & Controller



Emulate Windows UI

Scroll widget

How to use widgets

3D Nets on Windows/Linux

Transparent dialog

Swipe view

Cross platform



HostMonitor on Windows

HostMonitor on Mac

HostMonitor on Android

HostMonitor on Windows Mixed Reality

HostMonitor on Linux

3D on Web

3D on Web

HostMonitor on iPhone

How display work

Apple platform



3D on Apple Watch

Wave on Apple Watch

Particle on iPhone

📞 Community Channel

Thanks for the help from the community, you all make GUI-lite better! And welcome to any new friend to join us.


開發群 🔑 :938682319
Comments
  • Documentation?

    Documentation?

    I really want to use this since I can't use Qt or wxWidgets and this looks like it would solve my problems. However, all I can find are some fairly complicated examples and images of code snippets with almost no context.

    opened by RecursiveDescent 14
  • GuiLite examples capturing users name and sending to external site

    GuiLite examples capturing users name and sending to external site

    GuiliteExamples is capturing the users logged in name in the script sync_build.bat and sending to external site. Looks very malicious, because tehere is no reason to capture the user name and send it via curl.exe to an external site.

    What called my attention is the inclusion of curl.exe in each sub directory. Why would you have to go to an external site to compile an example.

    Users should also be very suspicious of exec on GuiLiteSamples root directory where an exec GuiLiteToolkit.exe is located whithout much (any) documentation.

    opened by arneves 6
  • reserved identifier violation

    reserved identifier violation

    I would like to point out that identifiers like “_API_H_” and “_DISPLAY_H_do not fit to the expected naming convention of the C++ language standard. Would you like to adjust your selection for unique names?

    opened by elfring 4
  • Example for UWP?

    Example for UWP?

    Windows.UI.ViewManagement have official support of Compact Overlay (PIP) that won't disappear if you Win+D (Show Desktop)..

    Would like to learn how to integrate it with Visual Studio UWP project. Normal/ Classic desktop app can't call the API to switch to PIP mode.

    Windows.UI.ViewManagement compact Overlay 只能從 UWP project使用, Desktop App, Desktop Bridge, 和 Microsoft centennial (同名應該),都無法使用。

    C++ 我沒啥經驗,求指導,和demo.

    opened by meteorsnows 2
  • Make include guards unique

    Make include guards unique

    I find that include guards like “API_H” and “MSG_H” are too short for the safe reuse of your header files (when they belong to an application programming interface).

    opened by elfring 2
  • Need source for the xWindow to build for Linux on other processors

    Need source for the xWindow to build for Linux on other processors

    Every one of the samples comes with an xWindow ELF binary.

    image

    I don't see the source or build instructions for this file. We are running a recent version of Ubuntu on a non-x86 processor and would like to do some better GuiLite experiments. Writing directly to the physical /dev/fb0 technically "works" but is officially unsupported and not promised to remain working. We also don't get a mouse that way. X11 is installed, but there is no desktop running.

    opened by RolandHughes 1
  • use custom title bar in window

    use custom title bar in window

    Hi thank you for great project I always looking for a good small gui library. I'm just thinking about one thing... Is it possible to remove the default window title bar (frame) and create a new one for it (just like how we can do it in qt).

    opened by Detector-I 1
  • Waveform sample in QT widget

    Waveform sample in QT widget

    Hi,

    I liked GuiLite project and the sample which you have showcased is awesome. I'm a QT developer i have checked the samples and didn't found the waveform drawing in QT application. Is waveform drawing is possible in QT widget?. I have planned to use this toolkit for drawing audio waveform please suggest me, how we can use it in QT widget.

    Thanks, Sundaram

    opened by ameenakshi06 1
  • Use std::max and std::min instead of custom macros

    Use std::max and std::min instead of custom macros

    Hello,

    since this library uses C++, is there a specific reason not to use std::max and std::min, which IMHO are superior to defining custom macros:

    #define MAX(a,b) (((a)>(b))?(a):(b))
    #define MIN(a,b) (((a)<(b))?(a):(b))
    

    Just a small suggestion I stumbled upon spontaneously :)

    opened by Raincode 1
  • Change wording in readme

    Change wording in readme

    The wording here is not so good. People are interested in if it is multi-platform or not, not if it could be multi-platform. Same with the works inside other platforms. If it does not then remove the sentences completely. Very interesting project, thank you for sharing.

    opened by hhirsch 1
  • Linux/arm64/v8

    Linux/arm64/v8

    Logged into a Toradex ARM device and tried pasting your docker command. guilite-toradex-fail

    In case one has trouble seeing the image.

    verdin-imx8mp-06848973:~$ docker run -it --privileged -v /dev:/dev-share idea4good/gui-lite:latest bash /run.sh
    Unable to find image 'idea4good/gui-lite:latest' locally
    latest: Pulling from idea4good/gui-lite
    docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
    See 'docker run --help'.
    verdin-imx8mp-06848973:~$
    
    

    There are now quite a few Linux/arm64/v8 devices out there. You should probably build a container for them.

    https://www.reddit.com/r/raspberry_pi/comments/gs6omd/raspberry_pi_os_for_arm64_finally_released/

    opened by RolandHughes 0
  • can you support the customized key board

    can you support the customized key board

    Hi, 因为开发设备的需要,希望能够在我们这个 guilite中添加自定义按键的分发功能。 原先代码仅支持上下键和确认键,我似乎没有办法,把我获得的其他按键分发给指定的BUTTON。 比如我的UI 布局类似: BUTTON 1 BUTTON 2 BUTTON 3

    然后我按下1键,需要BUTTON 1执行动作。 用例里也没有看到列表框或者表格框一类的组件可以使用。 有什么建议吗?

    opened by turbin 2
Releases(v2.1)
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Dec 2, 2022
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

null 95 Nov 19, 2022
A single-header ANSI C immediate mode cross-platform GUI library

Nuklear This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed a

Immediate Mode UIs, Nuklear, etc. 6.3k Dec 2, 2022
A barebones single-header GUI library for Win32 and X11.

luigi A barebones single-header GUI library for Win32 and X11. Building example Windows Update luigi_example.c to #define UI_WINDOWS at the top of the

Nakst 232 Nov 14, 2022
A wallpaper changer using Wallhaven api. Written with C++/CLR, only 0.5 MB and have a GUI.

WHaven Wallpaper WHaven Wallpaper is a desktop wallpaper change program for change your wallpapers directly from wallhaven. Features You have a search

null 2 Aug 1, 2022
Elements C++ GUI library

Elements C++ GUI library Introduction Elements is a lightweight, fine-grained, resolution independent, modular GUI library. Elements is designed with

Cycfi Research 2.4k Nov 30, 2022
Minimalistic C++/Python GUI library for OpenGL, GLES2/3, Metal, and WebAssembly/WebGL

NanoGUI NanoGUI is a minimalistic cross-platform widget library for OpenGL 3+, GLES 2/3, and Metal. It supports automatic layout generation, stateful

Mitsuba Physically Based Renderer 1.1k Nov 25, 2022
A library for creating native cross-platform GUI apps

Yue A library for creating native cross-platform GUI apps. Getting started Documentations FAQ Development Examples Sample apps (with screenshots) Muba

Yue 2.8k Nov 25, 2022
Minimalistic GUI library for OpenGL

NanoGUI NanoGUI is a minimalistic cross-platform widget library for OpenGL 3.x or higher. It supports automatic layout generation, stateful C++11 lamb

Wenzel Jakob 4.2k Nov 30, 2022
raygui is a simple and easy-to-use immediate-mode-gui library.

raygui is a simple and easy-to-use immediate-mode-gui library.

Ray 1.9k Nov 28, 2022
Cross-platform GUI library

Harbour Nuklear backend This backend provides support for Nuklear. It works on on all supported platforms with an OpenGL backend, including iOS and An

Rafał Jopek 2 Jan 19, 2022
Fishui - CutefishOS GUI library, based on Qt Quick.

FishUI FishUI is a GUI library based on QQC2 (Qt Quick Controls 2), every Cutefish application uses it. Features Light and Dark Mode Borderless window

CutefishOS 199 Nov 20, 2022
libui-ng: a portable GUI library for C

libui-ng: a portable GUI library for C Fork of andlabs/libui. This README is being written. Status See CHANGELOG.md Old announcements can be found in

null 242 Nov 22, 2022
Nana is a C++ standard-like GUI library

Nana C++ Library Linux (gcc 8.3.0 and 9.2) including (nana-demos) Windows (Microsoft (R) Build Engine version 15.9.21) Nana is a C++ standard-like GUI

Jinhao 2.1k Nov 22, 2022
Examples, tutorials and applications for the LVGL embedded GUI library

Examples, tutorials and applications for the LVGL embedded GUI library

LVGL 441 Nov 11, 2022
Addon widgets for GUI library Dear ImGui.

ImGui-Addons Addon widgets for GUI library Dear ImGui. File Dialog A simple cross-platform file dialog that uses dirent interface for reading director

null 278 Nov 24, 2022
FlatUI is a immediate mode C++ GUI library for games and graphical applications.

FlatUI is a immediate mode C++ GUI library for games and graphical applications. Go to our landing page to browse our documentation.

Google 610 Nov 19, 2022
HastyBadger is a branch of the excellent widget and GUI library Turbo Badger.

Branch Notice - HastyBadger Hasty is not Turbo. HastyBadger is a branch of the excellent widget and GUI library Turbo Badger. Notabe additions are c++

Michael Tesch 38 Nov 17, 2022
The HorusUI library allows you to quickly develop GUIs for your applications by leveraging the ease of use provided by immediate mode GUI concepts.

Immediate Mode Graphical User Interface for Tools OVERVIEW The HorusUI library allows you to quickly develop GUIs for your applications by leveraging

null 132 Nov 18, 2022