
GUI applications in the terminal with Term.Everything❗
By David WORMS
Sep 16, 2025
Never miss our publications about Open Source, big data and distributed systems, low frequency of one email every two months.
Term.Everything❗ enables the execution of GUI applications directly within the terminal environment. The functionality allows you to run applications such as Firefox from a remote server over SSH.
The application is a complete implementation of a Wayland Compositor. According to the developer’s announcement on HackerNews, approximately 80% of the code is written in TypeScript to facilitate broader developer engagement and contributions. The How I Did It! documentation page on GitHub provides a detailed explanation of the implementation method.
This becomes invaluable when you need to access services that require a graphical interface or web browser on remote servers protected by firewalls where only SSH connections are permitted.
In contrast to traditional X11 forwarding which demands a cumbersome installation of an X11 server on the remote host and relies on a complete X11 client environment locally, Term.Everything❗ offers remarkable simplicity. With just a single, compact binary download, you can achieve what previously required extensive configuration and multiple components. The solution is distributed as a self-executable AppImage binary with a compact footprint of less than 50MB (the latest version at the time of writing is 41.9MB).
Terminal
While not mandatory, it is recommended to use a terminal that supports image rendering. The visual quality of the application window is constrained by the number of rows and columns available in your terminal. Standard terminals like Gnome Terminal will work, but with limited resolution.
This presents an excellent opportunity to evaluate Ghostty, a modern terminal emulator available for both Linux and macOS.
snap install ghostty --classic
However, mouse support in Ghostty may be limited with Term.Everything. Better results have been achieved with Kitty on Linux or iTerm2 on macOS. The following commands installs and starts Kitty on Ubuntu:
apt install -y kitty
kitty
Test environment
Term.Everything❗ can be executed from a local terminal, remotely via SSH, or within a virtual machine. For demonstration purposes, we’ll use an Ubuntu image running as an Incus container.
# Create an incus container
incus --project default launch images:ubuntu/24.04 term-everything
incus --project default shell term-everything
Installation
The following steps download the self-executable AppImage binary and prepare it for use.
The AppImage requires two specific libraries. We’ll also install curl to facilitate downloading the binary.
# Install required dependencies
apt install -y curl libharfbuzz0b libfontconfig1 >/dev/null 2>&1
# Download and prepare the binary
curl -L -o term-everything https://github.com/mmulet/term.everything/releases/download/0.5.1/term.everything.mmulet.com-dont_forget_to_chmod_+x_this_file
# Make it executable
chmod u+x term-everything
Usage
To demonstrate the functionality, we’ll create a simple HTML file and open it with Firefox.
# Install targeted application
apt install -y firefox >/dev/null 2>&1
# Write a sample HTML file
echo '<h1>Hello</h1>' > test.html
# Start firefox, wait for a few seconds
./term-everything firefox test.html
To launch a GUI application, append the application command to term-everything
and watch as the graphical interface appears directly in the terminal.
Teardown
After testing, the Incus container is removed to clean up the environment.
incus --project default delete --force term-everything