https://github.com/asciinema/avt
asciinema virtual terminal
https://github.com/asciinema/avt
asciinema rust terminal
Last synced: 2 months ago
JSON representation
asciinema virtual terminal
- Host: GitHub
- URL: https://github.com/asciinema/avt
- Owner: asciinema
- License: apache-2.0
- Created: 2019-07-18T15:49:10.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2024-05-11T14:23:39.000Z (about 1 year ago)
- Last Synced: 2024-05-12T13:25:05.089Z (about 1 year ago)
- Topics: asciinema, rust, terminal
- Language: Rust
- Homepage:
- Size: 1.23 MB
- Stars: 126
- Watchers: 6
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# avt - asciinema virtual terminal
avt is asciinema's implementation of virtual terminal emulator written in Rust.
It is used by [asciinema CLI](https://github.com/asciinema/asciinema),
[asciinema player](https://github.com/asciinema/asciinema-player), [asciinema
server](https://github.com/asciinema/asciinema-server) and [asciinema gif
generator](https://github.com/asciinema/agg).This implementation covers only parsing and virtual buffer related aspects of a
terminal emulator as it's all asciinema needs.avt consists of:
- parser for ANSI-compatible video terminal based on [excellent state diagram by Paul Williams](https://www.vt100.net/emu/dec_ansi_parser),
- virtual screen buffers (primary/alternate) in a form of character grid with additional color/styling attributes,
- API for feeding text into the parser and for querying virtual screen buffer and cursor position.Following aspects of terminal emulation are not in scope of this project:
- input handling,
- rendering.While avt is small and focused, a full-fledged terminal emulator could potentially be
built on top of it.avt doesn't try to 100% replicate any specific terminal variant like VT102 or VT520,
instead it implements most control sequences supported by modern terminal emulators
like xterm, Gnome Terminal, WezTerm, Alacritty, iTerm, mosh etc.## License
© 2019 Marcin Kulik.
All code is licensed under the Apache License, Version 2.0. See LICENSE file for details.