Notifikacije
cmux podržava desktop notifikacije, omogućavajući AI agentima i skriptama da vas obavijeste kada trebaju pažnju.
Životni ciklus
- Primljeno: notifikacija se pojavljuje u panelu, desktop obavještenje se pokreće (ako nije potisnuto)
- Nepročitano: bedž prikazan na tabu radnog prostora
- Pročitano: obrisano kada pogledate taj radni prostor
- Obrisano: uklonjeno iz panela
Potiskivanje
Desktop obavještenja se potiskuju kada:
- cmux prozor je fokusiran
- Specifični radni prostor koji šalje notifikaciju je aktivan
- Panel notifikacija je otvoren
Panel notifikacija
Pritisnite ⌘⇧I za otvaranje panela notifikacija. Kliknite na notifikaciju za skok na taj radni prostor. Pritisnite ⌘⇧U za direktan skok na radni prostor sa najnovijom nepročitanom notifikacijom.
Prilagođena komanda
Pokrenite shell komandu svaki put kada je notifikacija zakazana. Postavite je u Postavke > Aplikacija > Komanda notifikacije. Komanda se pokreće putem /bin/sh -c sa ovim varijablama okruženja:
| Varijabla | Opis |
|---|---|
CMUX_NOTIFICATION_TITLE | Naslov notifikacije (ime radnog prostora ili aplikacije) |
CMUX_NOTIFICATION_SUBTITLE | Podnaslov notifikacije |
CMUX_NOTIFICATION_BODY | Tekst tijela notifikacije |
# 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.logKomanda se pokreće nezavisno od sistemskog birača zvukova. Postavite birač na "Ništa" za korištenje samo prilagođene komande, ili zadržite oboje za sistemski zvuk plus prilagođenu akciju.
Slanje notifikacija
CLI
cmux notify --title "Task Complete" --body "Your build finished"
cmux notify --title "Claude Code" --subtitle "Waiting" --body "Agent needs input"OSC 777 (jednostavno)
RXVT protokol koristi fiksni format sa naslovom i tijelom:
printf '\e]777;notify;My Title;Message body here\a'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 (bogato)
Kitty protokol podržava podnaslove i ID-eve notifikacija:
# 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\\'| Funkcionalnost | OSC 99 | OSC 777 |
|---|---|---|
| Naslov + tijelo | Da | Da |
| Podnaslov | Da | Ne |
| ID notifikacije | Da | Ne |
| Složenost | Viša | Niža |
Claude Code hooks
cmux se integriše sa Claude Code putem hookova da vas obavijesti kada su zadaci završeni.
1. Kreirajte hook skriptu
#!/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"
;;
esacchmod +x ~/.claude/hooks/cmux-notify.sh2. Konfigurirajte Claude Code
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/cmux-notify.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Task",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/cmux-notify.sh"
}
]
}
]
}
}Ponovo pokrenite Claude Code da primijenite hookove.
GitHub Copilot CLI
Copilot CLI podržava hookove koji pokreću shell komande na događajima životnog ciklusa poput slanja upita, zaustavljanja agenta i grešaka.
{
"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
}
]
}
}Za hookove na nivou repozitorija, kreirajte .github/hooks/notify.json datoteku sa istom strukturom:
{
"version": 1,
"hooks": {
"userPromptSubmitted": [ ... ],
"agentStop": [ ... ]
}
}Primjeri integracije
Notifikacija nakon duge komande
# 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 buildPython
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
function notify(title, body) {
process.stdout.write(`\x1b]777;notify;${title};${body}\x07`);
}
notify('Build Done', 'webpack finished');tmux passthrough
Ako koristite tmux unutar cmux-a, omogućite passthrough:
set -g allow-passthrough onprintf '\ePtmux;\e\e]777;notify;Title;Body\a\e\\'