A minimal, fast Wayland terminal emulator
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
socatlolmeow 4873e6e964 feat: cursor blink, dead keys, hyperlinks, rich underlines, mouse tweaks, live config reload
cursor:
  - add blink support (blink, blink_interval config options; defaults: enabled, 500ms)
  - reset blink phase on keypress so the cursor is always visible right after typing
  - integrate blink deadline into the poll timeout alongside repeat and sync

  keyboard:
  - add XKB compose (dead key) support using the system locale
  - wire up zwp_text_input_v3 for IME commit-string events

  mouse:
  - add copy_on_select option (default: true) — auto-copies selection to clipboard
  - add right_click_paste option (default: true) — paste on right click
  - Ctrl+click now also opens OSC 8 hyperlinks in addition to URL-regex matches

  rendering:
  - implement distinct underline styles: single (1), double (2), curly (3), dotted (4), dashed (5)
  - support underline color (SGR 58/59, colon sub-parameter on SGR 4)
  - auto-underline cells with an active hyperlink when no explicit underline is set

  term:
  - OSC 8 hyperlink parsing and per-cell link index tracking
  - desktop notifications via OSC 9 and OSC 777 (notify-send)
  - track SGR parameter separators (;/:) to correctly handle colon sub-parameters

  config:
  - derive Clone on all config structs
  - wrap global CONFIG in Mutex to allow live reload
  - expose config::path() publicly
  - live config reload on mtime change (cursor blink settings, font size)
2026-10-14 18:26:44 +02:00
src feat: cursor blink, dead keys, hyperlinks, rich underlines, mouse tweaks, live config reload 2026-10-14 18:26:44 +02:00
Cargo.lock Initial commit 2026-10-11 20:02:56 +02:00
Cargo.toml Initial commit 2026-10-11 20:02:56 +02:00
CONTRIBUTING.md add: LICENSE & CONTRIBUTING.md 2026-10-11 20:04:03 +02:00
LICENSE add: LICENSE & CONTRIBUTING.md 2026-10-11 20:04:03 +02:00
README.md Add installation section to README 2026-10-12 17:58:36 +00:00

softty

A minimal, fast Wayland terminal emulator written in Rust.

Features

  • Native Wayland client, no X11 or XWayland
  • Fast startup (10-15ms) and low memory usage
  • Software rendering with shared-memory buffers, no GPU or OpenGL required
  • Unicode-aware, including correct width for wide characters
  • Full keyboard layout support through xkbcommon
  • Configurable through a TOML config file

Benchmark

Startup time and memory usage, compared against foot:

Benchmark 1: foot true (40 runs)
                   mean ±     σ    min …   max
  Wall Time [ms]   79.0 ±   7.0   74.3 … 108.6
  Memory [MiB]     31.6 ±   0.1   31.4 …  31.8

Benchmark 2: softty -e true (183 runs)
                   mean ±     σ    min …   max
  Wall Time [ms]   13.1 ±   1.1   11.9 …  17.1   -83.4%  (6.0x faster)
  Memory [MiB]      9.3 ±   0.1    9.0 …   9.4   -70.7%  (3.4x less)

Installation

Arch Linux

yay -S softty-git

Other

Softty is not available on other repositories yet, please build it from source.

Building

Requires Rust 1.70 or newer.

git clone https://github.com/socatlolmeow/softty
cd softty
cargo build --release

The binary ends up in target/release/softty.

Usage

softty
softty -e <command>

Contributing

See CONTRIBUTING.md.

License

GPL-3.0