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)