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)