الإشعارات

يدعم imux إشعارات سطح المكتب، مما يسمح لوكلاء الذكاء الاصطناعي والنصوص بتنبيهك عندما يحتاجون انتباهك.

دورة الحياة

  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 عناوين فرعية ومعرفات إشعارات:

# 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
العنوان + المحتوىنعمنعم
العنوان الفرعينعملا
معرّف الإشعارنعملا
التعقيدأعلىأقل
استخدم OSC 777 للإشعارات البسيطة. استخدم OSC 99 عندما تحتاج عناوين فرعية أو معرفات إشعارات. استخدم واجهة الأوامر (icc notify) لأسهل تكامل.

خطافات Claude Code

يتكامل imux مع Claude Code عبر الخطافات لإعلامك عند اكتمال المهام.

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

إذا كنت تستخدم tmux داخل imux، فعّل التمرير:

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