Works with TERM=linux, does not work with TERM=xterm-256color.
Will need to update libtsm to handle mouse events as there is an escape
sequence to turn tracking on/off.
Probably something similar to tsm_vte_handle_keyboard().
- Don't add the bell to the archive to keep it small a simplify
licensing. Also bells seem to be rarely used with terminal emulators.
- Don't play the bell directly from the Terminal node by adding an
AudioStreamPlayer, but make it easy to tune the "bell" signal behavior
from the Terminal node so that only an AudioStreamPlayer node's play()
method needs to be connected to it.
- Keep the bell.wav sound around for testing/demo.
Currently tests only run on X11.64 platform.
But other platforms can be supported with a bit of effort.
Remove default bell sound as it does not play nicely with CI environment
that does not have sound card.
Clearing the terminal removes all lines in the scrollback buffer except
for the most recent.
With sb_reset, the terminal will return the scrollback buffer to the
bottom when the user starts typing if they have previously scrolled up.
In order to use the gdnative library as an editor plugin it was
neccessary to set the `reloadable` property of the gdnlib file to false,
in order to prevent crashes when the godot editor window lost focus.
This may have consequences when recompiling the library.
See: https://docs.godotengine.org/en/3.3/classes/class_gdnativelibrary.html#class-gdnativelibrary-property-reloadable
Still crashes quite frequently and doesn't close child processes
properly.
Part of #43.
Fixes#41. But creates another issue where sometimes the yield will
resume after the terminal node has already been freed logging an error
to the console.
Also a few changes to where update is called it the gdnative terminal
code.
Also changed gdnative terminal to only accept strings.
- Use viewport as render target for terminal:
Terminal now only draws cells which changed since the last _draw() call.
A viewport is used with clear mode set to NEVER to cache previous draw
calls. The terminal node and viewport are wrapped by a GDScript Terminal
node which takes care of resizing the viewport scene, and forcing the
terminal to redraw all cells when necessary (i.e. on resize or theme
change).
Adds update_mode to terminal interface which can be set to one of:
- DISABLED: terminal will never be drawn
- AUTO: terminal will only draw the cells that changed, but
automatically redraw the full screen when necessary (for example,
when the size or theme changed).
- ALL: terminal will always draw every cell on every update. This is
the most reliable but least performant option.
- ALL_NEXT_FRAME: Will use update_mode ALL for the next _draw() call,
then change update_mode back to AUTO.
- Upgraded libtsm:
Includes changes from Fredrik Wikstrom (salass00)'s fork of libtsm.
- Don't require theme to be set.
Terminal will use default fonts/colors if no theme is set.