Terminal emulator for the Godot game engine.
Find a file
Leroy Hopson 76ff0d34a2
Register pipe.close() method
Allows kill() method of unix PTY node to be called without error.
2022-06-04 11:27:53 +07:00
.github/workflows Update setup-godot: v0.1.1 -> v1.0.0 2022-06-04 11:27:53 +07:00
addons Register pipe.close() method 2022-06-04 11:27:53 +07:00
docs Add link to the Godot Asset Library page 2021-07-26 14:28:49 +07:00
examples Ignore unused return value 2022-06-04 11:27:53 +07:00
misc Reformat existing gdscript code 2022-06-04 11:27:46 +07:00
test Reformat existing gdscript code 2022-06-04 11:27:46 +07:00
themes Add retro term example scene 2021-07-25 07:50:36 +07:00
.gitattributes Add only Hack Regular font and default themes to archive 2021-07-23 08:37:48 +07:00
.gitignore Ignore vim's temporary .swp files 2021-07-25 23:08:44 +07:00
.gitmodules Update godot-cpp 2022-06-04 11:27:53 +07:00
CHANGELOG.md Register pipe.close() method 2022-06-04 11:27:53 +07:00
default_env.tres Basics working, added pseudoterminal 2020-10-05 17:56:21 +07:00
export_presets.cfg Update target Godot and Emscripten versions 2022-02-24 10:59:02 +07:00
icon.png Change to the old icon 2020-10-05 18:16:17 +07:00
icon.png.import Add all the files 2020-05-10 01:42:19 +07:00
LICENSE.md Update license information 2021-07-07 21:39:54 +07:00
plug.gd Run tests in CI environment 2021-07-18 23:05:17 +07:00
project.godot Automatic editor updates 2021-10-16 11:09:56 +07:00
README.md Update status badges 2021-12-17 15:48:06 +07:00

GodotXterm

Godot Version License Build and Test

GDNative terminal for Godot. Built using libtsm, libuv, and node-pty. Primarily developed and tested on Linux, it also supports macOS with partial support for Windows and HTML5. See the Features section for more detail.

https://user-images.githubusercontent.com/3696783/126894061-a69eb6ad-9979-4723-ade7-829494a9fc87.mp4

Documentation

Documentation is available in the wiki. If you have a question not answered by the docs, or would like more support, feel free to open a new discussion in the discussions section of this project.

Features

  • Terminal

    A Terminal emulator Control node.

    Supports ANSI and (some) XTerm Control Sequences which can be used to do things such as clear the screen, move the cursor, change printed text color, ring a bell, and so on. For an exhaustive list of terminal control sequences (not all of which are supported by GodotXterm) see https://invisible-island.net/xterm/ctlseqs/ctlseqs.html.

  • PTY

    Linux and macOS only.

    Node for forking processes (e.g. bash, nodejs, python) with pseudoterminal file descriptors. Can be used with the Terminal node to get an actual shell.

    Not currently supported on Windows, but it could be in the future using ConPTY or WinPTY. See issue #25.

  • Terminal Editor Plugin

    Linux and macOS only.

    Adds a panel to the Editor's bottom panel that can be used to spawn terminals in the editor. Similar to VSCode's integrated terminal and IntelliJ's embedded terminal.

  • Asciicast Import Plugin

    Adds support for importing asciinema v2 .cast files as animations that can be played by an AnimationPlayer that is a child of a Terminal node. Example .cast files can be downloaded from the asciinema website.

  • Xresources Import Plugin

    Adds support for importing color schemes from .xrdb or .Xresources files. Example xresources files can be exported from terminal.sexy. The iTerm2-Color-Schemes repo also has many example color scheme files in xrdb and Xresources format.

Installation

GodotXterm is available on the Godot Asset Library: https://godotengine.org/asset-library/asset/1007. For more ways to install see the Installation page on the wiki.

Demos

  • Online demo of an HTML5 export of this repo (using the GDNative export type, available since Godot 3.3). Make sure you click the screen at least once after loading.

  • Xterminate. A Linux, macOS, and Windows demo, which uses an older version GodotXterm in conjunction with Godot Python.

  • This repository also contains a number of demo scenes in the examples directory. The easiest way to run these scenes is to clone this repo and then download the libgodot-xterm-release.zip archive from the Releases section and extract its contents (.so, .wasm, .dll, and .dylib files) into the addons/godot_xterm/native/bin directory.

License

Copyright (c) 2020-2021, Leroy Hopson and contributors (MIT License).

Third-party components

The GDNative source code incorporates code snippets and source code from many third-party libraries. The licenses of these components can be found in the various sub-directories of this project (provided git submodules have been cloned). Many of these licenses must be distributed with source and binary distributions of this software. For convenience, the texts of these licenses have been bundled together (but clearly demarcated) in the THIRDPARTY_NOTICES.txt file.

Note: On platforms where the PTY node is not supported or if the library has been compiled with the option disable_pty=yes then only the licenses bundled in THIRDPARTY_NOTICES_nopty.txt are applicable.

Fonts

  • The Hack regular font is bundled with GodotXterm as the default Terminal font. This is also the default monospace font of the Godot editor. See the full license.

Nonbundled Resources

The following resources are not bundled with GodotXterm (i.e. are not included in the addons/godot_xterm directory) but are included in this repository for demo and testing purposes. They are:

Sounds

Fonts

  • The bold, italic, and bold italic styles of the Hack font which are covered by the same license as above.
  • Nerd Fonts. Combines symbols from a multitude of other fonts. See license information.
  • Noto Color Emoji. Released under the SIL Open Font License.
  • Unifont. Dual-licensed (since version 13.0.04) under the GNU GPL 2+ with the GNU font embedding exception and the SIL Open Font License (OFL) version 1.1. This project uses it under the terms of the SIL Open Font License.