Use terminal emulator for parsing scrollback #24
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Example problem: an application may ask the client for capabilities or
cursor positions. Replaying that will make the client re-send that information
on reconnect.
This causes undefined behavior. It might get inserted into the terminal
as regular text or it might get ignored if the application is still running
and decides to do so (seems to depend on how much scrollback we have).
My current idea is to try copying what VS Code does which is have a full terminal
emulator running on the server, feed it the input, then serialize the current state
and replay that instead. It is working but I only have text and need to serialize
colors. Also probably need to serialize things like cursor positions and the window
title.
This might still result in issues since we are not running the exact same xterm
code but hopefully it is good enough. I am using a fork of darktile (not pushed
up yet).
Edit: since this is becoming quite involved and still runs the risk of desync
we are going to use screen instead.