{"repo":"charmbracelet/ultraviolet","free":true,"listed":false,"github":"https://github.com/charmbracelet/ultraviolet","clone":"git clone https://github.com/charmbracelet/ultraviolet.git","description":"Mystical terminal user interface primitives 🌈","language":"Go","stars":372,"topics":["hacktoberfest","terminal","tui","cli","framework","golang"],"license":"MIT","category":"cli-tools","readme_excerpt":"Ultraviolet Ultraviolet is a set of primitives for building terminal user interfaces in Go. It provides cell-based rendering, cross-platform input handling, and a diffing renderer inspired by ncurses—without the need for terminfo or termcap databases. Ultraviolet powers [Bubble Tea v2][bbt] and [Lip Gloss v2][lg]. It replaces the ad-hoc terminal primitives from earlier versions with a cohesive, imperative API that can also be used standalone. [bbt]: https://github.com/charmbracelet/bubbletea [lg]: https://github.com/charmbracelet/lipgloss Install Quick Start Architecture Ultraviolet is organized as a set of layered primitives: - Terminal — manages the application lifecycle: raw mode, input event loop, start/stop. Create one with DefaultTerminal() or NewTerminal(console, opts) . - TerminalScreen — the screen state manager. Handles rendering, alternate screen buffer, cursor, mouse modes, keyboard enhancements, bracketed paste, window title, and more. Access it via terminal.Screen() . - Screen — a minimal interface ( Bounds , CellAt , SetCell , WidthMethod ) implemented by TerminalScreen , Buffer , Window , and ScreenBuffer . Write code against Screen to stay decoupled from the terminal. - Buffer / Window — off-screen cell buffers. Buffer is a flat grid of cells. Window adds parent/child relationships and shared-buffer views. Both implement Screen and Drawable . - screen package — drawing helpers that operate on any Screen : a Context for styled text rendering ( Print , DrawStri","default_branch":null,"files":null,"tree":[],"storefront":"/r/charmbracelet","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/charmbracelet/ultraviolet/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}