wire / terminal-osc / 99
OSC 99 is kitty's structured desktop-notification protocol: OSC 99 ; metadata ; payload ST, where metadata is a list of key=value pairs (i= identifier, d= done flag, p= payload type such as title/body, e= base64-encoded) and payload is the (optionally base64) text. It supports multi-chunk notifications, titles+bodies, actions, and icons — far richer than OSC 9.
aka: OSC 99 · ESC ] 99 · kitty notifications · desktop notification
OSC introducer: \x1b] ESC ] (0x1B 0x5D)
terminator (ST|BEL): ST \x1b\ · BEL \x07
| id | name | bytes (ST) | meaning |
|---|---|---|---|
| simple | Simple notification | \x1b]99;;Hello\x1b\ | OSC 99 ; ; <text> ST shows a notification with the given body text (empty metadata = single-chunk, plain). |
| titled | Title + body | \x1b]99;i=1:p=title;Build\x1b\ | OSC 99 ; i=ID : p=title ; <title> ST then OSC 99 ; i=ID : p=body : d=1 ; <body> ST builds a multi-part notification keyed by identifier i. |
per-fact attribution:
agent: curl -H 'accept: application/json' wire.phall.io/terminal-osc/99
or /terminal-osc/99.json