mirror of
https://github.com/lihop/godot-xterm.git
synced 2024-11-10 04:40:25 +01:00
0dd2378387
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.
36 lines
1.2 KiB
GDScript
36 lines
1.2 KiB
GDScript
tool
|
|
extends EditorPlugin
|
|
|
|
var pty_supported := OS.get_name() in ["X11", "Server", "OSX"]
|
|
var asciicast_import_plugin
|
|
|
|
|
|
func _enter_tree():
|
|
asciicast_import_plugin = preload("res://addons/godot_xterm/import_plugins/asciicast_import_plugin.gd").new()
|
|
add_import_plugin(asciicast_import_plugin)
|
|
|
|
var asciicast_script = preload("res://addons/godot_xterm/resources/asciicast.gd")
|
|
add_custom_type("Asciicast", "Animation", asciicast_script, null)
|
|
|
|
var terminal_script = preload("res://addons/godot_xterm/nodes/terminal/terminal.gd")
|
|
var terminal_icon = preload("res://addons/godot_xterm/nodes/terminal/terminal_icon.svg")
|
|
add_custom_type("Terminal", "Control", terminal_script, terminal_icon)
|
|
|
|
if pty_supported:
|
|
var pty_icon = load("res://addons/godot_xterm/nodes/pty/pty_icon.svg")
|
|
var pty_script
|
|
match OS.get_name():
|
|
"X11", "Server", "OSX":
|
|
pty_script = load("res://addons/godot_xterm/nodes/pty/unix/pty_unix.gd")
|
|
add_custom_type("PTY", "Node", pty_script, pty_icon)
|
|
|
|
|
|
func _exit_tree():
|
|
remove_import_plugin(asciicast_import_plugin)
|
|
asciicast_import_plugin = null
|
|
|
|
remove_custom_type("Asciicast")
|
|
remove_custom_type("Terminal")
|
|
|
|
if pty_supported:
|
|
remove_custom_type("PTY")
|