Skip to main content

A Python-first — Declarative-Mode — Backend-Agnostic — UI Library

Project description

CoshUI

The Python-first, Declarative-Mode, Backend Agnostic, UI Library.

CoshUI Logo

PyPI version Python License GitLab Docs

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

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

coshui-0.3.2.1.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coshui-0.3.2.1-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

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

Hashes for coshui-0.3.2.1.tar.gz
Algorithm Hash digest
SHA256 fc1e395b2da0e216724265de97f13a54be65b6f628a549d90024831736d81ebd
MD5 999ad816dbca14440060cf29a7ad934c
BLAKE2b-256 ac183b504b40c469df3ea7c9a61da8b5f350145215e3e574101c5c1571ca90bc

See more details on using hashes here.

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

Hashes for coshui-0.3.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d068ba79c383a7a6e2169e3c6e6ab2c170ee43bd2bbec9aceca2772d3b08caa8
MD5 ee326ff30b1dbe245c53fd64d2c76ae2
BLAKE2b-256 179aadb23b85b48cc4aa19d78f49309a040c80697d75d4ac49aa532857d9eb1f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page