-
-
Notifications
You must be signed in to change notification settings - Fork 0
Terminal
Super+Return opens syntty, the terminal SynapseOS ships and the
default one since synui 0.1.0-359. It is what xdg-open reaches for on
anything marked Terminal=true, what the start menu opens, and what SYNAPSE
Settings ▸ Default Applications offers first.
It links no GL. wl_shm, xdg-shell, xkbcommon and libc — no EGL, no OpenGL,
no toolkit, no cairo. Cells become pixels on the CPU, in the XRGB8888 a
Wayland compositor already wants, so the buffer crosses with no conversion and
no library in between.
That is the reason it belongs on the install media whatever your default is: a GL context is the one thing an installer image cannot count on across unfamiliar hardware, and a live session with no way to open a prompt is a rescue disk that cannot rescue anything.
| Binary | 359 KB (kitty: 65 MiB) |
| Window on screen | 5.8 ms |
| 4K interactive edit | 68× less work than a full repaint — same pixels |
| Parse 2.56 MB | 96.1 ms → 44.5 ms |
syntty # a shell
syntty -e htop # run one command — the flag every launcher emits
syntty --hold -e ./build.sh # keep the output on screen after it exits
syntty --config ~/other.conf # a different config
syntty --no-config # ignore the config file entirely--hold is the one worth knowing: it keeps the tab open with the command's
exit status once it finishes, for a window that was opened to run one thing and
where the output is the point. Update System and System Status in the start menu
both use it.
A tab is a whole session — its own grid, its own parser, its own pty and its own child — sharing only the window, the font and the renderer. A second tab therefore costs tens of kilobytes rather than a second process with a second copy of everything in it.
These never reach the program running inside:
| Key | What it does |
|---|---|
Ctrl+Shift+T / W
|
new tab / close this one |
Ctrl+Shift+Left / Right
|
the tab before or after |
Ctrl+Shift+1…9
|
that tab by number (or click it in the bar) |
Ctrl+Shift+C / V
|
copy the selection / paste the clipboard |
Shift+Insert
|
paste the primary selection, as middle-click does |
Shift+PgUp / PgDn / Home / End
|
the scrollback |
Ctrl+Shift+Up / Down
|
jump to the previous or next prompt |
Plain Ctrl+C stays SIGINT, as it must — that is why the clipboard pair
carries Shift.
Drag to select; double-click for a word, triple-click for a line. Shift-drag selects even while a program is reading the mouse. A program inside can read and write the clipboard through OSC 52, which is how a remote editor's yank reaches your local clipboard over SSH.
A paste is the dangerous direction. A terminal that writes the clipboard to the pty unchanged has turned a copy into an execution channel: copy a command off a web page and the page can append a newline, so the shell runs it before you have read it. Bracketed paste (
?2004) exists to stop that, by telling the shell the text was pasted and its newlines are not Enter — but it is only as good as its wrapper, and a clipboard containing the end marker closes the bracket early. Sosynttystrips control bytes from the payload first, which makes the marker unforgeable, and it does that whether or not the program turned bracketed paste on — against an old shell or a plaincat, the stripping is the only protection there is.
Selection and mouse reporting, and which one runs is never the terminal's choice: a program that asks for mouse events (vim, htop, less) gets them, and everything else leaves the pointer to you.
syntty speaks the kitty graphics protocol, so icat and anything else
that emits it put a real image in the window. Despite the name it has nothing to
do with the GPU — it is an escape sequence.
The kitty keyboard protocol is supported, which is what makes Ctrl+I and
Tab — the same bytes in the legacy encoding — distinguishable at all. Key
repeat is the client's job on Wayland (the compositor hands over the rate and
delay once, and never sends a repeated event), and DECCKM is honoured, so
full-screen programs get the arrow-key encoding they asked for.
$XDG_CONFIG_HOME/syntty/syntty.conf, or ~/.config/syntty/syntty.conf when
that is unset — key = value, one per line, no sections. Command-line flags win
over the file, and --no-config ignores it entirely.
font = JetBrains Mono
font_size = 10.5 # points, the unit the rest of the desktop uses
columns = 80 # the size the window asks for, when it may choose
rows = 24
scrollback = 1000 # lines of history, allocated as output scrolls off
scroll_lines = 3 # lines per wheel notchThe shipped file has every key commented out at its default, so it doubles as
the reference. Colours are settable too (foreground, background, and the
eight names), but the desktop theme sets them for you — see below.
Text size is a desktop-wide setting: Control panel ▸ Appearance writes
fontandfont_sizehere in place, alongside every other window in the suite. Editing this file by hand and changing it in the panel are the same change.
Colours come from the desktop theme rather than a palette of its own, so switching to Windows 95 or macOS 26 moves the terminal with everything else. Two consequences worth knowing:
-
dimtext stays legible on a pale theme. A fixed blend toward the background darkens on a dark theme and lightens on a light one, which on the silver themes made dim text nearly invisible. -
It answers
ESC ] 11 ; ?honestly — "what colour are you?" — so a program that picks its own text colours against the background gets the right answer. A terminal that does not reply at all is read as dark by convention, which is how a light theme ends up with unreadable output.
It also honours DECTCEM: a program that hid the cursor gets a window with no cursor drawn in it.
syntty and synsh ship both halves of OSC 133, the de-facto
semantic-prompt protocol — the shell marks where a prompt, its input and its
output begin, and the terminal can then jump between commands and copy exactly
one command's output.
They are the standard's marks rather than ours, so any terminal that already
speaks OSC 133 gets the same thing out of synsh, and any shell that emits them
works here.
It is still packaged, still installable, and still works. Nothing in SynapseOS
opens it any more — the last three call sites pinned to it (System Status,
Update System, and syn-update's Install button) moved across when --hold
landed — so synpkg remove kitty succeeds, which it did not before.
A synuirc written between synui 215 and 358 still names terminal = kitty,
and that is treated as a real choice rather than overwritten. To move:
# ~/.config/synui/synuirc
terminal = synttyfoot is still on the image too, as the CPU-rendered fallback.
See also: Commands · The Desktop · Keybindings · synsh
Using it
- Installation
- Welcome Guide
- Updating
- Software
- Files
- Settings
- Calendar
- Editor
- Studio
- Terminal
- Keybindings
- Speech and dictation
- Remote Desktop
- Commands
- Configuration
- Nix
- Gaming
- Big Screen
- DaVinci Resolve
- Secure Boot
- Troubleshooting
Customising it
Components
Apps
Hacking on it