مرجع الواجهة البرمجية
يوفر cmux أداة سطر أوامر ومقبس Unix للتحكم البرمجي. كل أمر متاح عبر كلتا الواجهتين.
المقبس
| البناء | المسار |
|---|---|
| الإصدار | /tmp/cmux.sock |
| التصحيح | /tmp/cmux-debug.sock |
| بناء تصحيح موسوم | /tmp/cmux-debug-<tag>.sock |
تجاوز بمتغير البيئة CMUX_SOCKET_PATH. أرسل طلب JSON واحد منتهي بسطر جديد لكل استدعاء:
{"id":"req-1","method":"workspace.list","params":{}}
// Response:
{"id":"req-1","ok":true,"result":{"workspaces":[...]}}{"command":"..."} غير مدعومة.أوضاع الوصول
| الوضع | الوصف | كيفية التفعيل |
|---|---|---|
| Off | المقبس معطل | واجهة الإعدادات أو CMUX_SOCKET_MODE=off |
| cmux processes only | فقط العمليات التي بدأت داخل طرفيات cmux يمكنها الاتصال. | الوضع الافتراضي في واجهة الإعدادات |
| allowAll | السماح لأي عملية محلية بالاتصال (بدون فحص السلالة). | تجاوز عبر متغير البيئة فقط: CMUX_SOCKET_MODE=allowAll |
خيارات واجهة الأوامر
| العلم | الوصف |
|---|---|
--socket PATH | مسار مقبس مخصص |
--json | الإخراج بتنسيق JSON |
--window ID | استهداف نافذة محددة |
--workspace ID | استهداف مساحة عمل محددة |
--surface ID | استهداف سطح محدد |
--id-format refs|uuids|both | التحكم بتنسيق المعرف في إخراج JSON |
أوامر مساحة العمل
list-workspaces
عرض جميع مساحات العمل المفتوحة.
cmux list-workspaces
cmux list-workspaces --json{"id":"ws-list","method":"workspace.list","params":{}}new-workspace
إنشاء مساحة عمل جديدة.
cmux new-workspace{"id":"ws-new","method":"workspace.create","params":{}}select-workspace
التبديل إلى مساحة عمل محددة.
cmux select-workspace --workspace <id>{"id":"ws-select","method":"workspace.select","params":{"workspace_id":"<id>"}}current-workspace
الحصول على مساحة العمل النشطة حالياً.
cmux current-workspace
cmux current-workspace --json{"id":"ws-current","method":"workspace.current","params":{}}close-workspace
إغلاق مساحة عمل.
cmux close-workspace --workspace <id>{"id":"ws-close","method":"workspace.close","params":{"workspace_id":"<id>"}}أوامر التقسيم
new-split
إنشاء لوح مقسم جديد. الاتجاهات: يسار، يمين، أعلى، أسفل.
cmux new-split right
cmux new-split down{"id":"split-new","method":"surface.split","params":{"direction":"right"}}list-surfaces
عرض جميع الأسطح في مساحة العمل الحالية.
cmux list-surfaces
cmux list-surfaces --json{"id":"surface-list","method":"surface.list","params":{}}focus-surface
التركيز على سطح محدد.
cmux focus-surface --surface <id>{"id":"surface-focus","method":"surface.focus","params":{"surface_id":"<id>"}}أوامر الإدخال
send
إرسال نص إلى الطرفية المركزة.
cmux send "echo hello"
cmux send "ls -la\n"{"id":"send-text","method":"surface.send_text","params":{"text":"echo hello\n"}}send-key
إرسال ضغطة مفتاح. المفاتيح: enter, tab, escape, backspace, delete, up, down, left, right.
cmux send-key enter{"id":"send-key","method":"surface.send_key","params":{"key":"enter"}}send-surface
إرسال نص إلى سطح محدد.
cmux send-surface --surface <id> "command"{"id":"send-surface","method":"surface.send_text","params":{"surface_id":"<id>","text":"command"}}send-key-surface
إرسال ضغطة مفتاح إلى سطح محدد.
cmux send-key-surface --surface <id> enter{"id":"send-key-surface","method":"surface.send_key","params":{"surface_id":"<id>","key":"enter"}}أوامر الإشعارات
notify
إرسال إشعار.
cmux notify --title "Title" --body "Body"
cmux notify --title "T" --subtitle "S" --body "B"{"id":"notify","method":"notification.create","params":{"title":"Title","subtitle":"S","body":"Body"}}list-notifications
عرض جميع الإشعارات.
cmux list-notifications
cmux list-notifications --json{"id":"notif-list","method":"notification.list","params":{}}clear-notifications
مسح جميع الإشعارات.
cmux clear-notifications{"id":"notif-clear","method":"notification.clear","params":{}}أوامر بيانات الشريط الجانبي الوصفية
تعيين مؤشرات الحالة وأشرطة التقدم وإدخالات السجل في الشريط الجانبي لأي مساحة عمل. مفيد لنصوص البناء وتكاملات CI ووكلاء البرمجة بالذكاء الاصطناعي التي تريد إظهار الحالة بنظرة سريعة.
set-status
تعيين مؤشر حالة في الشريط الجانبي. استخدم مفتاحاً فريداً حتى تتمكن الأدوات المختلفة من إدارة إدخالاتها الخاصة.
cmux set-status build "compiling" --icon hammer --color "#ff9500"
cmux set-status deploy "v1.2.3" --workspace workspace:2set_status build compiling --icon=hammer --color=#ff9500 --tab=<workspace-uuid>clear-status
إزالة إدخال حالة من الشريط الجانبي بالمفتاح.
cmux clear-status buildclear_status build --tab=<workspace-uuid>list-status
عرض جميع إدخالات حالة الشريط الجانبي لمساحة عمل.
cmux list-statuslist_status --tab=<workspace-uuid>set-progress
تعيين شريط تقدم في الشريط الجانبي (0.0 إلى 1.0).
cmux set-progress 0.5 --label "Building..."
cmux set-progress 1.0 --label "Done"set_progress 0.5 --label=Building... --tab=<workspace-uuid>clear-progress
مسح شريط تقدم الشريط الجانبي.
cmux clear-progressclear_progress --tab=<workspace-uuid>log
إضافة إدخال سجل إلى الشريط الجانبي. المستويات: info, progress, success, warning, error.
cmux log "Build started"
cmux log --level error --source build "Compilation failed"
cmux log --level success -- "All 42 tests passed"log --level=error --source=build --tab=<workspace-uuid> -- Compilation failedclear-log
مسح جميع إدخالات سجل الشريط الجانبي.
cmux clear-logclear_log --tab=<workspace-uuid>list-log
عرض إدخالات سجل الشريط الجانبي.
cmux list-log
cmux list-log --limit 5list_log --limit=5 --tab=<workspace-uuid>sidebar-state
تفريغ جميع بيانات الشريط الجانبي الوصفية (cwd، فرع git، المنافذ، الحالة، التقدم، السجلات).
cmux sidebar-state
cmux sidebar-state --workspace workspace:2sidebar_state --tab=<workspace-uuid>أوامر الأدوات المساعدة
ping
التحقق مما إذا كان cmux يعمل ويستجيب.
cmux ping{"id":"ping","method":"system.ping","params":{}}
// Response: {"id":"ping","ok":true,"result":{"pong":true}}capabilities
عرض طرق المقبس المتاحة ووضع الوصول الحالي.
cmux capabilities
cmux capabilities --json{"id":"caps","method":"system.capabilities","params":{}}identify
عرض سياق النافذة/مساحة العمل/اللوح/السطح المركز.
cmux identify
cmux identify --json{"id":"identify","method":"system.identify","params":{}}متغيرات البيئة
| المتغير | الوصف |
|---|---|
CMUX_SOCKET_PATH | تجاوز مسار المقبس المستخدم بواسطة واجهة الأوامر والتكاملات |
CMUX_SOCKET_ENABLE | تفعيل/تعطيل المقبس قسرياً (1/0, true/false, on/off) |
CMUX_SOCKET_MODE | تجاوز وضع الوصول (cmuxOnly, allowAll, off). يقبل أيضاً cmux-only/cmux_only وallow-all/allow_all |
CMUX_WORKSPACE_ID | يُعين تلقائياً: معرف مساحة العمل الحالية |
CMUX_SURFACE_ID | يُعين تلقائياً: معرف السطح الحالي |
TERM_PROGRAM | مُعين إلى ghostty |
TERM | مُعين إلى xterm-ghostty |
كشف cmux
# Prefer explicit socket path if set
SOCK="${CMUX_SOCKET_PATH:-/tmp/cmux.sock}"
[ -S "$SOCK" ] && echo "Socket available"
# Check for the CLI
command -v cmux &>/dev/null && echo "cmux available"
# In cmux-managed terminals these are auto-set
[ -n "${CMUX_WORKSPACE_ID:-}" ] && [ -n "${CMUX_SURFACE_ID:-}" ] && echo "Inside cmux surface"
# Distinguish from regular Ghostty
[ "$TERM_PROGRAM" = "ghostty" ] && [ -n "${CMUX_WORKSPACE_ID:-}" ] && echo "In cmux"أمثلة
عميل Python
import json
import os
import socket
SOCKET_PATH = os.environ.get("CMUX_SOCKET_PATH", "/tmp/cmux.sock")
def rpc(method, params=None, req_id=1):
payload = {"id": req_id, "method": method, "params": params or {}}
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
sock.connect(SOCKET_PATH)
sock.sendall(json.dumps(payload).encode("utf-8") + b"\n")
return json.loads(sock.recv(65536).decode("utf-8"))
# List workspaces
print(rpc("workspace.list", req_id="ws"))
# Send notification
print(rpc(
"notification.create",
{"title": "Hello", "body": "From Python!"},
req_id="notify"
))نص Shell
#!/bin/bash
SOCK="${CMUX_SOCKET_PATH:-/tmp/cmux.sock}"
cmux_cmd() {
printf "%s\n" "$1" | nc -U "$SOCK"
}
cmux_cmd '{"id":"ws","method":"workspace.list","params":{}}'
cmux_cmd '{"id":"notify","method":"notification.create","params":{"title":"Done","body":"Task complete"}}'نص بناء مع إشعار
#!/bin/bash
npm run build
if [ $? -eq 0 ]; then
cmux notify --title "✓ Build Success" --body "Ready to deploy"
else
cmux notify --title "✗ Build Failed" --body "Check the logs"
fi