ជូនដំណឹង

cmux គាំទ្រជូនដំណឹងផ្ទៃតុ, អនុញ្ញាតឱ្យ AI agent និងស្គ្រីបជូនដំណឹងអ្នកនៅពេលពួកវាត្រូវការការយកចិត្តទុកដាក់។

វដ្តជីវិត

  1. បានទទួល: ជូនដំណឹងបង្ហាញក្នុង panel, ការជូនដំណឹងផ្ទៃតុដំណើរការ (ប្រសិនបើមិនត្រូវបានបង្ហាប់)
  2. មិនទាន់អាន: ស្លាកបង្ហាញនៅលើផ្ទាំង workspace
  3. បានអាន: សម្អាតនៅពេលអ្នកមើល workspace នោះ
  4. បានសម្អាត: លុបចេញពី panel

ការបង្ហាប់

ការជូនដំណឹងផ្ទៃតុត្រូវបានបង្ហាប់នៅពេល:

  • បង្អួច cmux កំពុងផ្ដោត
  • workspace ជាក់លាក់ដែលផ្ញើជូនដំណឹងកំពុងដំណើរការ
  • ផ្ទាំងជូនដំណឹងកំពុងបើក

ផ្ទាំងជូនដំណឹង

ចុច ⌘⇧I ដើម្បីបើកផ្ទាំងជូនដំណឹង។ ចុចជូនដំណឹងដើម្បីលោតទៅ workspace នោះ។ ចុច ⌘⇧U ដើម្បីលោតផ្ទាល់ទៅ workspace ដែលមានជូនដំណឹងមិនទាន់អានថ្មីបំផុត។

ពាក្យបញ្ជាផ្ទាល់ខ្លួន

ដំណើរការពាក្យបញ្ជា shell រាល់ពេលជូនដំណឹងត្រូវបានកំណត់។ កំណត់វាក្នុងការកំណត់ > កម្មវិធី > ពាក្យបញ្ជាជូនដំណឹង។ ពាក្យបញ្ជាដំណើរការតាមរយៈ /bin/sh -c ជាមួយអថេរបរិស្ថានទាំងនេះ:

អថេរការពិពណ៌នា
CMUX_NOTIFICATION_TITLEចំណងជើងជូនដំណឹង (ឈ្មោះ workspace ឬឈ្មោះកម្មវិធី)
CMUX_NOTIFICATION_SUBTITLEចំណងជើងរងជូនដំណឹង
CMUX_NOTIFICATION_BODYអត្ថបទមាតិកាជូនដំណឹង
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

ពាក្យបញ្ជាដំណើរការដោយឯករាជ្យពីឧបករណ៍ជ្រើសរើសសម្លេងប្រព័ន្ធ។ កំណត់ឧបករណ៍ជ្រើសរើសទៅ "គ្មាន" ដើម្បីប្រើតែពាក្យបញ្ជាផ្ទាល់ខ្លួន ឬរក្សាទាំងពីរសម្រាប់សម្លេងប្រព័ន្ធនិងសកម្មភាពផ្ទាល់ខ្លួន។

ការផ្ញើជូនដំណឹង

CLI

cmux notify --title "Task Complete" --body "Your build finished"
cmux 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 (cmux notify) សម្រាប់ការរួមបញ្ចូលងាយស្រួលបំផុត។

Claude Code hooks

cmux រួមបញ្ចូលជាមួយ Claude Code តាមរយៈ hooks ដើម្បីជូនដំណឹងអ្នកនៅពេលភារកិច្ចបានបញ្ចប់។

1. បង្កើត hook script

~/.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 '.hook_event_name // "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

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

ចាប់ផ្ដើម Claude Code ឡើងវិញដើម្បីអនុវត្ត hooks។

GitHub Copilot CLI

Copilot CLI គាំទ្រhooks ដែលដំណើរការពាក្យបញ្ជា shell នៅព្រឹត្តិការណ៍វដ្តជីវិតដូចជាការបញ្ជូន prompt ការបញ្ឈប់ agent និងកំហុស។

~/.copilot/config.json
{
  "hooks": {
    "userPromptSubmitted": [
      {
        "type": "command",
        "bash": "if command -v cmux &>/dev/null; then cmux set-status copilot_cli Running; fi",
        "timeoutSec": 3
      }
    ],
    "agentStop": [
      {
        "type": "command",
        "bash": "if command -v cmux &>/dev/null; then cmux notify --title 'Copilot CLI' --body 'Done'; cmux set-status copilot_cli Idle; fi",
        "timeoutSec": 5
      }
    ],
    "errorOccurred": [
      {
        "type": "command",
        "bash": "if command -v cmux &>/dev/null; then cmux notify --title 'Copilot CLI' --subtitle 'Error' --body 'An error occurred'; cmux set-status copilot_cli Error; fi",
        "timeoutSec": 5
      }
    ],
    "sessionEnd": [
      {
        "type": "command",
        "bash": "if command -v cmux &>/dev/null; then cmux clear-status copilot_cli; fi",
        "timeoutSec": 3
      }
    ]
  }
}

សម្រាប់ hooks កម្រិត repo សូមបង្កើតឯកសារ .github/hooks/notify.json ដោយមានរចនាសម្ព័ន្ធដូចគ្នា:

.github/hooks/notify.json
{
  "version": 1,
  "hooks": {
    "userPromptSubmitted": [ ... ],
    "agentStop": [ ... ]
  }
}

ឧទាហរណ៍ការរួមបញ្ចូល

ជូនដំណឹងបន្ទាប់ពីពាក្យបញ្ជាយូរ

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

ប្រសិនបើប្រើ tmux ក្នុង cmux, បើក passthrough:

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