Files
mesh-catalog/modules/xterm/README.md
T
jochen e4abc6eb88 xterm: the terminal holds node-terminal-emulator; its resources through xorg's slot (hq ADR 0208)
It requires x11-display, names itself in TERMINAL, and contributes its X resources
to the xresources slot normal: today's palette and clipboard keys, JetBrainsMono
Nerd Font, 10000 lines of scrollback, all scoped to XTerm* instead of every Xt
program. It owns no file.

The tools are the seat's open, which starts a terminal through the account's
service manager so it outlives the runtime's restarts, and font (in force, what
fontconfig resolves it to, set for new terminals) and colours.
2026-10-04 13:21:47 +02:00

61 lines
3.2 KiB
Markdown

# xterm
The terminal as a module (novox/hq ADR 0208, research 026, to-be 42 phase 2, step 5).
- **Claims `node-terminal-emulator`** and serves its verb `open`.
- **Requires `x11-display`.** In a Wayland session, `xwayland` would provide it.
- **Package `xterm`.**
- **Environment** (ADR 0203): `TERMINAL=xterm`. i3's `$mod+Return` runs `i3-sensible-terminal`, which
starts whatever `$TERMINAL` names, so the window manager no longer names the terminal.
- **X resources**, contributed to the `xresources` slot `normal` and placed by `xorg` in its resources
file. It owns no file of its own.
## The resources
They are those both workstations ran, with three changes:
- **face:** `JetBrainsMono Nerd Font` 12, replacing Hack (research 026/04);
- **scope:** every resource is under `XTerm*`. Today they were `*faceName`, `*background` and so on,
which reached every Xt program. `XTerm*` also outranks a `*name` resource of yours, so the old
`~/.Xresources.d/xterm` cannot win over them while it is still merged;
- **scrollback:** `saveLines` 10000 instead of 2000.
The palette (background, foreground and the sixteen colours) is today's, unchanged. So are the
clipboard keys: Ctrl+Shift+C copies to the clipboard and Ctrl+Shift+V pastes from it. The bundle's
`Resources()` is the one source of these values. The manifest test holds the manifest to it, and
`xterm_colours` compares against it.
## Tools
| tool | | what |
|---|---|---|
| `node-terminal-emulator.open` | d | a terminal in the session: the login shell, or a command run through it (`$SHELL -lc`), in a directory (the home by default), with an optional title, and `hold` to keep it open. It starts as a transient unit of the account's service manager (`systemd-run --user`), so it outlives the call and every runtime restart |
| `xterm_font` | r/a | the face and size in force and the installed font they resolve to (`fc-match`); set face or size for terminals opened from now on. Only installed faces are accepted |
| `xterm_colours` | r | background, foreground, cursor and the sixteen colours as `#rrggbb`, each beside the module's default |
## What it leaves found
`~/.Xresources.d/xterm`, and the `#include` of it in `~/.Xresources`.
## The one-off migration
**Delete `~/.Xresources.d/xterm` and its `#include` line in `~/.Xresources`** once `xterm` is
assigned (see `xorg`'s README for the rest of that file). Until then they are merged after the
mesh's. Being `*`-scoped, they lose to this module's `XTerm*` values, and still reach every other Xt
program.
## What changes when it is assigned
| | g14 | shanks |
|---|---|---|
| package | none (`xterm` present) | the same |
| `xorg`'s resources file | gains this module's resources | the same |
| environment | gains `TERMINAL=xterm` | the same |
| running terminals | **nothing**. The resources are merged at the next login | the same |
| next login | new terminals in JetBrains Mono, with 10000 lines of scrollback | the same. The desktop has a hand-copied build of the face until `fonts` installs the package |
## Blockers
None. It needs `xorg` assigned for `x11-display`, and `fonts` for the face. Without `fonts`,
fontconfig picks the nearest installed face, and `xterm_font` says which one in `resolves_to`.