A disciplined GTK4 terminal emulator built in C.
A disciplined GTK4 terminal emulator built in C.
Amanay is part of the Light Desktop Stack (LDS): a small, controlled, and maintainable desktop stack built for predictable behavior.
It is designed for real daily use, not feature accumulation.
- Tabs and vertical splits
- Text search with match count
- URL detection and opening
- Configurable shortcuts
- Runtime diagnostics for long sessions
--geometry,--title,--working-directory,--commandflags--no-remotefor independent instances
Amanay is not a GNOME Terminal clone. It is not a feature-heavy terminal.
Horizontal splits, nested pane trees, themes, plugins, and scripting APIs are outside its scope by design.
| Dependency | Minimum version |
|---|---|
| GTK4 | 4.12 |
| Libadwaita | 1.4 |
VTE (vte-2.91-gtk4) |
0.74 |
| Meson | 1.0 |
| Ninja | 1.10 |
| GLib / GIO | 2.78 |
On Debian/Ubuntu:
sudo apt install \
libgtk-4-dev \
libadwaita-1-dev \
libvte-2.91-gtk4-dev \
meson \
ninja-buildOn Fedora:
sudo dnf install \
gtk4-devel \
libadwaita-devel \
vte291-gtk4-devel \
meson \
ninja-buildmeson setup build
meson compile -C buildRun after building:
./build/src/lds-terminalInstall system-wide:
meson install -C build| Option | Default | Description |
|---|---|---|
strict_build |
true |
Treat warnings as errors (-Werror) |
default_renderer |
cairo |
GSK renderer: auto, cairo, ngl, vulkan |
tests |
true |
Build test targets |
system_check_policy |
warn |
Unsupported host: warn or error |
Example:
meson setup build -Ddefault_renderer=ngl -Dsystem_check_policy=errormeson test -C build --print-errorlogsThe suite covers lifecycle, concurrency, settings consistency, search policy, link detection, and several regression scenarios.
Set LDS_TERMINAL_DIAG=1 to enable runtime diagnostics output.
LDS_TERMINAL_DIAG=1 lds-terminalUseful for debugging hangs, shutdown ordering issues, or unexpected behavior under sustained use.
Amanayis the user-facing name.lds-terminalis the technical identity: application ID, executable, schema, resource prefix, andWM_CLASS.
Do not mix them.
The tools/identity_guard.sh script enforces this and runs on every push via CI.
- Command-line parsing is separated from runtime setup
- Window management stays isolated from terminal widget logic
- Search, links, tabs, settings, and diagnostics live in dedicated modules
- The VTE layer is treated as a controlled subsystem, not the whole app
- Ownership and teardown are explicit, so lifecycle transitions stay bounded
Full architecture notes: docs/DESIGN.md
See CONTRIBUTING.md.
Run before submitting:
tools/check_comment_policy.sh
meson compile -C build
meson test -C build --print-errorlogs
tools/identity_guard.shMIT — see LICENSE.