الطرفية
طرفية Mobile SSH متعملة علشان الشغل على الموبايل والتابلت. بتجمع بين مساحة الطرفية، وصف المفاتيح الإضافية، وأجزاء الجلسات المتعددة، ومعالجة التمرير، وسلوك إعادة الاتصال.
أساسيات الطرفية
- الطرفية بتستخدم سلوك بنمط xterm مع دعم الألوان ومعالجة مفاتيح المؤشّر.
- مخزّن التمرير بيحتفظ بـ 5000 سطر افتراضيًا، وتقدر تخليه 1,000 أو 10,000 أو 50,000 من الإعدادات.
- اضغط على جزء علشان تختاره قبل ما تكتب.
- اقرص جزء الطرفية علشان تغيّر حجم النص. Mobile SSH بيعيد تحجيم الـ PTY البعيد بعد ما الإيماءة تستقر.
- اضغط مرتين على جزء (أو استخدم زر التوسيع بتاعه) علشان تدخل وضع ملء الشاشة. استخدم زر الرجوع على Android، أو زر الطي على iOS، علشان ترجع للشبكة.
شبكة الجلسات المتعددة
Mobile SSH يقدر يشغّل لحد ثماني جلسات SSH في نفس الوقت. كل جلسة بتظهر كجزء في شبكة الطرفيات. اضغط على جزء علشان تختاره، أو استخدم + Add Session علشان تبدأ اتصال تاني.
رأس الجزء بيقولك إنت فين. على Android بيعرض مجلد الشغل الحقيقي بتاع الجزء، مسحوب من tmux أو مبلَّغ من الشِل عبر OSC 7 وبيتحدّث طول ما التطبيق مفتوح؛ وعلى iOS بيعرض العنوان اللي الطرف البعيد بيحطه، وبيرجع لـ user@host:port لو مافيش.
قفل جزء بيقطع جلسة SSH دي. الرجوع للشاشة الرئيسية بيخلي الجلسات النشطة متاحة عبر Active Sessions.
Eternal Terminal (ET)
كل سيرفر محفوظ يقدر يستخدم واحد من ناقلين، بتختاره من منتقي النقل وإنت بتضيف سيرفر أو بتعدّله:
- SSH — اتصال SSH عادي (الافتراضي).
- Eternal Terminal — جلسة ET بتفضل شغّالة بعد قطع الشبكة، ونوم الجهاز، وتغيير عنوان الـ IP من غير ما تعيد تشغيل الصدفة بتاعتك.
ET بيخلّي الجلسة شغّالة على السيرفر، فلما موبايلك يغيّر الشبكة أو يصحى من النوم، Mobile SSH بيعيد الإرفاق بنفس الصدفة الشغّالة بدل ما يفتح واحدة جديدة. ده بيخلّيه مناسب لبيانات الموبايل، والتنقل بين Wi-Fi والشبكة الخلوية، والأوامر اللي بتاخد وقت طويل.
ET محتاج عملية etserver على المضيف. لو السيرفر مافيهوش واحدة، Mobile SSH يقدر يركّبها ويشغّلها لك عن طريق اتصال SSH الموجود — من غير أي إعداد يدوي للسيرفر. أول ما ET يبقى متاح، اتصل وإنت مختار الناقل Eternal Terminal.
صف المفاتيح الإضافية
المنصتين الاتنين بيحطوا صف من تلتاشر مفتاح طرفية في متناول إيدك — المفاتيح اللي صعبة أو مش موجودة على لوحة اللمس. على Android هو شريط تحت في الجلسة (وبيخفي نفسه لما لوحة مفاتيح هاردوير تتوصّل)؛ وعلى iOS بيركب فوق لوحة المفاتيح البرمجية.
المجموعتين الافتراضيتين نفس الحجم بس مش متطابقتين:
| Android | iOS | |
|---|---|---|
| الافتراضي | ESC TAB CTRL الأسهم HOME PGUP END PGDN ⌫ ⌨ | ESC TAB CTRL ⇧ الأسهم HOME END PGUP PGDN ⌨ |
| الفرق | فيه مفتاح مسح للخلف، من غير Shift | فيه Shift لاصق، من غير مفتاح مسح للخلف |
الصف عمره ما بيتمرّر. أول ما المفاتيح تبطّل تدخل في العرض، بيقسّموا المساحة بالتساوي وبيلفّوا لصف تاني؛ وأي حاجة فاضلة بتتلم في قايمة إضافية ⋯. مافيش حاجة متخبّية ورا سحبة ولا مقصوصة عند حرف الشاشة، والمعدِّل اللي مسلّحه بيفضل ساري على أي مفتاح تختاره من القايمة الإضافية.
CTRL بيشتغل كمعدِّل لاصق: اضغط CTRL وبعدين اكتب C علشان تبعت Ctrl-C. وShift ألزق على iOS منه على Android — على iOS بيكبّر كمان أول حرف تكتبه على لوحة المفاتيح البرمجية، بينما على Android بيسري بس على مفاتيح الشريط نفسه (Shift+Tab، وShift+الأسهم).
امسك مفتاح زي سهم أو PGDN وهو هيكرّر.
سلوك لوحة المفاتيح
الطرفية بتستخدم اتصال مباشر (pass-through) مع لوحة المفاتيح اللي على الشاشة: كل حرف بيتبعت للصدفة البعيدة وإنت بتكتب، والتصحيح التلقائي والاقتراحات التنبؤية مقفولين علشان لوحة المفاتيح ماتعيدش كتابة الإدخال قبل ما يوصل للصدفة. ده بيخلّي Vim وtmux وhtop وless والصدفات اللي بتستخدم توليفات مفاتيح مش معتادة وموجّهات كلمات السر البعيدة متوقّعة — مافيش مخزّن اقتراحات محتاج تعطّله.
- اللمس على الطرفية لإظهار لوحة المفاتيح: لما يكون مفعّل، لمس الطرفية بيطلب من النظام إظهار لوحة المفاتيح اللي على الشاشة.
الإملاء الصوتي من لوحة المفاتيح اللي على الشاشة لسه شغّال: النص المُملى بيتبعت للصدفة على طول زي أي إدخال مكتوب تاني.
كيبوردات الهاردوير
لوحات المفاتيح الخارجية وBluetooth بتشغّل الطرفية مباشرة على Android وiOS الاتنين. غير الحروف العادية، Mobile SSH بيربط مفاتيح الأسهم، وHome/End، وPgUp/PgDn، وInsert، وDelete، وEsc، ومفاتيح الوظائف F1–F12، وتوليفات Ctrl+مفتاح وAlt/Option-كـ-Meta، وShift+Tab. مفاتيح التعديل بتتجمّع مع المعدِّلات اللاصقة بتاعة صف المفاتيح الإضافية.
اللصق
اللصق في برنامج بيطلبه (bash وVim وباقي التطبيقات اللي بتدعم bracketed paste) بيتغلّف بعلامات اللصق المُقوّس، علشان محتوى الحافظة اللي فيه أكتر من سطر يتحط كنص بدل ما يتنفّذ أوتوماتيكيًا سطر ورا سطر. بس اللصق الحقيقي هو اللي بيتغلّف؛ النص المكتوب أو المُملى مابيتغيّرش.
التحديد والنسخ والمشاركة
اضغط مطوّل جوّه الطرفية علشان تحدد الكلمة اللي تحت صباعك، وبعدين اسحب المقابض علشان تظبّط. شريط التحديد بيوفّر ثلاثة إجراءات:
- نسخ — بيحط النص المحدد في حافظة النظام. التحديد بيفضل مميّز بعد كده، فتقدر تشاركه أو تنسخه تاني أو توسّعه.
- مشاركة — بيمرّر النص المحدد لورقة مشاركة النظام (البريد، الملاحظات، المراسلة، إلخ).
- تحديد الكل — بيوسّع التحديد لكامل مخزّن الطرفية الظاهر، وبعدين انسخ أو شارك.
البحث في الطرفية
دوّر في مخزّن الطرفية كله — مخزّن التمرير والشاشة الظاهرة — وانتقل بين النتايج. افتح البحث من عناصر تحكم الطرفية، اكتب استعلام، واتنقل بين النتايج. ده بيشتغل على Android وiOS الاتنين.
الألوان والخط المائل والحافظة البعيدة
- الطرفية بتعرض ألوان 24-bit حقيقية وخط مائل، علشان الموجّهات المزخرفة، وتلوين الصياغة، وتطبيقات TUI تبان زي ما هي على الديسكتوب.
- حافظة OSC 52: لما برنامج بعيد ينسخ نص (tmux
set-clipboard، أو نسخ OSC 52 من Vim/Neovim)، بينزل على حافظة موبايلك — فتقدر تنسخ من السيرفر وتلصق في تطبيق محلي. - على Android وiOS الاتنين، حروف CJK العريضة والإيموجي والحروف المركّبة (عناقيد الحروف grapheme clusters وروابط العرض الصفري zero-width joiners) بتتقاس وتترسم صح، وخط Nerd Font مدمج بيرسم رموز powerline وstarship وdevicon وأيقونات Material Design اللي خط النظام كان هيعرضها مربعات فاضية.
تكامل الشِل والصور المضمّنة
- تكامل الشِل (OSC 133): لما الشِل بتاعك يبعت علامات موجّه OSC 133، Mobile SSH يقدر يتنقّل بين الموجّهات وينبّهك لما أمر طويل يخلّص. بيشتغل على Android وiOS. ومافيش تطبيق فيهم بيحقن العلامات دي — الشِل بتاعك هو اللي لازم يبعتها (hook في
PROMPT_COMMAND/precmd، أو starship). على Android التنقّل بين الموجّهات مقفول لحد ما تفعّله من الإعدادات ← تكامل الشِل؛ وعلى iOS القايمة بتظهر لوحدها أول ما العلامات تبدأ توصل. - تحديد المخرجات: المس أي مكان جوّه مخرجات أمر وحدد الكتلة كلها — خطأ البناء اللي فات من 300 سطر، مش آخر أمر بس — وبعدين انسخها أو شاركها أو وسّعها.
- الصور المضمّنة: البرامج اللي بتستخدم بروتوكول Kitty للرسوميات بترسم الصور على طول جوّه الطرفية، على Android وiOS. والصور بتفضل مكانها بعد التكبير بالقرص وإعادة لفّ السطور: بتتقاس بالخلايا وبتمشي مع سطرها، بدل ما تتشال وتسيب فراغ. وهي خاصية للشاشة الرئيسية وبتتمسح لما تطبيق TUI بملء الشاشة يستولي على الشاشة.
- رموز الموزاييك (Android): حروف البلوك والبرايل والسداسيات والثمانيات بيرسمها التطبيق نفسه بدل ما يطلبها من خط، فـ
chafaوtimgوفن ANSI بيترصّوا على الشبكة بالظبط — من غير فواصل ولا مربعات فاضية، مهما كان الخط اللي اخترته. - مجلد الشغل الحقيقي (Android): رأس الجزء بيعرض الجزء فين فعلًا، مسحوب من tmux أو مبلَّغ من الشِل عبر OSC 7، مش أي حاجة آخر موجّه صادف وطبعها.
المظهر والمفاتيح
على Android وiOS الاتنين، الإعدادات بتخليك تظبّط الطرفية على مزاجك:
- الخط: اختار خط النظام أحادي المسافة، أو JetBrains Mono، أو Source Code Pro.
- نظام الألوان: الافتراضي، أو Solarized غامق أو فاتح، أو Gruvbox، أو Dracula، أو Nord — بيتطبّق مباشرة على البانلات المفتوحة.
- صف المفاتيح الإضافية: ضيف وامسح وأعد ترتيب وأخفِ المفاتيح، وعرّف مفاتيحك الخاصة بسلاسل الهروب (escape-sequence)، وارجع للإعدادات الافتراضية، مع معاينة مباشرة بتوريك تقسيمة الصف اللي هتطلعلك بالظبط. Android حاطط ده في تاب Keys؛ وiOS تحت Extra keys ← Customize keys.
- الإضافة من الجاهز: لوحة فيها حوالي 45 مفتاح في ستة مجموعات —
F1–F12، وتوليفات Ctrl زي^Cو^Dو^Zو^Rو^L، ورموز زي|و~و/و_و:، ومعدِّلات. مفاتيحF1–F12بتتبعت كسلاسل هروب عادية، فمش محتاجة توليفةFN. وAndroid كمان بيوفّر مفتاح 📎 Attach a file بيفتح منتقي الملفات ويرفع في الجلسة الشغّالة؛ وiOS بيوفّرINSوDELومفتاحFNبيطلّع صف أرقام. - حجم الـ scrollback: 1,000 أو 5,000 أو 10,000 أو 50,000 سطر (5,000 افتراضيًا). بيسري على الأجزاء الجديدة.
- حجم النص: شريط تمرير، جنب التكبير بالقرص.
- الثيم: النظام أو فاتح أو غامق للتطبيق كله.
الرجوع للافتراضي بيرجّع الإعدادات اللي التطبيق نازل بيها مش بيجمّد قايمة النهاردة، فتحسينات أي إصدار جاي تفضل توصلك. والتعديلات بتسري مباشرة على الأجزاء المفتوحة أصلًا.
التمرير
Mobile SSH بيوجّه إيماءات التمرير حسب حالة الطرفية:
- في خرج الصدفة العادي، السحب بيمرّر مخزّن التمرير المحلي.
- في تطبيقات الطرفية بوضع الفأرة، التمرير بيبعت تسلسلات هروب عجلة الفأرة.
- في تطبيقات الشاشة البديلة من غير وضع فأرة، زي كتير من جلسات tmux، التمرير بيدخل وضع نسخ tmux وبيبعت أوامر تمرير بالأسطر.
على Android، اللمسة جوّه برنامج بيتابع الفأرة بتتسلّم كضغطة زرار شمال على الخلية دي، فـ htop وvim والأجزاء اللي بتتركّز بالضغط بترد على اللمس. أما على iOS فاللمسة في نفس البرنامج بتطلّع لوحة المفاتيح بدل ما تعمل كليك؛ التمرير بالعجلة بس هو اللي بيتبلّغ.
لو كتبت وإنت ماسك التمرير لفوق، Mobile SSH بيرجع لعرض الطرفية المباشر.
سلوك tmux
Mobile SSH بيراقب أوامر tmux الصادرة للإرفاق وإنشاء جلسة جديدة، زي:
tmux attach -t work
tmux a -t work
tmux new -A -s work
لما الاتصال يقطع وإنت في tmux، التطبيق ممكن يفتكر اسم آخر جلسة tmux للسيرفر ده ويحاول يعيد الإرفاق بعد إعادة الاتصال. لو مافيش اسم جلسة صريح اتلاحظ بس التطبيق عارف إنك كنت في جلسة شبيهة بـ tmux بشاشة بديلة، ممكن يجرّب tmux attach عام.
السلوك ده بأفضل جهد. لو جلسة tmux البعيدة مابقتش موجودة، الصدفة البعيدة بتفضل متاحة.
مدير tmux
Mobile SSH فيه مدير tmux علشان تتصفّح وتتحكم في tmux من غير ما تكتب توليفات مفاتيح البادئة (prefix). افتحه بزر Tmux من جلسة متصلة. بيعرض في ثلاثة أقسام:
- الجلسات — كل جلسات tmux على السيرفر.
- النوافذ — النوافذ اللي في الجلسة المختارة.
- الأجزاء — الأجزاء اللي في النافذة المختارة.
من المدير تقدر:
- تُرفِق جلسة بالطرفية الحالية.
- تعمل جلسة أو نافذة جديدة، وتغيّر اسمها.
- تقسّم جزء أفقيًا أو رأسيًا، وتكبّر جزء، وتقتل جلسات أو نوافذ أو أجزاء.
- ترتّب الجلسات بالاسم أو بتاريخ الإنشاء.
🔔 بيعلّم أي جلسة الوكيل بتاعها مستني مدخلات، فتقدر تلاحظ تشغيل Claude Code أو Codex متوقف بنظرة واحدة وتُرفِق بيه. ده بيكمّل تلميحات إعادة الإرفاق اللي فوق: منطق إعادة الإرفاق بيرجّع آخر جلسة ليك تلقائيًا عند إعادة الاتصال، بينما المدير بيديك تحكم يدوي كامل.
المنصتين الاتنين كمان بيقدروا يديروا أكتر من سيرفر tmux (socket) على نفس المضيف، ويرتّبوا الجلسات بالاسم أو بتاريخ الإنشاء.
Herdr وZellij (Android)
Android بينزّل نفس الفكرة لاتنين multiplexer تانيين. كل واحد ليه أيقونة في شريط الأدوات، والأيقونة مابتظهرش غير لما التطبيق يكون لقى البرنامج ده فعلًا على السيرفر — يعني شريط الأدوات بيقولك إيه المتركّب هناك من غير ما تشغّل which.
- Herdr بيستخدم مصطلحاته الخاصة: sessions وworkspaces وtabs وpanes. كل جزء بيعرض حالة الوكيل بتاعه — شغّال، أو محتاجك، أو ساكت — والوكيل الواقف مستني تقدر ترد عليه من القايمة على طول. وحالة herdr نفسها بتغذّي شارة الوكيل في التطبيق، فده بيشتغل من غير أي hook متركّب على السيرفر.
- Zellij بيعرض الجلسات والتابات والأجزاء مع الإرفاق وتغيير الاسم والقتل والتقسيم. الجلسات المقتولة بتفضل في القايمة فالإرفاق بيرجّعها للحياة، بينما الحذف بينساها خلاص. وتفاصيل التابات والأجزاء محتاجة Zellij 0.44 أو أحدث؛ وعلى إصدار أقدم الصفحة بتعرض أسامي التابات وبتقولك السبب. والتقسيم محتاج عميل مُرفَق بالجلسة، والصفحة بتشرح كده بدل ما تديك زرار هيفشل.
لو herdr أو Zellij متركّب بس مش على PATH بتاع شِل الدخول، الصفحة بتعرض عليك تضيفه.
كل سيرفر محفوظ عنده إعداد Attach on connect: Auto (detect) أو Nothing أو tmux أو herdr أو Zellij. و«Auto» بيختار اللي استخدمته آخر مرة على السيرفر ده، وبعدين اللي عنده جلسات شغالة، وبعدين اللي متركّب — وبيرفق بولا حاجة بدل ما يخمّن لو لسه ماستكشفش السيرفر.
تطبيق iOS دلوقتي بيدعم tmux بس.
تنبيهات الوكيل
Mobile SSH بيقولك لما وكيل برمجة بالـ AI بعيد — Claude Code أو Codex أو Gemini — يبقى واقف مستنيك. وهو مابيخمّنش بقراية خرج الطرفية بتاعك. فيه طريقتين، وبيشتغلوا بمستويات تفصيل مختلفة.
الجرس
من غير أي إعداد، جرس الطرفية الجاي من جلسة إنت مش باصص عليها بيرفع تنبيه، وكمان تسلسلات هروب إشعارات سطح المكتب (OSC 9 وOSC 777) اللي أدوات كتير بتبعتها أصلًا. والأجراس اللي بتوصل على طول بعد ما تكتب بتتجاهل، علشان دوشة إكمال الشِل العادية ماتنططش عليك.
ده مش محتاج أي تجهيز، بس التطبيق بيعرف بس إن حاجة رنّت.
hook الوكيل
علشان التطبيق يعرف أنهي وكيل مستني وبيعمل إيه، ركّب hook الوكيل على السيرفر:
- iOS: الإعدادات ← Agent alerts ← Install Agent Hook. ولو فيه أكتر من سيرفر متصل، بيسألك أنهي واحد.
- Android: اضغط مطوّل على رأس جزء الجلسة واختار Install agent hooks.
ده بيكتب سكربت shell صغير في ~/.mobile-ssh/agent-hook.sh على السيرفر ده. وهو مش مربوط بوكيل معيّن — بياخد وسائط من سطر الأوامر بدل ما يفكّك صيغة مورّد بعينه — فأي حاجة تقدر تشغّل أمر تقدر تبلّغ من خلاله. ومسح الملف بيبقى إزالة نضيفة.
أول ما وكيل يبلّغ من خلال الـ hook:
- رأس الجزء بيكتب
claude · needs you، أو بيسمّي الأداة اللي بيشغّلها. - الجزء اللي وكيله واقف مستني بياخد إطار كهرماني. أما الجزء اللي إنت باصص عليه أصلًا فبيتساب في حاله — الموجّه قدامك أهو.
- شارة في شريط الأدوات بتعدّ الوكلاء المستنيين على كل الاتصالات، بحد أقصى
9+. - شاشة Agents بتعرض كل وكيل على كل اتصال، ومعاه بيعمل إيه وقاعد مستني بقاله قد إيه.
الرد من غير كتابة
لما وكيل يسأل سؤال إجاباته محددة، التطبيق بيعرض زرار لكل خيار — لحد ستة — في قايمة Agents. وعلى Android تقدر كمان تضغط على شارة الوكيل في رأس الجزء.
وإجابتك مابتتكتبش في الجلسة. بتتكتب في ملف على قناة منفصلة والـ hook بياخدها منه، فالرد مايقدرش يبوّظ اللي على الشاشة. والتطبيق بيرفض يبعت خيار الموجّه ماعرضهوش فعلًا، وبيقولك بوضوح لو الاتصال قطع في الوقت ده بدل ما يفشل في صمت.
الإعدادات
التنبيهات شغّالة افتراضيًا على المنصتين، وفيه مفاتيح منفصلة للإشعار والصوت والاهتزاز، ولو الجلسة اللي إنت شايفها دلوقتي تنبّهك هي كمان ولا لأ.
وفيه إعداد افتراضي يستاهل تعرفه: الصوت مقصور على السماعات. لو مافيش سماعة متوصّلة أو متقرنة، التنبيه بيشعر ويهتز بس مش بيطلّع صوت. اقفل الإعداد ده لو عايز التنبيه مسموع من سماعة الموبايل.
مافيش إعداد حساسية ولا منتقي صوت — التحكمات تشغيل/إيقاف بس.
برامج الطرفية بملء الشاشة
لبرامج زي Vim وless وhtop وأدوات ncurses وأجزاء tmux:
- الإدخال بيعدّي مباشرة للبرنامج — مافيش تصحيح تلقائي ولا مخزّن اقتراحات يتعارض معاه.
- استخدم صف المفاتيح الإضافية لـ
ESCوالأسهم وPGUPوPGDN. - استخدم التكبير بالقرص لو النص صغير قوي، وبعدين استنى شوية لحد ما حجم الطرفية البعيدة يستقر.