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
- 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
- implement
- bugs
- scroll region: scroll up in
vim
corrupts outside scroll region
- scroll region: scroll up in
- 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