A GTK window for Herdr. The terminal is libghostty-vt. Corral draws it and starts herdr as the child process. Workspaces, splits, and agent state stay in Herdr. Close the window and you detach; the Herdr server keeps running.
Application id: dev.corral.Corral
Binary: corral
Corral looks for herdr on PATH. If it is missing, the window says so and offers to look again.
curl -fsSL https://herdr.dev/install.sh | sh
Install details are at herdr.dev/docs/install. Close the window to detach. That does not stop the server.
Needs Meson 1.0+, Vala, GTK 4.14+, libadwaita 1.5+, HarfBuzz, and Zig 0.17.0. Configure downloads the libghostty-vt 1.0.0 release tarballs into third_party/libghostty-vt and links libghostty-vt.a into corral. It also clones Ghostty v1.4.0 into third_party/ghostty and applies patches/ghostty-gtk-embed.patch. That application library is still built. The window does not link it.
On Arch / CachyOS:
sudo pacman -S meson ninja vala pkgconf gtk4 libadwaita harfbuzz libglvnd git gcc libxml2 libpng zlib bzip2
./scripts/fetch-zig.sh
fetch-zig.sh puts Zig 0.17.0 in third_party/zig-linux. A matching zig on PATH works too. A later configure reuses the unpacked tarballs.
meson setup build
meson compile -C build run
ninja -C build run is the same target. It compiles, then starts corral with GSETTINGS_SCHEMA_DIR pointed at build/data and GHOSTTY_RESOURCES_DIR at /usr/share/ghostty. Running build/src/corral by itself uses the installed schema, which will not have keys added since the last install.
To install:
meson setup build --prefix=/usr
meson compile -C build
sudo meson install -C build
The Arch package depends on ghostty-shell-integration and ghostty-terminfo, and skips installing Corral's copies. A prefix install from this tree ships the shell scripts under $prefix/share/ghostty and the theme files under $prefix/share/corral/ghostty-themes. Appearance (theme, cursor, padding) comes from the user's Ghostty config. Font family and size stay in Corral's preferences.
Tagged releases on GitHub ship an Arch .pkg.tar.zst, an AppImage, and a Flatpak bundle. The AppImage is built on Ubuntu 26.04, so it needs a glibc at least that new.
From a checkout on Arch:
cd packaging/arch
makepkg -si
That builds the git tree two directories up, not an AUR tarball.
Docker smokes that match CI:
./packaging/arch/smoke-docker.sh
./packaging/appimage/smoke-docker.sh
./packaging/flatpak/smoke-docker.sh
The Flatpak smoke needs --privileged for nested bubblewrap. The sandbox gets network because Herdr talks to agents and its server.
meson test -C build --print-errorlogs
herdr checks that herdr is executable when it is on PATH. settings covers font size and window size GSettings. The other suites cover libghostty-vt, Ghostty appearance config, the terminal session, and keyboard and mouse input. None of them need a display.
| Key | Action |
|---|---|
| Ctrl+Q | Quit |
| Ctrl+, | Preferences |
| F11 | Fullscreen |
| Ctrl++ | Larger font |
| Ctrl+- | Smaller font |
| Ctrl+? | Shortcuts overlay |
Reconnect is in the header menu. Font family and size are in preferences (size 8-32). An empty family uses Fira Code, then the desktop monospace font. Window size is remembered on close.
Those chords reach Corral only when Herdr is not eating the key, for example the missing-Herdr page. While a session is attached, keys go to Herdr. Close the window from the header menu if you want to detach.
MIT.