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) |



