Benachrichtigungen

cmux unterstützt Desktop-Benachrichtigungen, mit denen KI-Agenten und Skripte Sie benachrichtigen können, wenn sie Aufmerksamkeit benötigen.

Lebenszyklus

  1. Empfangen: Benachrichtigung erscheint im Panel, Desktop-Alarm wird ausgelöst (falls nicht unterdrückt)
  2. Ungelesen: Badge wird auf dem Workspace-Tab angezeigt
  3. Gelesen: Wird gelöscht, wenn Sie den Workspace anzeigen
  4. 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:

VariableBeschreibung
CMUX_NOTIFICATION_TITLEBenachrichtigungstitel (Workspace-Name oder App-Name)
CMUX_NOTIFICATION_SUBTITLEBenachrichtigungs-Untertitel
CMUX_NOTIFICATION_BODYBenachrichtigungstext
Examples
# 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.log

Der 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'
Shell function
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\\'
FunktionOSC 99OSC 777
Titel + TextJaJa
UntertitelJaNein
Benachrichtigungs-IDJaNein
KomplexitätHöherNiedriger
Verwenden Sie OSC 777 für einfache Benachrichtigungen. Verwenden Sie OSC 99, wenn Sie Untertitel oder Benachrichtigungs-IDs benötigen. Verwenden Sie die CLI (cmux notify) für die einfachste Integration.

Claude Code Hooks

cmux integriert sich mit Claude Code über Hooks, um Sie zu benachrichtigen, wenn Aufgaben abgeschlossen sind.

1. Hook-Skript erstellen

~/.claude/hooks/cmux-notify.sh
#!/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"
        ;;
esac
chmod +x ~/.claude/hooks/cmux-notify.sh

2. Claude Code konfigurieren

~/.claude/settings.json
{
  "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

~/.zshrc
# 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 build

Python

python
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

node
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:

.tmux.conf
set -g allow-passthrough on
printf '\ePtmux;\e\e]777;notify;Title;Body\a\e\\'