# crossterm-rs/crossterm

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/crossterm-rs-crossterm).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,098 stars · 371 forks · Rust · MIT

## Links

- GitHub: https://github.com/crossterm-rs/crossterm
- awesome-repositories: https://awesome-repositories.com/repository/crossterm-rs-crossterm.md

## Topics

`color` `console` `cross-platform` `cursor` `input` `terminal` `tui`

## Description

Crossterm is a cross-platform Rust library for terminal manipulation, providing a low-level interface for controlling terminal state, cursor movement, and text styling. It acts as a cross-platform TTY interface that handles raw mode, alternate screen buffers, and terminal window metadata across different operating systems.

The library includes an ANSI text styling engine for applying RGB colors and text attributes to console output, as well as a terminal input event handler for capturing keyboard presses, mouse movements, and terminal resize events in real time. It also provides system clipboard integration for copying and pasting text.

The project covers broad capability areas including terminal state management, asynchronous input streaming, and cursor control. It provides tools for environment manipulation, such as clearing lines and updating window titles, and supports terminal state querying to retrieve window size and TTY status.

## Tags

### Development Tools & Productivity

- [Cross-Platform CLI Builders](https://awesome-repositories.com/f/development-tools-productivity/command-line-tooling/cross-platform-cli-builders.md) — Provides a cross-platform foundation for building consistent command line tools across Windows, macOS, and Linux.
- [Keyboard and Mouse Event Capture](https://awesome-repositories.com/f/development-tools-productivity/mouse-input-handlers/keyboard-and-mouse-event-capture.md) — Converts raw byte streams from the terminal into structured keyboard and mouse events.
- [Terminal Escape Sequences](https://awesome-repositories.com/f/development-tools-productivity/terminal-escape-sequences.md) — Translates high-level commands into ANSI and VT100 escape sequences for terminal control.
- [Terminal State Accessors](https://awesome-repositories.com/f/development-tools-productivity/terminal-state-accessors.md) — Retrieves terminal window metadata, including size, pixel dimensions, and TTY status. ([source](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md))
- [Terminal Mode Managers](https://awesome-repositories.com/f/development-tools-productivity/terminal-state-accessors/terminal-mode-managers.md) — Provides APIs for toggling raw mode and managing terminal modes to control display and input processing. ([source](https://github.com/crossterm-rs/crossterm/tree/master/examples))

### Operating Systems & Systems Programming

- [Cross-Platform TTY Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-platform-tty-interfaces.md) — Provides a low-level interface for handling raw mode and alternate screen buffers across operating systems.
- [Low-Level Terminal Control](https://awesome-repositories.com/f/operating-systems-systems-programming/low-level-terminal-control.md) — Provides precise control over raw mode, alternate screen buffers, and cursor positioning.
- [Terminal Environment Manipulation](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-environment-manipulation.md) — Provides tools to clear lines, scroll the view, and update the terminal window title. ([source](https://github.com/crossterm-rs/crossterm#readme))
- [TTY Detection](https://awesome-repositories.com/f/operating-systems-systems-programming/tty-detection.md) — Checks if the output stream is a terminal to decide between interactive features and plain text fallback. ([source](https://github.com/crossterm-rs/crossterm/tree/master/examples))

### Programming Languages & Runtimes

- [ANSI Escape Sequence Formatting](https://awesome-repositories.com/f/programming-languages-runtimes/ansi-escape-sequence-formatting.md) — Implements a system for applying RGB colors and attributes to console output via ANSI escape sequences.
- [Terminal Manipulation Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/terminal-manipulation-libraries.md) — A comprehensive Rust library for controlling terminal state, cursor movement, and text styling.

### User Interface & Experience

- [Alternate Screen Management](https://awesome-repositories.com/f/user-interface-experience/alternate-screen-management.md) — Provides the ability to toggle between primary and alternate terminal screen buffers to isolate application UI.
- [Raw Mode Input Handlers](https://awesome-repositories.com/f/user-interface-experience/terminal-input-handling/raw-mode-input-handlers.md) — Disables line buffering and echo at the OS level to capture raw keyboard and mouse input.
- [Terminal Text Styling](https://awesome-repositories.com/f/user-interface-experience/terminal-text-styling.md) — Applies colors and text attributes to terminal output to improve visual hierarchy.
- [Terminal User Interfaces](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces.md) — Enables the construction of full-screen interactive terminal user interfaces with custom layouts and mouse support.
- [Terminal Text Attributes](https://awesome-repositories.com/f/user-interface-experience/text-formatting-tools/terminal-text-attributes.md) — Applies RGB/ANSI colors and text attributes like bold or italic to terminal output. ([source](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md))
- [Concurrent Terminal Output Coordination](https://awesome-repositories.com/f/user-interface-experience/concurrent-terminal-output-coordination.md) — Coordinates output updates to prevent visual flickering and overlapping during screen refreshes. ([source](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md))
- [Cursor Position Mapping](https://awesome-repositories.com/f/user-interface-experience/cursor-position-mapping.md) — Calculates absolute and relative screen positions to manage character placement and cursor visibility.
- [Cursor Visibility & Positioning](https://awesome-repositories.com/f/user-interface-experience/cursor-visibility-positioning.md) — Moves the terminal cursor to specific coordinates and toggles its visibility. ([source](https://github.com/crossterm-rs/crossterm#readme))
- [Asynchronous Input Handlers](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/asynchronous-input-handlers.md) — Produces asynchronous sequences of input events to process user interactions without blocking the main thread. ([source](https://github.com/crossterm-rs/crossterm#readme))
- [Real-time Input Capture](https://awesome-repositories.com/f/user-interface-experience/real-time-input-capture.md) — Captures keyboard and mouse events asynchronously for responsive command line interfaces.

### Software Engineering & Architecture

- [Backend Abstractions](https://awesome-repositories.com/f/software-engineering-architecture/trait-based-service-abstractions/backend-abstractions.md) — Uses a trait system to separate generic terminal operations from platform-specific backend implementations.

### System Administration & Monitoring

- [Terminal Event Handlers](https://awesome-repositories.com/f/system-administration-monitoring/terminal-event-handlers.md) — Provides an event system for capturing real-time keyboard presses, mouse movements, and resize events.

### Web Development

- [Terminal Window Titles](https://awesome-repositories.com/f/web-development/web-standards/search-engine-optimization/page-title-templates/application-header-titles/terminal-window-titles.md) — Allows dynamically updating the terminal window title and other metadata using standard escape sequences. ([source](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md))
