Уведомления

imux поддерживает десктопные уведомления, позволяя AI-агентам и скриптам оповещать тебя когда им нужно внимание.

Жизненный цикл

  1. Получено: уведомление появляется в панели, десктопный алерт срабатывает (если не подавлен)
  2. Непрочитанное: бейдж показан на вкладке рабочего пространства
  3. Прочитанное: убирается когда ты просматриваешь это рабочее пространство
  4. Очищено: удалено из панели

Подавление

Десктопные алерты подавляются когда:

  • Окно imux сфокусировано
  • Конкретное рабочее пространство, отправляющее уведомление, активно
  • Панель уведомлений открыта

Панель уведомлений

Нажми ⌘⇧I чтобы открыть панель уведомлений. Кликни на уведомление чтобы перейти к этому рабочему пространству. Нажми ⌘⇧U чтобы перейти напрямую к рабочему пространству с самым свежим непрочитанным уведомлением.

Пользовательская команда

Запускай shell-команду каждый раз когда уведомление запланировано. Задай её в Настройки > Приложение > Команда уведомления. Команда запускается через /bin/sh -c с этими переменными окружения:

ПеременнаяОписание
ICC_NOTIFICATION_TITLEЗаголовок уведомления (имя рабочего пространства или приложения)
ICC_NOTIFICATION_SUBTITLEПодзаголовок уведомления
ICC_NOTIFICATION_BODYТекст уведомления
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

Команда работает независимо от системного выбора звуков. Установи выбор на "Нет" чтобы использовать только пользовательскую команду, или оставь оба для системного звука плюс пользовательского действия.

Отправка уведомлений

CLI

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

OSC 777 (простой)

Протокол RXVT использует фиксированный формат с заголовком и телом:

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 (расширенный)

Протокол Kitty поддерживает подзаголовки и ID уведомлений:

# 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\\'
ФункцияOSC 99OSC 777
Заголовок + текстДаДа
ПодзаголовокДаНет
ID уведомленияДаНет
СложностьВышеНиже
Используй OSC 777 для простых уведомлений. Используй OSC 99 когда нужны подзаголовки или ID уведомлений. Используй CLI (icc notify) для самой простой интеграции.

Claude Code hooks

imux интегрируется с Claude Code через hooks чтобы уведомлять тебя когда задачи завершаются.

1. Создай скрипт хука

~/.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. Настрой 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"
          }
        ]
      }
    ]
  }
}

Перезапусти Claude Code чтобы применить хуки.

Примеры интеграций

Уведомление после долгой команды

~/.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

Если используешь tmux внутри imux, включи passthrough:

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