Uses fork of node-pty native code for forking pseudoterminals.
Uses libuv pipe handle to communicate with the child process.
- Paves the way for cross-platform (Linux, macOS and Windows) support.
- Renames Pseudoterminal to PTY (which is much easier to type and spell :D).
- Better performance than the old Pseudoterminal node. Especially when
streaming large amounts of data such as running the `yes` command.
- Allows setting custom file, args, initial window size, cwd, env vars
(including important ones such as TERM and COLORTERM) and uid/gid
on Linux and macOS.
- Returns process exit code and terminating signal.
Uses OS.execute to start socat with a tcp server on one end and shell on
te other.
Connects to the socat server using StreamPeerTCP.
Doesn't support reszing and inherits 'dumb' for the TERM env var so
doesn't work too well without updating TERM and resizing with stty.
- 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.
Makes libtsm a static library rather than dynamic so that it doesn't
have to be installed as a system library on the user's operating system.
Also updates SConstruct to work on more operating systems other than
just NixOS. Adds a number of docker files for building the library on
various distributions (NixOS, Arch Linux, Ubuntu).
Uses a fork of godot-cpp with an updated godot_headers submodule that
includes godotengine/godot_headers#76. We should go back to tracking
https://github.com/godotengine/godot-cpp once the submodule has
been updated in that repo.
Former-commit-id: d8c8b5b272
todos:
- Read more than one byte at a time before emitting signal.
- Set correct termios and winp values.
- Handle SIGWINCH stuff when resizing window.
Former-commit-id: 78eeacdc22