denoland / denoland/std

Proposal for `@std/cli/tty` package

Open
#6,858 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
3.6k
Forks
681
PR merge metrics
No merged PRs in 30d

Description

**Is your feature request related to a problem? Please describe.**

It is difficult to write robust, cross-platform terminal applications on any platforms. There is too much arcana in dealing with various terminals. The portability of compiled Deno apps is amazing.

Lately I have been diving into the deep-end of VT100/VT220/XTerm/ANSI/ECMA-84/kitty. I stopped active development of my own project once I discovered ticket #6755. After briefly reviewing the PRs, I wanted to share a few ideas/suggestions/proposals for a new `@std/cli/tty` package.

**Describe the solution you'd like**

A package focused on providing a stable terminal driver w/ compatibility for common Linux, MacOS, and Windows terminals. This solution should make it easy to patch bugs that fix issues across the ecosystem in support of semver.

**Describe alternatives you've considered**

* [Ink](https://github.com/vadimdemedes/ink) smooths over A LOT. That's a huge package for simple terminal apps.
* Python has [Textual](https://github.com/Textualize/textual/tree/main/src/textual), much to the same effect.
* [ncurses](en.wikipedia.org/wiki/ncurses) at [terminfo])(https://en.wikipedia.org/wiki/Terminfo) are insane, but it exists for a reason
* I started writing a thin layer for style text, positioning, and handling raw input processing. It quickly turned into a bigger project that I had thought possible.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.