Skip to content

Tessa 0.2.1

Choose a tag to compare

@Keychrom Keychrom released this 28 Oct 19:29
· 119 commits to main since this release

Tessa 0.2.1

Tessa 0.2.1 is a startup-environment patch release. It fixes how Tessa hands
signals, DISPLAY/XMODIFIERS, and the initial fractional scale to new
clients. It also adds regressions for spawn state, fake and real XWayland
readiness, late fractional scale, and Kitty startup.

Fixed

  • Spawn signal state: children no longer inherit Tessa's blocked
    SIGINT/SIGTERM mask or ignored signal dispositions such as SIGCHLD.
    This applies to terminals, panels, event hooks, layout helpers, and
    XWayland. A terminal launched from a binding, the launcher, or tessa-ctl
    now starts in the same signal state as one launched from a shell.
  • DISPLAY readiness: Tessa 0.2.0 exported DISPLAY before
    xwayland-satellite had created its X socket. 0.2.1 waits for the socket and
    only then publishes DISPLAY; it does not invent one when the satellite is
    missing. XMODIFIERS is likewise exported only with a ready X display and
    xim = true.
  • Initial fractional scale: Tessa now advertises wl_compositor v6, and
    new toplevels/layer surfaces receive their output's preferred fractional
    scale on their initial commit. Previously a window mapped after startup could
    start at scale 1 until an unrelated output scale change. Clients created
    after a wlr-randr --scale 1.5 change now receive 180/120
    (preferred_scale(180)) immediately.
  • Hotplug cleanup: output rules are applied when an output is added, and
    tracked libinput device listeners are detached during shutdown. These fixes
    were present in the 0.2.0 package build but missing from the matching source
    tree.
  • Launcher terminal commands: no code change was needed for quote handling;
    Tessa already escapes Terminal=true commands as terminal sh -c '...'.
    A command that exits immediately closes its terminal by design. Kitty's own
    kitty.desktop is Terminal=false.

Why Kitty can still disappear

Kitty needs a working EGL/GL stack. On a VM without 3D acceleration it can map a
window and then exit when EGL setup fails, even though Tessa is healthy. This is
the same limitation documented for 0.2.0. Use foot in that environment, or
install Mesa's software EGL and try LIBGL_ALWAYS_SOFTWARE=1. To confirm which
side exited, run Kitty from a foot terminal inside Tessa:

tessa-ctl spawn foot
WAYLAND_DEBUG=1 kitty

Tessa logs new toplevel when the window reaches the compositor; if the window
still closes, the client or its shell exited. See the terminal troubleshooting
section in the guide.

Install (Ubuntu 26.04 amd64)

curl -fLO https://github.com/Keychrom/Tessa/releases/download/v0.2.1/tessa_0.2.1_amd64.deb
curl -fLO https://github.com/Keychrom/Tessa/releases/download/v0.2.1/SHA256SUMS
grep ' tessa_0.2.1_amd64.deb$' SHA256SUMS | sha256sum -c -
sudo apt install ./tessa_0.2.1_amd64.deb

Then log out and select Tessa in the display manager.

The binaries are unsigned; verify SHA256SUMS before installing. Include
TESSA_DEBUG=1 logs, tessa-ctl state, tessa-ctl config, and GPU/distribution
details in bug reports.

SHA-256:
50ccec6d7d24133487d23d96de6c39e7c3590666041351d2150e59f8c4305b41 tessa_0.2.1_amd64.deb