A minimalist andf platform-agnostic application layer for writing graphical applications, with a strong emphasis on simplicity and ease of use.

Related tags

GUI SlimApp
Overview

SlimApp

A minimalist(*) and platform-agnostic application layer for writing graphical applications.
Available as either a single header file or a directory of headers (a "unity build" setup).
Can be complied in either C or C++.

(*A bare-bone application executable on Windows measures at around 13 KB(!))

Architecture:

The platform layer only uses operating-system headers (no standard library used).
The application layer itself has no dependencies whatsoever.
It is just a library that the platform layer uses - it has no knowledge of the platform.

More details on this architecture here.

Usage:

The single header file variant includes everything.
Otherwise, specific headers can be included from the directory variant.
Only the entry point needs to be defined (see example below).

Features:

SlimApp aims to provide only the absolute bare necessities needed for a windowed application.
For a more feature rich base for a 2D/3D graphical application, see: SlimEngine.

Well documented example applications cover the features:

  • Bare-bone application (one-liner): Well-behaved window (can be resized minimized/maximized and closed)

    1_app 1_app_code

  • Overridable window defaults: Initial dimensions and title.

    2_defaults 2_defaults_code

  • Timers and window-title control:

    3_time 3_time_code

  • Drawable window content: Basic shape drawing (Lines, rectangles, triangles and circles)

    4_shapes 4_shapes_code

  • Text: String and number drawing:

    5_text 5_text_code

  • Mouse: Buttons (+wheel), cursor position/movement and 'raw' mouse input (captured outside the window).

    6_mouse 6_mouse_code

  • Keyboard: General key tracking + built-in tracking of control keys status (Ctrl, Alt, Shift, Space)

    7_keyboard 7_keyboard_code

  • Memory: Arena allocator can be used for heap memory, then bound to the global app instance.

    8_memory 8_memory_code

  • File: Opening/closing and reading/writing files in a platform-agnostic way (using os-specific API).

    9_files 9_files_code

*All input capturing for mouse and keyboard is extendable through callbacks

Issues
  • Mica support on Win32 platform

    Mica support on Win32 platform

    Adds support for a window to utilize darkmode and Windows 11-style taskbars by defining SA_Win11 before inclusion of Slimapp. Requires that the app links to dwmapi.lib

    image

    Note that the changes require Windows 11 Insider Preview 22523 or higher to work for Mica. Before 22523, the only easy way to set Mica was through an undocumented attribute.

    Not entirely sure if this is in scope, but was fun to add and figured I might as well PR it in case. Cheers!

    opened by Luminoso-256 2
Owner
Arnon Marcus
A long time enthusiast of computer graphics and programming. Veteran developer in the VFX industry, working at top studios (most recently at Weta Digital)
Arnon Marcus
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

About wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. wxWidgets allows y

null 4.4k Jun 28, 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 600 Jun 22, 2022
WMBar is a window manager agnostic status bar that aims to be lightweight, simple, extensible/modular and fast.

WMBar is a window manager agnostic status bar that aims to be lightweight, simple, extensible/modular and fast.

WMBar 1 Nov 27, 2021
GTK is a multi-platform toolkit for creating graphical user interfaces.

GTK β€” The GTK toolkit General information GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets,

GNOME Github Mirror 1k Jun 25, 2022
An efficient graphical Minecraft seed finder and map viewer.

Cubiomes Viewer provides a graphical interface for the efficient and flexible seed-finding utilities provided by cubiomes and a map viewer for the Minecraft biomes and structure generation.

null 280 Jun 22, 2022
This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain

This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed as a simple embeddable user interface for application and does not have any dependencies, a default render backend or OS window and input handling but instead provides a very modular library approach by using simple input state for input and draw commands describing primitive shapes as output.

Micha Mettke 13.4k Jul 1, 2022
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Dear ImGui (This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addit

omar 39.3k Jun 24, 2022
ROS_Melodic_Qt_GUI_Template is a Graphical User Interface programmed with Qt framework.

This is a GUI template for ros to control your robot and read data from sensors.

null 25 Jun 15, 2022
AnUI is a powerful Graphical User Interface framework made for people that actually care about design!

What's AuUI ** Project is not finished ** AuUI, an abbreviation for "Actual Understandable User Interface" is a graphical user interface framework to

Goat 4 Jun 17, 2022
Build performant, native and cross-platform desktop applications with Node.js and CSS like styling. πŸš€

NodeGui Build performant, native and cross-platform desktop applications with Node.js and CSS like styling. ?? NodeGUI is powered by Qt5 ?? which make

NodeGui 7.7k Jun 25, 2022
Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS.

?? Available Translations: ???? ???? ???? ???? ???? ???? ???? ???? . View these docs in other languages at electron/i18n. The Electron framework lets

Electron 102.3k Jun 28, 2022
Library for writing text-based user interfaces

Termbox for RT-Thread δΈ­ζ–‡θ―΄ζ˜Žζ–‡ζ‘£ This repository forks from nullgemm/termbox_next Getting started Termbox's interface only consists of 12 functions: tb_in

Meco Jianting Man 5 May 25, 2022
U++ is a C++ cross-platform rapid application development framework focused on programmer's productivity. It includes a set of libraries (GUI, SQL, Network etc.), and integrated development environment (TheIDE).

Ultimate++ Ultimate++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of librar

Ultimate++ 454 Jun 25, 2022
A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs.

webview for golang and c/c++ A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. The goal of the project is to

polevpn 12 Jun 7, 2022
Free open-source modern C++17 / C++20 framework to create console, forms (GUI like WinForms) and unit test applications on Microsoft Windows, Apple macOS and Linux.

xtd Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applicat

Gammasoft 319 Jun 22, 2022
Examples, tutorials and applications for the LVGL embedded GUI library

Examples, tutorials and applications for the LVGL embedded GUI library

LVGL 427 Jun 30, 2022
A library to create Windows, macOS, and Linux applications.

LAF: The Lost Application Framework A library to create Windows, macOS, and Linux applications. This library is under active development so we don't p

Aseprite 182 Jun 25, 2022
Change applications UI labels by hook SetDlgItemTextW(...) in user32.dll.

UI-Injection-Text Change applications UI labels by hook SetDlgItemTextW(...) in user32.dll.

null 1 Oct 24, 2021
Neutralinojs is a lightweight and portable desktop application development framework

Neutralinojs is a lightweight and portable desktop application development framework. It lets you develop lightweight cross-platform desktop applications using JavaScript, HTML and CSS.

Neutralinojs 5.7k Jul 3, 2022