windows-curses
Support for the standard curses module on Windows
Decision gist · record as of 2026-08-14
Yes, if you need curses on Windows. It is actively maintained, has no known vulnerabilities, and solves a real gap in Python's Windows support. The medium install friction (platform-specific wheels) is a one-time cost. If you are building cross-platform terminal UIs or porting Unix code to Windows, this is the standard solution.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Windows-only; requires a compatible Python version (3.6–3.14) and appropriate architecture (32- or 64-bit) matching your installation.
- Medium install friction due to platform-specific wheel requirements across multiple Python versions (3.6–3.14, both 32- and 64-bit).
- Package is actively maintained with recent commits and no known vulnerabilities.
License · maintenance · safety
PSF2 (permissive) — Licensed under PSF2 (Python Software Foundation License), a permissive license that allows free use, modification, and distribution with minimal restrictions.
last release 2026-03-31 (136 days) · last repo commit 2026-03-31 · 214 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 214,729 downloads/mo, #9,409 on PyPI
Alternatives
Verify before relying
pip install windows-curses
import curses
def main(stdscr):
stdscr.addstr('Hello, Windows!')
stdscr.refresh()
stdscr.getch()
curses.wrapper(main)- Whether the automatic resize_term(0, 0) hack in version 2.0+ works reliably with all terminal emulators on Windows.
- Performance characteristics compared to native ncurses on Unix-like systems when ported code runs on Windows.
- Compatibility with third-party curses libraries or wrappers beyond standard Python curses API.
What it is and what it does
Windows-curses bridges a gap in Python's standard library: the curses module, which provides low-level terminal control for building text-based user interfaces, is not available on Windows by default. This package wraps PDCurses (a cross-platform curses implementation) and provides pre-built wheels for Windows, allowing developers to write terminal UI code that works across Windows, Linux, and macOS without platform-specific branches.
The package includes a pragmatic enhancement: starting from version 2.0, it automatically handles terminal resizing by calling resize_term(0, 0) when KEY_RESIZE is received, mimicking the behavior of ncurses on Unix systems. PDCurses is compiled with wide character support, so get_wch() is available and UTF-8 is enforced as the encoding.
Use it for
- Build cross-platform terminal UIs (dashboards, menus, forms) that work on Windows without code changes.
- Port existing ncurses-based Python applications from Unix to Windows with minimal modification.
- Create Windows console applications that need fine-grained control over cursor position, colors, and text attributes.
- Develop interactive command-line tools that rely on the standard curses API across all platforms.
- Handle terminal resizing events in Windows terminal applications without manual SIGWINCH-style workarounds.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need curses on Windows.
It is actively maintained, has no known vulnerabilities, and solves a real gap in Python's Windows support. The medium install friction (platform-specific wheels) is a one-time cost. If you are building cross-platform terminal UIs or porting Unix code to Windows, this is the standard solution.
Install
windows-curses on PyPI
Before you install
Medium install friction due to platform-specific wheel requirements across multiple Python versions (3.6–3.14, both 32- and 64-bit). Package is actively maintained with recent commits and no known vulnerabilities.
Windows-only; requires a compatible Python version (3.6–3.14) and appropriate architecture (32- or 64-bit) matching your installation.
License in practice
Licensed under PSF2 (Python Software Foundation License), a permissive license that allows free use, modification, and distribution with minimal restrictions.
Quickstart
pip install windows-curses
import curses
def main(stdscr):
stdscr.addstr('Hello, Windows!')
stdscr.refresh()
stdscr.getch()
curses.wrapper(main)
Verify before relying
- Whether the automatic resize_term(0, 0) hack in version 2.0+ works reliably with all terminal emulators on Windows.
- Performance characteristics compared to native ncurses on Unix-like systems when ported code runs on Windows.
- Compatibility with third-party curses libraries or wrappers beyond standard Python curses API.
Package facts
| License | PSF2 permissive |
| Python support | Not specified |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 136 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 214,729 / month, #9,409 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaEnvironment :: Console :: CursesEnvironment :: Win32 (MS Windows)License :: OSI Approved :: Python Software Foundation LicenseOperating System :: Microsoft :: WindowsProgramming Language :: CProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonTopic :: Software DevelopmentTopic :: Software Development :: Libraries :: Python Modules |
Evidence: windows_curses-2.4.2-cp310-cp310-win32.whl; windows_curses-2.4.2-cp310-cp310-win_amd64.whl; windows_curses-2.4.2-cp311-cp311-win32.whl; windows_curses-2.4.2-cp311-cp311-win_amd64.whl; windows_curses-2.4.2-cp312-cp312-win32.whl; windows_curses-2.4.2-cp312-cp312-win_amd64.whl; windows_curses-2.4.2-cp313-cp313-win32.whl; windows_curses-2.4.2-cp313-cp313-win_amd64.whl; windows_curses-2.4.2-cp314-cp314-win32.whl; windows_curses-2.4.2-cp314-cp314-win_amd64.whl; windows_curses-2.4.2-cp36-cp36m-win32.whl; windows_curses-2.4.2-cp36-cp36m-win_amd64.whl; windows_curses-2.4.2-cp37-cp37m-win32.whl; windows_curses-2.4.2-cp37-cp37m-win_amd64.whl; windows_curses-2.4.2-cp38-cp38-win32.whl; windows_curses-2.4.2-cp38-cp38-win_amd64.whl; windows_curses-2.4.2-cp39-cp39-win32.whl; windows_curses-2.4.2-cp39-cp39-win_amd64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “terminal ui windows”
- windows-cursesProvides the standard Python curses module on Windows by wrapping…
- asciimaticsAsciimatics provides cross-platform terminal UI and ASCII animation…
- urwidUrwid is a Python console UI library that lets you build text-based…
Give your agent the search over MCP, or paste the wish link into any chat.
More Software Development packages
Provides backported and experimental type hints for Python 3.9+, allowing use of newer typing features on older Python versions and enabling early experimentation with type system PEPs before they enter the standard library.
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
FastAPI is a Python web framework for building REST APIs using type hints, with automatic request validation, serialization, and interactive API documentation.
Provides a way to document function parameters, class attributes, return types, and variables inline using Python's `Annotated` type hint syntax instead of traditional docstrings.
Typer builds command-line applications from Python functions using type hints, automatically generating help text, argument parsing, and shell completion.
Install it if you are building CLIs in Python.
Distlib provides low-level packaging utilities for building, distributing, and managing Python software—including metadata handling, version specifiers, wheel support, script installation, and dependency resolution.
See also jinxed · pythondialog · urwid · blessed · asciimatics · blessings · ptyprocess · curtsies · ansible-navigator · pudb