OSC Sequences
OSC escape sequence reference for cmuxterm notifications
OSC Sequences
cmuxterm supports two OSC (Operating System Command) escape sequence standards for sending notifications from terminal programs.
OSC 99 (Kitty Protocol)
The Kitty notification protocol provides rich notification support with multiple parameters.
Format
Or using BEL terminator:
Parameters
Parameters are semicolon-separated key=value pairs:
| Parameter | Description | Values |
|---|---|---|
i | Notification ID | Any string |
e | Event type | 1 = new notification |
d | Done flag | 0 = more data coming, 1 = complete |
p | Payload type | title, body, subtitle |
Payload
After the final semicolon, the payload contains the notification content. If p= is specified, the payload is interpreted as that type.
Examples
Simple notification:
Notification with title and body:
With subtitle:
Shell Function
OSC 777 (RXVT Protocol)
The RXVT/urxvt protocol is simpler, with a fixed format for title and body.
Format
Or with ST terminator:
Examples
Basic notification:
Build completion:
With ST terminator:
Shell Function
Comparison
| Feature | OSC 99 | OSC 777 |
|---|---|---|
| Title | ✓ | ✓ |
| Body | ✓ | ✓ |
| Subtitle | ✓ | ✗ |
| Notification ID | ✓ | ✗ |
| Complexity | Higher | Lower |
| Compatibility | Kitty, cmuxterm | RXVT, cmuxterm |
Recommendations
- Use OSC 777 for simple title + body notifications
- Use OSC 99 when you need subtitles or notification IDs
- Use the CLI (
cmuxterm notify) for the easiest integration
Testing
Test notifications in your terminal:
Integration with Other Tools
tmux
If using tmux inside cmuxterm, enable passthrough:
Then wrap sequences:
SSH
Notifications work over SSH if your SSH client supports OSC passthrough. Most modern terminals do.