Powiadomienia

imux obsługuje powiadomienia na pulpicie, pozwalając agentom AI i skryptom alarmować Cię gdy potrzebują uwagi.

Cykl życia

  1. Odebrane: powiadomienie pojawia się w panelu, alert na pulpicie się uruchamia (jeśli nie jest wytłumiony)
  2. Nieprzeczytane: odznaka wyświetlana na karcie workspace'a
  3. Przeczytane: usunięte gdy wyświetlisz ten workspace
  4. Wyczyszczone: usunięte z panelu

Wyciszanie

Alerty na pulpicie są wyciszane gdy:

  • Okno imux jest sfokusowane
  • Konkretny workspace wysyłający powiadomienie jest aktywny
  • Panel powiadomień jest otwarty

Panel powiadomień

Naciśnij ⌘⇧I aby otworzyć panel powiadomień. Kliknij powiadomienie aby przejść do tego workspace'a. Naciśnij ⌘⇧U aby przejść bezpośrednio do workspace'a z najnowszym nieprzeczytanym powiadomieniem.

Niestandardowe polecenie

Uruchom polecenie powłoki za każdym razem gdy powiadomienie jest zaplanowane. Ustaw to w Ustawieniach > Aplikacja > Polecenie powiadomienia. Polecenie uruchamia się przez /bin/sh -c z tymi zmiennymi środowiskowymi:

ZmiennaOpis
ICC_NOTIFICATION_TITLETytuł powiadomienia (nazwa workspace'a lub aplikacji)
ICC_NOTIFICATION_SUBTITLEPodtytuł powiadomienia
ICC_NOTIFICATION_BODYTreść powiadomienia
Examples
# Text-to-speech
say "$ICC_NOTIFICATION_TITLE"

# Custom sound file
afplay /path/to/sound.aiff

# Log to file
echo "$ICC_NOTIFICATION_TITLE: $ICC_NOTIFICATION_BODY" >> ~/notifications.log

Polecenie działa niezależnie od wybieraka dźwięku systemowego. Ustaw wybierak na "Brak" aby używać tylko niestandardowego polecenia, lub zachowaj oba dla dźwięku systemowego plus niestandardowa akcja.

Wysyłanie powiadomień

CLI

icc notify --title "Task Complete" --body "Your build finished"
icc notify --title "Claude Code" --subtitle "Waiting" --body "Agent needs input"

OSC 777 (prosty)

Protokół RXVT używa stałego formatu z tytułem i treścią:

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 (zaawansowany)

Protokół Kitty obsługuje podtytuły i identyfikatory powiadomień:

# 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\\'
FunkcjaOSC 99OSC 777
Tytuł + treśćTakTak
PodtytułTakNie
ID powiadomieniaTakNie
ZłożonośćWyższaNiższa
Użyj OSC 777 do prostych powiadomień. Użyj OSC 99 gdy potrzebujesz podtytułów lub identyfikatorów powiadomień. Użyj CLI (icc notify) dla najłatwiejszej integracji.

Hooki Claude Code

imux integruje się z Claude Code przez hooki aby powiadamiać Cię gdy zadania się zakończą.

1. Utwórz skrypt hooka

~/.claude/hooks/icc-notify.sh
#!/bin/bash
# Skip if not in icc
[ -S /tmp/icc.sock ] || exit 0

EVENT=$(cat)
EVENT_TYPE=$(echo "$EVENT" | jq -r '.hook_event_name // "unknown"')
TOOL=$(echo "$EVENT" | jq -r '.tool_name // ""')

case "$EVENT_TYPE" in
    "Stop")
        icc notify --title "Claude Code" --body "Session complete"
        ;;
    "PostToolUse")
        [ "$TOOL" = "Task" ] && icc notify --title "Claude Code" --body "Agent finished"
        ;;
esac
chmod +x ~/.claude/hooks/icc-notify.sh

2. Skonfiguruj Claude Code

~/.claude/settings.json
{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/icc-notify.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Task",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/icc-notify.sh"
          }
        ]
      }
    ]
  }
}

Zrestartuj Claude Code aby zastosować hooki.

Przykłady integracji

Powiadom po długim poleceniu

~/.zshrc
# Add to your shell config
notify-after() {
  "$@"
  local exit_code=$?
  if [ $exit_code -eq 0 ]; then
    icc notify --title "✓ Command Complete" --body "$1"
  else
    icc 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

Jeśli używasz tmux wewnątrz imux, włącz passthrough:

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