boxi

Boxi

A terminal emulator for use with Toolbox.

This is a thought-experiment app based around the idea of having a terminal emulator running in a separate container from the session inside of it, with the kernel as the only intermediary.

This is accomplished by means of file descriptor passing of the pseudo-terminal device from a small “agent” program running on the other side of a container boundary. The agent is started using the usual container tools (flatpak-spawn, toolbox, podman), but creating a session is done purely via sockets.

The recommended way to install Boxi is from Flathub, but it’s also possible to install via pip:

pip install boxi

Note that after installing Boxi this way, you’ll need to manually compile the GSettings schema file:

glib-compile-schemas ~/.local/share/glib-2.0/schemas/

The install comes with a .desktop file, so Boxi can be launched from the desktop shell. It can also be launched from the command line:

boxi

By default, Boxi will create sessions on the host system. If you’d like to create sessions in a named Toolbox container, use -c:

boxi -c f36

Boxi uses different application identifiers when it is run for different containers. This allows creating individual launcher icons for each container. For example, ~/.local/share/applications/dev.boxi.Boxi.f36.desktop:

[Desktop Entry]
Type=Application
Name=Fedora 36 (Boxi)
Icon=fedora
StartupNotify=true
Exec=boxi -c f36