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.
- Status
- Overview
- Documentation
- Dependencies
- Build and Installation
- Post-Installation
- Gallery
- Planned Features
- Third-Party Visual Resources
- Mirrors
Warning
Cassette is currently in an Alpha state and is actively developped on a separate branch (0.3-dev). Core features are not yet frozen, especially for CGUI. Notably, version 0.3 will upgrade its API to C23 and the UI model is completely reworked both on the end-user and API sides. Documentation, along with manpages are also currently in the works. 0.3 is also multiplatform, supporting both X11 and Wayland.
The main component of the framework, a highly-opiniated X11 GUI toolkit library directly written on top of XCB and designed to be as consistent as possible, all while 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.
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.
Some X servers (like those for for MS Windows or MacOS XQuartz) do not support visuals with 32-bit depths (needed for transparency). On these servers, CGUI may fail to initialize using the default settings. In this case, you must add the following line in your configuration (more info):
render mode forward
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



