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