A Python-first — Declarative-Mode — Backend-Agnostic — UI Library
Project description
What is CoshUI?
CoshUI is a Python-first, declarative UI library inspired by CSS, Godot, and Dear ImGui. Unlike most Python UI libraries, CoshUI is fully backend-agnostic — write your UI once and render it with Pygame, Raylib, ModernGL, or any backends you build or are supported.
CoshUI features:
- Full layout engine with flexbox-inspired sizing
- Retained-state reconciliation system
- Tween animation with configurable easing
- Signal-based event model
- Theme system with class support
- CoshML — a markup language for rich inline text styling
- Built-in debugger with live node inspector and profiler
- And more...
All within in a declarative API that's simple to pick up without sacrificing flexibility.
How to Install
pip install coshui
CoshUI is backend-agnostic — install with your renderer of choice:
# Pygame
pip install coshui[pygame]
# Raylib
pip install coshui[raylib]
# ModernGL
pip install coshui[moderngl] # or [moderngl-mglw]
# PyOpenGL
pip install coshui[pyopengl]
# All
pip install coshui[all]
How to Use
CoshUI uses Python's context managers to define UI hierarchy through indentation — familiar if you've worked with HTML or CSS:
import coshui as cui
# Within your loop
with cui.CoshUIRenderer(...):
with cui.Container(id="main_container", width=cui.FILL, height=cui.FILL, direction=cui.COLUMN, align=cui.ALIGN_CENTER, justify=cui.JUSTIFY_CENTER, gap=20):
cui.Label(id="menu_label", text="CoshUI", width=200, height=50, font_size=64)
cui.Button(id="print_btn", text="Print Hello World!", width=210)
cui.Button(id="color_btn", text="Change Color!", width=210)
# Listen for signals
if cui.get_signal("print_btn", cui.CLICKED):
print("Hello World!")
# Animate with one line
if cui.get_signal("color_btn", cui.CLICKED):
cui.animate("background_color", "main_container", (200, 200, 200), 1.5, "ease_in_out")
To learn more, check out the examples or visit the documentation.
Documentation
CoshUI's documentation features the basic API coverage and all you need to know about how to use it. It can be viewed here.
Contributing
CoshUI is primarily developed on GitLab. Please open issues and pull requests there.
To learn more about how to contribute, check the contributing markdown.
Author
Main Developer and Maintainer: Jyle Frazier (Terra) Villareal
Contact
- GitLab: JyleFV
- GitHub: JyleFV
- X/Twitter: @JyleFV
- Discord: CoshUI
- Email: jylefraziervillareal@gmail.com
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file coshui-0.3.2.1.tar.gz.
File metadata
- Download URL: coshui-0.3.2.1.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc1e395b2da0e216724265de97f13a54be65b6f628a549d90024831736d81ebd
|
|
| MD5 |
999ad816dbca14440060cf29a7ad934c
|
|
| BLAKE2b-256 |
ac183b504b40c469df3ea7c9a61da8b5f350145215e3e574101c5c1571ca90bc
|
File details
Details for the file coshui-0.3.2.1-py3-none-any.whl.
File metadata
- Download URL: coshui-0.3.2.1-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d068ba79c383a7a6e2169e3c6e6ab2c170ee43bd2bbec9aceca2772d3b08caa8
|
|
| MD5 |
ee326ff30b1dbe245c53fd64d2c76ae2
|
|
| BLAKE2b-256 |
179aadb23b85b48cc4aa19d78f49309a040c80697d75d4ac49aa532857d9eb1f
|