Benachrichtigungen
cmux unterstützt Desktop-Benachrichtigungen, mit denen KI-Agenten und Skripte Sie benachrichtigen können, wenn sie Aufmerksamkeit benötigen.
Lebenszyklus
- Empfangen: Benachrichtigung erscheint im Panel, Desktop-Alarm wird ausgelöst (falls nicht unterdrückt)
- Ungelesen: Badge wird auf dem Workspace-Tab angezeigt
- Gelesen: Wird gelöscht, wenn Sie den Workspace anzeigen
- Gelöscht: Aus dem Panel entfernt
Unterdrückung
Desktop-Alarme werden unterdrückt, wenn:
- Das cmux-Fenster fokussiert ist
- Der spezifische Workspace, der die Benachrichtigung sendet, aktiv ist
- Das Benachrichtigungspanel geöffnet ist
Benachrichtigungspanel
Drücken Sie ⌘⇧I, um das Benachrichtigungspanel zu öffnen. Klicken Sie auf eine Benachrichtigung, um zu diesem Workspace zu springen. Drücken Sie ⌘⇧U, um direkt zum Workspace mit der neuesten ungelesenen Benachrichtigung zu springen.
Benutzerdefinierter Befehl
Führen Sie jedes Mal einen Shell-Befehl aus, wenn eine Benachrichtigung geplant wird. Setzen Sie ihn unter Einstellungen > App > Benachrichtigungsbefehl. Der Befehl wird über /bin/sh -c mit diesen Umgebungsvariablen ausgeführt:
| Variable | Beschreibung |
|---|---|
CMUX_NOTIFICATION_TITLE | Benachrichtigungstitel (Workspace-Name oder App-Name) |
CMUX_NOTIFICATION_SUBTITLE | Benachrichtigungs-Untertitel |
CMUX_NOTIFICATION_BODY | Benachrichtigungstext |
# Text-to-speech
say "$CMUX_NOTIFICATION_TITLE"
# Custom sound file
afplay /path/to/sound.aiff
# Log to file
echo "$CMUX_NOTIFICATION_TITLE: $CMUX_NOTIFICATION_BODY" >> ~/notifications.logDer Befehl läuft unabhängig von der System-Soundauswahl. Setzen Sie die Auswahl auf "Ohne", um nur den benutzerdefinierten Befehl zu verwenden, oder behalten Sie beides für einen Systemsound plus eine benutzerdefinierte Aktion bei.
Benachrichtigungen senden
CLI
cmux notify --title "Task Complete" --body "Your build finished"
cmux notify --title "Claude Code" --subtitle "Waiting" --body "Agent needs input"OSC 777 (einfach)
Das RXVT-Protokoll verwendet ein festes Format mit Titel und Inhalt:
printf '\e]777;notify;My Title;Message body here\a'notify_osc777() {
local title="$1"
local body="$2"
printf '\e]777;notify;%s;%s\a' "$title" "$body"
}
notify_osc777 "Build Complete" "All tests passed"OSC 99 (erweitert)
Das Kitty-Protokoll unterstützt Untertitel und Benachrichtigungs-IDs:
# Format: ESC ] 99 ; <params> ; <payload> ESC \
# Simple notification
printf '\e]99;i=1;e=1;d=0:Hello World\e\\'
# With title, subtitle, and body
printf '\e]99;i=1;e=1;d=0;p=title:Build Complete\e\\'
printf '\e]99;i=1;e=1;d=0;p=subtitle:Project X\e\\'
printf '\e]99;i=1;e=1;d=1;p=body:All tests passed\e\\'| Funktion | OSC 99 | OSC 777 |
|---|---|---|
| Titel + Text | Ja | Ja |
| Untertitel | Ja | Nein |
| Benachrichtigungs-ID | Ja | Nein |
| Komplexität | Höher | Niedriger |
Claude Code Hooks
cmux integriert sich mit Claude Code über Hooks, um Sie zu benachrichtigen, wenn Aufgaben abgeschlossen sind.
1. Hook-Skript erstellen
#!/bin/bash
# Skip if not in cmux
[ -S /tmp/cmux.sock ] || exit 0
EVENT=$(cat)
EVENT_TYPE=$(echo "$EVENT" | jq -r '.event // "unknown"')
TOOL=$(echo "$EVENT" | jq -r '.tool_name // ""')
case "$EVENT_TYPE" in
"Stop")
cmux notify --title "Claude Code" --body "Session complete"
;;
"PostToolUse")
[ "$TOOL" = "Task" ] && cmux notify --title "Claude Code" --body "Agent finished"
;;
esacchmod +x ~/.claude/hooks/cmux-notify.sh2. Claude Code konfigurieren
{
"hooks": {
"Stop": ["~/.claude/hooks/cmux-notify.sh"],
"PostToolUse": [
{
"matcher": "Task",
"hooks": ["~/.claude/hooks/cmux-notify.sh"]
}
]
}
}Starten Sie Claude Code neu, um die Hooks zu aktivieren.
Integrationsbeispiele
Benachrichtigung nach langem Befehl
# Add to your shell config
notify-after() {
"$@"
local exit_code=$?
if [ $exit_code -eq 0 ]; then
cmux notify --title "✓ Command Complete" --body "$1"
else
cmux notify --title "✗ Command Failed" --body "$1 (exit $exit_code)"
fi
return $exit_code
}
# Usage: notify-after npm run buildPython
import sys
def notify(title: str, body: str):
"""Send OSC 777 notification."""
sys.stdout.write(f'\x1b]777;notify;{title};{body}\x07')
sys.stdout.flush()
notify("Script Complete", "Processing finished")Node.js
function notify(title, body) {
process.stdout.write(`\x1b]777;notify;${title};${body}\x07`);
}
notify('Build Done', 'webpack finished');tmux Passthrough
Wenn Sie tmux innerhalb von cmux verwenden, aktivieren Sie Passthrough:
set -g allow-passthrough onprintf '\ePtmux;\e\e]777;notify;Title;Body\a\e\\'