Skip to content

bitplane/bittty

Repository files navigation

bittty

A pure Python terminal emulator.

Almost usable; some scroll region problems, doesn't like textual in textual yet.

Demo

Run the standalone demo:

python ./demo/terminal.py

Or use the textual demo to see it in a TUI:

uvx textual-tty

Links

License

WTFPL with one additional clause

  1. Don't blame me

Do wtf you want, but don't blame me when it rips a hole in your trousers.

Recent changes

  • 🏃 squeeze another 15% performance out of it
  • ✀ fix utf8 and escape code splitting across buffer boundaries
  • 🪟 tests run on Windows runner
  • 📉 added parser benchmarking and tui graphs
  • 🐌 use regex for parsing to speed things up a tad (~2x faster)
  • 📚 document half a billion DEC private modes we don't support
  • 🔙 DECLM - allow \n to act like \r\n so we don't have to rely on cooked input on the pty when using as a library.
  • 🖼️ DEC Special Graphics
  • 🐌 Faster colour/style parser
  • ⛓️‍💥 Split out from textual-tty into separate package

bugs / todo

  • Implement grapheme clustering (thanks Xavier G)
  • SIGWINCH handler atomicity + buffer resizes
  • architecture - pretty big
  • gui
    • make a terminal input class, for standalone input
    • make framebuffer.py
    • choose a display driver
  • performance improvements
    • reconsider CSI end char approach
    • line cache for outputs
    • [.] revisit colours / styles
  • scrollback buffer
    • implement logloglog for scrollback with wrapping
  • bugs
    • scroll region: scroll up in vim corrupts outside scroll region
  • add terminal overlay visuals
    • bell flash effect
    • make cursor an overlay
    • make mouse an overlay
    • debug overlay for scroll regions
  • Support themes
  • bittty-specific escape sequences
    • visible mouse on / off
    • debugging info
    • record
    • list sequences + values
  • Document all the escape sequences
    • collect books for a terminal library

About

bitplane tty

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •