Cherry is a modern, minimalist framework for building cross-platform application interfaces in C++ (with support for other languages coming soon).
It avoids heavy web technologies and bloated solutions, focusing instead on being simple yet complete, powered by ImGui, Vulkan, and SDL.
Whether you’re a beginner or an experienced developer, Cherry makes it easy to create real, efficient, and professional interfaces.
Important: Cherry is part of Infinite's initiative to create free, independent, and ethical technology and computing. Cherry is a library powering many parts of this project, but maintaining libraries like Cherry is a time-consuming and costly process. If you appreciate Cherry, you can support us on our funding page if you can.
- 🧰 80+ Components, easy and ready to use
- 🎨 20+ Style effects & utilities, including colors, sizes, padding, and layout management
- 🌈 8 Built-in themes, with full color palettes and properties
- 🛠️ Unlimited customization: create your own components, style effects, and themes, either through the low-level drawing API for maximum control, or from prefabricated building blocks for faster development
- 📦 Many examples and ready to use windows, concepts.
- 📦 Many logics and interaction utils like input detection, key managment, double click, Ctrl+C etc...
- 📦 Complete and simple API with Sound managment, web asset fetching, rendering possibilities, traduction managment etc...
Core engine
- 🔊 Sound engine
- 🎨 Themes manager, Dark & Ligth themes
- 📈 Data handler for windows & components
- 🌍 Localization & Translation management
- 🔤 Fonts management
- 🌐 Network media & Web assets
- 📦 Assets management
- 🖼️ Images & textures manager
- 🗂️ Menubar & Bottombar simple callbacks
- 💪 Custom window close behaviors
- 🗄️ Advanced Docking
- 🖼️ Toasts, Notifications & pop-ups
- 🛠️ Behaviros callbacks (closing, moving, etc...)
- 🏗️ Windows customisations (size, colors, properties & styles)
Backends
- 🛠️ Multi context with contexts cohesion & communication (ImGui/SDL)
- 🛠️ Complete image load & show, cache & optimization
- 🛠️ Window builder
Note
This framework is new and still under active development, so some bugs may occur, and content is subject to change. We are also working to improve the overall stability of Cherry, particularly with regard to memory safety and the rendering stack, as well as the graphical libraries used. Thank you for your understanding! Stay tuned :)
Warning
The only dependance you need to compile Cherry is the VulkanSDK installed & ready. Please refer to the https://www.lunarg.com/vulkan-sdk/ website to see how install Vulkan on your system (compatible on Linux & Windows).
🪟 On Microsoft Windows
git clone https://github.com/infiniteHQ/Cherry cd Cherry git submodule update --init --recursive cd examples/hello build.bat .\build\bin\hello.exe
🐧 On Linux based distributions
git clone https://github.com/infiniteHQ/Cherry cd Cherry git submodule update --init --recursive cd examples/hello bash build.sh ./build/bin/hello
Congratulations! If everything is working well, you can now start in the Cherry environment. Please follow our documentation. If you encounter any issues, feel free to ask your question or reach out to us on Discord!
Technology | Windows | Linux | Linux DRM | macOS | iOS | Android | Web |
---|---|---|---|---|---|---|---|
Vulkan | ✅ | ✅ | 🟧 | ✅ | ❌ | ❌ | ❌ |
✅ : Fully compatible
🟧 : Not fully tested, partially incompatible but planned
❌ : Not planned, incompatible (for the moment...)
Cherry is already used in real-world projects, such as:
Note
More examples and previews will be uploaded soon.
- For all contributors of SDL2
- For all contributors of Vulkan/VulkanSDK
- For all contributors of STB
- For the log library of gabime and contributors (https://github.com/gabime/spdlog)
- For the json library of nlohmann and contributors (https://github.com/nlohmann/json)
- For the amazing immediate mode interface ImGui from Ocornut and contributors (https://github.com/ocornut/imgui)
- For the work of from "Studio Cherno" on Walnut (https://github.com/StudioCherno/Walnut)