# raysan5/raygui

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/raysan5-raygui).**

4,690 stars · 361 forks · C · zlib

## Links

- GitHub: https://github.com/raysan5/raygui
- awesome-repositories: https://awesome-repositories.com/repository/raysan5-raygui.md

## Topics

`buttons` `c` `gui` `imgui` `immediate-mode-gui` `open-source` `raylib` `ui-design` `ui-library`

## Description

raygui is a C graphics interface toolkit and immediate mode GUI library used for building interactive utility panels. It functions as a themed UI framework that renders interface controls instantly based on application logic without maintaining persistent state.

The toolkit includes a visual layout designer for managing icon sets and defining styles. It supports the application of custom themes and font data through binary files or embedded headers to modify the appearance of the interface.

The library provides standard interface controls such as buttons, sliders, and color pickers, along with interactive input boxes. It manages visual presentation through floating window containers, scrollable panels, and the integration of monochrome icons.

The project is distributed as a header-only implementation.

## Tags

### User Interface & Experience

- [Immediate Mode GUI Toolkits](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-gui-toolkits.md) — Provides an immediate mode GUI toolkit that rebuilds the interface every frame based on application logic.
- [C Language Toolkits](https://awesome-repositories.com/f/user-interface-experience/c-gui-toolkits/c-language-toolkits.md) — Provides a portable graphical user interface library written in C for building utility panels.
- [Immediate-Mode Rendering](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-rendering.md) — Employs an immediate-mode rendering architecture that rebuilds the entire UI state every frame.
- [Input Controls](https://awesome-repositories.com/f/user-interface-experience/input-field-enhancements/input-field-initializers/styled-input-fields/input-controls.md) — Renders interactive widgets such as sliders and input boxes for user data entry. ([source](https://github.com/raysan5/raygui/tree/master/examples))
- [Standard UI Control Sets](https://awesome-repositories.com/f/user-interface-experience/standard-ui-control-sets.md) — Provides a pre-defined collection of common interface elements including buttons, sliders, and color pickers. ([source](https://github.com/raysan5/raygui/tree/master/examples))
- [Stateless Interaction Logic](https://awesome-repositories.com/f/user-interface-experience/stateless-interaction-logic.md) — Calculates user interactions and visual output on the fly by comparing input coordinates with control bounds.
- [User Interface Design](https://awesome-repositories.com/f/user-interface-experience/user-interface-design.md) — Provides tools for designing interactive layouts with standard widgets to collect user input and display data.
- [Visual Style Customization](https://awesome-repositories.com/f/user-interface-experience/visual-style-customization.md) — Implements mechanisms for loading custom themes and font data from binary files or headers to modify the overall appearance. ([source](https://github.com/raysan5/raygui/blob/master/styles/default))
- [Application Window Managers](https://awesome-repositories.com/f/user-interface-experience/application-window-managers.md) — Renders floating window containers to organize and isolate different sections of the interface. ([source](https://github.com/raysan5/raygui/tree/master/examples))
- [Interactive Control Panels](https://awesome-repositories.com/f/user-interface-experience/interactive-control-panels.md) — Enables the creation of functional dashboards and toolsets with scrollable panels for real-time software control.
- [Scrollable Containers](https://awesome-repositories.com/f/user-interface-experience/scrollable-containers.md) — Provides containers that allow users to navigate content exceeding the visible screen area through scrolling. ([source](https://github.com/raysan5/raygui/tree/master/examples))
- [Styled Properties](https://awesome-repositories.com/f/user-interface-experience/styled-properties.md) — Allows for the customization of visual properties for specific interface controls via a dedicated styling system. ([source](https://github.com/raysan5/raygui/blob/master/HISTORY.md))
- [Runtime Style Updates](https://awesome-repositories.com/f/user-interface-experience/styling-theming-systems/content-styling/component-styling-tools/component-styling/runtime-style-updates.md) — Enables the modification of colors, fonts, and metrics across the interface using a styling system that updates at runtime. ([source](https://github.com/raysan5/raygui#readme))
- [Theme Customizations](https://awesome-repositories.com/f/user-interface-experience/theme-customizations.md) — Provides mechanisms for applying custom visual styles, fonts, and icons to create a branded appearance.
- [UI Theming Frameworks](https://awesome-repositories.com/f/user-interface-experience/ui-theming-frameworks.md) — Provides a system for customizing visual appearance using external binary themes and font data.

### Part of an Awesome List

- [Game Development Tools](https://awesome-repositories.com/f/awesome-lists/devtools/game-development-tools.md) — Designed for building internal utility panels, debug menus, and configuration editors for games.

### Development Tools & Productivity

- [Header-Only Libraries](https://awesome-repositories.com/f/development-tools-productivity/header-only-libraries.md) — Distributed as a single-file header-only library to eliminate external linking dependencies.
