Cassette is a GUI application framework written in C23, with a UI inspired by the cassette-futurism aesthetic. Built for modern POSIX systems, it's made out of three libraries: CGUI, CCFG and COBJ. Cassette is free and open-source software, licensed under the LGPL-3.0.
- Overview
- Status
- Documentation
- Dependencies
- Build and Installation
- Post-Installation
- Gallery
- Planned Features
- Third-Party Visual Resources
- Mirrors
The main component of the framework - a retained-mode X11 GUI toolkit library designed as a universal interface, equally targeting desktop, laptop, mobile, and miscellaneous devices with more or less limited inputs. All thanks to a flexible and responsive grid layout, simple widget appearance, and an advanced configuration system powered by CCFG, allowing one to tailor the theme, behavior, keybinds and input interpretation for each device class.
A configuration language and parser library featuring array based values and short s-like expressions based functions. The language's syntax aims to be both human-readable and easy to parse. Yet provides enough tools to the end user to create branching and dynamic configurations that can be modified and reloaded on the fly.
A collection of self-contained data structures and utilities shared by both CCFG and CGUI. Notably, it includes a versatile 2D UTF-8 string object with associated methods, designed for easy manipulation of strings in monospace text displays.
COBJ and CCFG Thick bindings for Ada 2012 are provided. CGUI bindings coming soon.
Warning
Cassette is currently in an Alpha stage. COBJ and CCFG (with the exception of cstr.h) are largely complete and considered stable, but CGUI remains under active development. Notably, CGUI still needs broader Unicode support—only single codepoint glyphs work reliably at the moment—and it lacks a substantial set of widgets. Although some minimal documentation exists for end users, it is also a work in progress. Ongoing development aims to address these shortcomings and expand Cassette’s feature set.
Tools:
- C23 compiler with a stdlib + POSIX 200809L
- Make
Libraries:
First, edit the makefile if you want to change the installation destinations. These are represented by the variables DIR_INSTALL_INC
and DIR_INSTALL_LIB
for the public API headers and library files respectively. By default, they are set to /usr/include/cassette/
and /usr/lib
.
Then, build and install Cassette with the following commands (Examples will also be built and placed under the */build/bin
directory of each library):
make
make install
Optional step to install CCFG vim syntax highlighting:
make install-syntax
Once you're done you can get rid of build files with:
make clean
If you want to uninstall the library:
make uninstall
By default, the CGUI library is set to use the font "Monospace" with size 14 because it currently does not ship with its own built-in font. But because the windows geometry is dependent on the font, it is recommended to customize your font before anything else. Do note, that the font must be mono-spaced since CGUI has been specifically developed around this class of font. To set it, create a configuration file ~/.config/cassette/cgui.ccfg
and add to it these two lines :
font face "FONT_NAME"
font size VALUE
Replace FONT_NAME
and VALUE
with your preferred font name and size. The font name follows the FontConfig naming convention. More font and CGUI theme configuration options can be found here. For full theme examples, check out these pre-made themes.
Add these includes to access the functions of each library :
#include <cassette/cgui.h>
#include <cassette/ccfg.h>
#incluce <cassette/cobj.h>
As well as these compilation flags :
-lcgui
-lccfg
-lcobj
Minimal examples:
More elaborate demos:
![]() |
![]() |
---|---|
![]() |
![]() |
- Proper Unicode Plane-0 EGC handling
- Improved font rendering
- Native Wayland backend
- Navigation-to-text output for screen-readers accessibility
- Drag and drop
- More cells (widgets)
- More theming options
- Complete API reference
- Step-by-step CGUI tutorial