The VTE layer can now set the TSM_SCREEN_ALTERNATE flag to switch to the
alternate screen-buffer and back.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This adds a new helper that returns the UTF8 encoded data of the selected
parts in the tsm-screen object.
There is still much to do and it isn't a nice solution. However, it's a
proof-of-concept and works for now so we can just keep it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This implements UI selection for the console buffer. This selection is not
to be confused with PTY application selection provided by the
mouse-protocol via VT200 protocol.
Instead, this selection allows UIs to tell the TSM layer to select a
special part of the screen. Moreover, it allows selections to go into the
scrollback-buffer and to be bigger than a single screen. The UI can even
implement scrolling during selection to allow arbitrarily big selections.
There might still be some special cases where we need to fix selection.
However, it already works pretty well.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of accessing kmscon state from TSM, we now introduce options to
control the behavior of TSM-screens. Apart from logging, TSM is now
independent of any kmscon state/code.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Allow setting global options for screen objects. These are different from
flags as the latter affects the state-machine but options affect global
operation modes.
Options should be set by the application while flags are set by the VTE
handler. The latter might change often, while options should be set on
startup and then remain mainly constant.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We need to avoid logging to stderr directly in TSM so introduce the
tsm_log_t object similar to eloop.h.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
All TSM files use the "tsm_*" prefix and the object is now named "screen"
so rename the files to resemble this.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>