Urwid

Console user interface library for Python

git clone https://github.com/urwid/urwid.git

Wiki:

Requirements

Python Versions

  • CPython 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15 - Full support for all extras
  • CPython 3.13+ with free-threading (PEP 703 --disable-gil) - Pure-Python extras only (tornado, trio, twisted, serial, lcd)
  • PyPy 3.x - Compatible extras (tornado, trio, serial, lcd)
  • GraalPy 3.11, 3.12 (experimental) - Compatible extras (tornado, serial, lcd)

Operating System

  • Unix-like: Linux, macOS, Cygwin (full support)
  • Windows 10+: Limited support
    • Curses display module requires additional setup (windows-curses package)
    • ANSI support required
    • Not supported: Terminal widget, file descriptor operations (except sockets), ZMQ event loop
    • ZMQ: Not available on Windows (platform limitation)

Optional Dependencies by Feature

Feature CPython Free-threaded PyPy GraalPy Package
GLib event loop ✓ ✗ ✗ ✗ python-gi (pygobject)
Twisted event loop ✓ ✓ (24.10.0+) ⚠ Limited ✗ twisted>=24.10.0
Tornado event loop ✓ ✓ ✓ ✓ tornado>=6.5.8
Trio event loop ✓ ✓ ✓ ✗ trio>=0.31.0
ZMQ event loop ✓ (Linux/Unix) ✗ ✗ ✗ pyzmq>=26.0.0 (not available on Windows)
Serial/LCD display ✓ ✓ ✓ ✓ pyserial
Curses display (Windows) ✓ ✓ ⚠ Limited ✗ windows-curses
Terminal widget (urwid.vterm) ✓ ✓ ✓ ✗ fcntl, pty (stdlib; not supported on Windows either)