skillfed

windows-curses

Support for the standard curses module on Windows

windows-curses v2.4.2 214.7K downloads/30d#9,409 on PyPI214
Permissive license PSF2 Active released

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

Provides the standard Python curses module on Windows by wrapping PDCurses, enabling terminal UI development that would otherwise require platform-specific workarounds.

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

pip

pip install windows-curses

uv

uv add windows-curses

poetry

poetry add windows-curses

Installing windows-curses

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.

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)

Windows-only; requires a compatible Python version (3.6–3.14) and appropriate architecture (32- or 64-bit) matching your installation.

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)

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

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

Tags

curses windows supportterminal ui windowspdcurses pythonwindows console graphicstext-based ui windowsncurses alternative windowsterminal control windows
terminal-uiwindows-compatcross-platform

More Software Development packages