Skip to main content

bittty

A pure Python terminal emulator.

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

  • 🏃 more performance
  • 🏗️ rewrite architecture
  • 🐛 scroll region: scroll up in vim corrupts outside scroll region
  • 🏃 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
  • 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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bittty-0.1.1.tar.gz (78.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bittty-0.1.1-py3-none-any.whl (93.4 kB view details)

Uploaded Python 3

File details

Details for the file bittty-0.1.1.tar.gz.

File metadata

  • Download URL: bittty-0.1.1.tar.gz
  • Upload date:
  • Size: 78.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for bittty-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cc7421c3760adfa53b707d47f80dae7b527eb95520d7a9400c1bfb07a2230c01
MD5 19b95aee85a2955f474f72e7db603865
BLAKE2b-256 02d0fda79e6291b9d0a3e0bce2f6ec5f44544183381b2e0e45f97f187ae3fc93

See more details on using hashes here.

File details

Details for the file bittty-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: bittty-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 93.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for bittty-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 37aa8454d3e73c50e95b7ea9f80f0834088c3e9c03d79dc3d3566b66b4774860
MD5 2cfb04e50d6cadef96301ac92bae0762
BLAKE2b-256 79dd500d209f08345bef4174260ef5b263d527e8c36799eff2a503c786efbe32

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page