الأوامر السريعة والترمينال
بتنزل مع المشروع
نادرًا ما تبدأ بقائمة فاضية. XTop بيقرا ملفات الـ manifest بتاعة المشروع نفسه وبيعرض عليك اللي لقاه كأوامر جاهزة — فالمشروع المستورد بيوصل وnpm run dev موجودة في قائمته أصلًا، بدل قائمة فاضية تقعد تكتبها من دماغك.
بتتاخد منين
| الملف في المشروع | بيطلّع أنهي أوامر |
|---|---|
package.json | كل entry تحت scripts، ما عدا الـ lifecycle hooks بتاعة npm نفسها (postinstall و prepare …) |
composer.json | كل entry تحت scripts، ما عدا الـ hooks بتاعة composer (pre- و post-) |
artisan | php artisan serve و php artisan migrate |
Makefile | كل target |
pyproject.toml | الـ entry points اللي تحت [project.scripts] أو [tool.poetry.scripts] — ولو مفيش، بيعرض install و test |
go.mod | go run . و go build ./... و go test ./... |
Cargo.toml | cargo run و cargo build و cargo test |
docker-compose.yml (أو compose.yaml) | compose up و compose down و compose logs |
الـ runner بيتحدد من الـ lockfile بتاعك. الـ script اللي في package.json بيبقى pnpm dev لو في pnpm-lock.yaml، و yarn dev مع yarn.lock، و bun run dev مع lockfile بتاع bun، و npm run dev في غير كده. ولو في حقل packageManager فهو اللي بيكسب — لأن corepack بيفرضه أصلًا. و Python نفس الحكاية: uv run مع uv.lock، و poetry run مع poetry.
وكل أمر متكتشف مكتوب جنبه الملف اللي جه منه، فالقائمة اللي فيها npm run test و make test مع بعض تفضل واضحة مين فيهم مين.
إمتى بيسألك وإمتى لأ
- استيراد فولدر — خيار إضافة الأوامر الموجودة في كل مشروع متعلّم افتراضيًا، والـ scan بيعرض عدد الأوامر جنب كل مشروع. وكل اللي اتلقى بيتضاف.
- إضافة أو تعديل مشروع واحد — القائمة بتظهر في الـ dialog وكلها متعلّمة، وإنت بتشيل العلامة عن اللي مش عايزه.
- في أي وقت بعد كده — زر اكتشاف الأوامر جوه إدارة الأوامر… بيقرا المشروع من جديد.
والاكتشاف عمره ما بيكرّر. الأمر اللي سطره موجود على المشروع بالفعل بيتخطّى، فلما تشغّله تاني على مشروع مستورد من شهور، بيضيف الـ scripts اللي ظهرت بعد كده وبس.
الأوامر المتكتشفة بتنزل في نطاق خاص، وبتشتغل في المكان الافتراضي بتاع المشروع. والاتنين قابلين للتعديل بعد كده زي أي أمر تاني.
قراءة، مش تشغيل
الاكتشاف بيقرا الملفات وبس — مفيش أي حاجة في المشروع بتتنفّذ. وpackage.json فيه فاصلة زايدة، أو Makefile مكتوب بامتدادات GNU، ببساطة ما بيطلّعش حاجة والباقي بيتقرا عادي. والحد الأقصى ٤٠ أمر من المشروع الواحد.
تلات نطاقات
كل أمر بينتمي لنطاق واحد بالظبط، والنطاق بيحدد يظهر فين:
| النطاق | بيظهر في | متخزّن على |
|---|---|---|
| خاص | مشروع واحد | المشروع نفسه |
| مجموعة | كل مشاريع المجموعة دي | المجموعة |
| عام | كل المشاريع | مرة واحدة في المستوى الأعلى |
الأوامر العامة متخزّنة مرة واحدة مش متكرّرة في كل مشروع، فتعديل npm install بيحدّثه في كل مكان في نفس الوقت.

تقدر تديرهم لكل مشروع من ⌘ ← إدارة الأوامر…، أو لمجموعة كاملة من زر ⌘ في رأس المجموعة.
كل أمر ليه عنوان (اللي بتشوفه)، وسطر الأمر نفسه، ومكان التشغيل: الافتراضي بتاع المشروع، أو PowerShell، أو cmd، أو Git Bash، أو WSL، أو نافذة ترمينال خارجية.
تشغيل أمر
الضغط على أمر بيفتح نافذة الترمينال ويبدأ جلسة.

- تبويب لكل جلسة. التنقّل بين التبويبات مش بيضيّع حاجة — كل جلسة محتفظة بمخرجاتها كاملة.
- النقطة هي الحالة. خضرا طول ما العملية شغالة، ورمادية لما تنتهي.
- ■ إيقاف بيقتل الأمر الشغّال؛ التبويب ومخرجاته بيفضلوا مكانهم.
الـ shell بيتبع بيئة المشروع: wsl.exe -d <distro> --cd <path> لمشاريع WSL، و PowerShell لمشاريع ويندوز.
جلسات حقيقية
دي ترمينالات تفاعلية مش نوافذ عرض: تقدر ترد على سؤال، وتضغط Ctrl+C، وتشغّل vim لو مصمّم.
وعلى الجهاز النادر اللي المحرّك التفاعلي ما يقدرش يشتغل عليه، البرنامج بيرجع لوضع بيعرض المخرجات من غير إدخال كيبورد — ونافذة الترمينال بتقول كده في شريط واضح، بدل ما تفضل تتساءل ليه الكتابة مش بتعمل حاجة.
المفاتيح جوه الترمينال
| المفتاح | الوظيفة |
|---|---|
| Ctrl+C | بينسخ لو في نص محدد؛ من غير تحديد بيتبعت كـ SIGINT، وده استخدامه الأشهر |
| Ctrl+Shift+C | بينسخ دايمًا |
| Ctrl+V | لصق |
| Ctrl+كليك على رابط | يفتحه في المتصفح. المفتاح مقصود — سحب تحديد فوق رابط المفروض ما يفتحش متصفح |
