POC: DOM-based terminal rendering with wterm and libghostty #313
Replies: 2 comments 4 replies
|
This is really cool work - wterm + libghostty sounds fun :) One thing I want to gently clarify, since it's kind of the premise for the whole POC: the current player doesn't actually render text to The practical upshot is that a few of the listed benefits already work today:
In fact our whole Playwright suite asserts terminal output by reading Just wanted to make sure we're comparing against what's actually there. |
|
@nickytonline cool experiment - unfortunately it doesn't seem to render the .cast files I have as well as the current ascinema player - its as if it is not adapting to the col/line width info in the .cast? @ku1ik I was actually looking at similar option (hooking in ghostty-vt/web) to get proper grapheme clustering/unicode rendering....if not by support reusing existing emulators any plans of getting avt to catch up with modern terminals? |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
I built a proof-of-concept (POC) that swaps in vercel-labs/wterm as the terminal rendering engine for asciinema-player. The big change: it renders to real DOM elements instead of canvas.
.cast/.asciicastfile, use the file picker, or paste a URLdevelopbranch)The current player renders to
<canvas>, which is opaque to browsers and assistive technology. Switching to wterm's DOM renderer gives you:Ctrl+F) works on terminal contentOptional: @wterm/ghostty for full VT compliance (demo has ghostty)
wterm has a pluggable backend and they support ghostty
@wterm/ghosttywhich drops in libghostty-vt, the same parser powering the Ghostty terminal app. So you get:corepropThe POC uses
@wterm/ghosttycurrently.What the POC includes
I'd be happy to help integrate this into the player if there's interest. Let me know what you think!
CleanShot.2026-05-02.at.14.29.40.mp4
All reactions