Skip to content

Latest commit

Β 

History

History
80 lines (63 loc) Β· 2.27 KB

File metadata and controls

80 lines (63 loc) Β· 2.27 KB

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