A cross-platform Rust curses library that provides a Rustic interface for terminal UI development on Unix and Windows.
pancurses is a curses library for Rust that enables terminal-based user interface development across both Unix-like systems and Windows. It abstracts away platform-specific backend details, offering developers a consistent API for building text-mode applications. The library provides a more idiomatic Rust wrapper over traditional C curses functions, balancing ease of use with familiarity for porting existing code.
Rust developers building cross-platform terminal applications, especially those porting existing curses-based code from C or other languages to Rust. It is also suitable for developers creating new text-mode interfaces that need to run consistently on both Linux and Windows.
Developers choose pancurses for its seamless cross-platform support with a unified API, eliminating the need to handle backend differences between ncurses on Unix and PDCurses on Windows. Its Rustic interface offers idiomatic patterns like input handling with match statements, while staying close enough to traditional curses to simplify porting.
A Rust curses library, supports Unix platforms and Windows
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a unified API for ncurses on Unix and PDCurses on Windows, abstracting backend differences and enabling consistent code across platforms.
Uses Rust pattern matching with getch() for keyboard and mouse events, making code safer and more expressive, as shown in the README examples.
Supports configurable mouse masks and position reporting via mousemask(), allowing detailed interaction handling in terminals that support it.
Automatically raises Input::KeyResize events on terminal resize and provides resize_term() to adjust internal structures, ensuring UI consistency.
Offers choice between win32a for enhanced colors and win32 for console mode, with feature flags for menu and resize customization.
Requires native ncurses on Linux and a compatible C compiler on Windows for PDCurses, adding setup complexity and portability hurdles.
Confined to text-mode interfaces, making it unsuitable for applications needing graphics, web integration, or modern UI elements.
Stays close to traditional curses, which can feel verbose and less intuitive compared to newer Rust crates like crossterm or termion.
Different PDCurses flavors and features (e.g., menu disabling) require careful configuration via Cargo flags, leading to platform-specific code paths.