asciimatics
A cross-platform package to replace curses (mouse/keyboard input & text colours/positioning) and create ASCII animations
What it is and what it does
Asciimatics is a cross-platform terminal UI and animation library that abstracts away platform-specific console handling. It provides low-level APIs for colored text, cursor positioning, keyboard and mouse input, and screen management, plus higher-level features like ASCII line-drawing, image-to-ASCII conversion, sprite animations, and widget-based form builders. The package works consistently across Windows, Linux, and macOS by wrapping curses on Unix-like systems and native Windows console APIs, eliminating the need to write platform-specific terminal code.
The library is built on four runtime dependencies: pyfiglet for ASCII art text rendering, Pillow for image processing, wcwidth for character width calculations, and pywin32 for Windows console access. It targets developers building terminal-based tools, retro-style animations, or interactive command-line interfaces where a unified codebase must run on multiple operating systems.
Use it for:
- Build cross-platform interactive forms and text-based UIs (buttons, text boxes, radio buttons) that work identically on Windows, Linux, and macOS.
- Create ASCII animations and retro-style visual effects with sprites, particle systems, and color cycling.
- Convert images (JPEG, GIF) to ASCII art for terminal display or artistic output.
- Implement terminal applications requiring mouse and keyboard input without blocking or echoing.
- Build terminal dashboards or monitoring tools with colored text, positioned elements, and real-time screen updates.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Asciimatics provides cross-platform terminal UI and ASCII animation capabilities, handling colored text, keyboard/mouse input, and screen rendering on Windows, Linux, and macOS through a unified Python API.
Yes. Asciimatics is actively maintained, has no known vulnerabilities, installs with low friction, and is licensed permissively. It is the right choice if you need a single codebase for terminal UIs or ASCII graphics across Windows, Linux, and macOS. Not necessary if you are building web UIs or only targeting a single platform.
Install
asciimatics on PyPI
pip
pip install asciimaticsuv
uv add asciimaticspoetry
poetry add asciimaticsInstalling asciimatics
Before you install
Low friction install with four runtime dependencies (pyfiglet, Pillow, wcwidth, pywin32). Package is actively maintained with recent commits and stable production status; last release was in 2023.
License in practice
Licensed under Apache 2.0 (permissive), allowing commercial and private use with minimal restrictions—suitable for most projects without legal concerns.
Quickstart
pip install asciimatics
from asciimatics.screen import Screen
def demo(screen):
screen.print_at('Hello world!', 0, 0, colour=1)
screen.refresh()
Screen.wrapper(demo)
Requires Python >= 3.8; on Windows without pip, pywin32 must be installed separately.
Verify before relying
- Whether the package works reliably on modern Android/Termux environments beyond the Marshmallow era mentioned in the description.
- Current state of PyPy2 support given that Python 2 support ended at v1.14.
Package facts
| License | Apache 2.0 (permissive) |
| Python support | supports the current Python release (>= 3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — pyfiglet, Pillow, wcwidth, pywin32 |
| Maintenance | actively maintained — 1,024 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 214,298/month — #9,421 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: asciimatics-1.15.0-py3-none-any.whl
Keywords: ascii, ansi, art, credits, titles, animation, curses, ncurses, windows, xterm, mouse, keyboard, terminal, tty, color, colour, crossplatform, console
Tags
More User Interfaces packages
Wraps any iterable to display a real-time…
copyleft · top 100 on PyPI
humanfriendlyFormats and parses numbers, file sizes,…
permissive · top 1,000 on PyPI
coloredlogsAdds colored output to Python's standard…
permissive · top 1,000 on PyPI
rich-argparseFormats argparse and optparse help output with…
permissive · top 1,000 on PyPI
progressbar2progressbar2 renders text-based progress bars…
permissive · top 5,000 on PyPI
inquirerpyInquirerPy provides interactive command-line…
permissive · top 5,000 on PyPI
pansiPansi provides a clean interface for rendering…
permissive · top 15,000 on PyPI
tuipetA terminal-based virtual pet game in the…
permissive · top 15,000 on PyPI
terminaltexteffectsRenders animated visual effects for text…
permissive · top 15,000 on PyPI
climageConverts images to ANSI escape code sequences…
permissive · top 15,000 on PyPI
windows-cursesProvides the standard Python curses module on…
permissive · top 15,000 on PyPI
coloredColored provides ANSI/VT100 escape sequences…
permissive · top 5,000 on PyPI
jinxedJinxed provides pure-Python implementations of…
copyleft · top 5,000 on PyPI
blessedBlessed provides a clean Python interface for…
permissive · top 5,000 on PyPI
rich-pyfigletRenders ASCII art banners in the terminal using…
permissive · top 15,000 on PyPI
urwidUrwid is a Python console UI library that lets…
copyleft · top 5,000 on PyPI