الطرفية
صُمِّمت طرفية Mobile SSH للتشغيل على الهاتف والجهاز اللوحي. تجمع بين مساحة الطرفية، وصف المفاتيح الإضافية، وأجزاء الجلسات المتعددة، ومعالجة التمرير، وسلوك إعادة الاتصال.
أساسيات الطرفية
- تستخدم الطرفية سلوكًا بنمط xterm مع دعم الألوان ومعالجة مفاتيح المؤشّر.
- يحتفظ مخزّن التمرير بـ 5000 سطر افتراضيًا، ويمكن ضبطه على 1000 أو 10000 أو 50000 من الإعدادات.
- اضغط على جزء لتحديده قبل الكتابة.
- اقرص جزء الطرفية لتغيير حجم النص. يعيد Mobile SSH تحجيم الـ PTY البعيد بعد استقرار الإيماءة.
- اضغط مرتين على جزء (أو استخدم زر التوسيع الخاص به) للدخول إلى وضع ملء الشاشة. استخدم زر الرجوع على Android، أو زر الطي على iOS، للعودة إلى الشبكة.
شبكة الجلسات المتعددة
يمكن لـ Mobile SSH تشغيل ما يصل إلى ثماني جلسات SSH في الوقت نفسه. تظهر كل جلسة كجزء في شبكة الطرفيات. اضغط على جزء لتحديده، أو استخدم + Add Session لبدء اتصال آخر.
يذكر رأس الجزء أين أنت. على Android يعرض دليل العمل الحقيقي للجزء، مأخوذًا من tmux أو مُبلَّغًا من الصدفة عبر OSC 7 ويُحدَّث ما دام التطبيق مفتوحًا؛ وعلى iOS يعرض العنوان الذي يضبطه الطرف البعيد، ويرجع إلى user@host:port عند غيابه.
إغلاق جزء يقطع جلسة SSH تلك. العودة إلى الشاشة الرئيسية يُبقي الجلسات النشطة متاحة عبر Active Sessions.
Eternal Terminal (ET)
يمكن لكل خادم محفوظ استخدام أحد ناقلَين، يُختار بمنتقي Transport عند إضافة خادم أو تحريره:
- 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 فيتكرّر.
سلوك لوحة المفاتيح
تستخدم الطرفية اتصالًا مباشرًا بالتمرير مع لوحة المفاتيح على الشاشة: يُرسَل كل حرف إلى الصدفة البعيدة أثناء كتابتك، مع إيقاف التصحيح التلقائي والاقتراحات التنبّؤية بحيث لا تعيد لوحة المفاتيح كتابة الإدخال قبل وصوله إلى الصدفة. يُبقي هذا 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 وغيرها من تطبيقات اللصق المُقوَّس) بعلامات اللصق المُقوَّس، بحيث يُدرَج محتوى الحافظة متعدد الأسطر كنص بدلًا من تنفيذه تلقائيًا سطرًا سطرًا. تُغلَّف عمليات اللصق الحقيقية فقط؛ أما النص المكتوب والمُملى فيبقى دون تغيير.
التحديد والنسخ والمشاركة
اضغط مطوّلًا داخل الطرفية لتحديد الكلمة الواقعة تحت إصبعك، ثم اسحب المقابض لضبط التحديد. يوفّر شريط التحديد ثلاثة إجراءات:
- Copy — يضع النص المحدد في حافظة النظام. يبقى التحديد مظللًا بعد ذلك، فيمكنك مشاركته أو إعادة نسخه أو توسيعه.
- Share — يمرّر النص المحدد إلى ورقة مشاركة النظام (البريد، الملاحظات، المراسلة، إلخ).
- Select all — يوسّع التحديد ليشمل كامل مخزّن الطرفية المرئي، ثم انسخ أو شارك.
البحث في الطرفية
ابحث في كامل مخزّن الطرفية — سجل التمرير والشاشة المرئية — وتنقّل بين النتائج. افتح البحث من عناصر تحكم الطرفية، واكتب استعلامًا، وتنقّل بين المطابقات. يعمل هذا على كلٍّ من أندرويد وiOS.
الألوان والخط المائل والحافظة البعيدة
- تعرض الطرفية ألوانًا حقيقية 24-bit وخطًا مائلًا، بحيث تظهر الموجّهات المُنسَّقة وتلوين الصياغة وواجهات TUI كما تظهر على سطح المكتب.
- حافظة OSC 52: عندما ينسخ برنامج بعيد نصًا (
set-clipboardفي tmux، أو نسخ OSC 52 في Vim/Neovim)، فإنه يصل إلى حافظة هاتفك — فيمكنك النسخ من الخادم واللصق في تطبيق محلي. - على أندرويد وiOS معًا، تُقاس محارف CJK العريضة والإيموجي والمحارف المركّبة (عناقيد المحارف وروابط انعدام العرض) وتُرسَم بشكل صحيح، ويرسم خط Nerd Font المضمّن محارف powerline وstarship وdevicon وأيقونات Material Design التي قد يعرضها خط النظام كمربّعات فارغة.
تكامل الصدفة والصور المضمّنة
- تكامل الصدفة (OSC 133): عندما تُصدر صدفتك علامات المحثّات OSC 133، يمكن لـ Mobile SSH التنقّل بين المحثّات وتنبيهك عند انتهاء أمر طويل التنفيذ. يعمل على أندرويد وiOS. ولا يحقن أيّ من التطبيقين هذه العلامات — على صدفتك أن تُصدرها (خُطّاف
PROMPT_COMMAND/precmd، أو starship). على أندرويد، يبقى التنقّل بين المحثّات معطّلًا حتى تفعّله من Settings ← Shell integration؛ وعلى iOS تظهر القائمة من تلقاء نفسها بمجرّد وصول العلامات. - تحديد المُخرَجات: المس أيّ موضع داخل مُخرَجات أمر لتحدّد تلك الكتلة بأكملها — خطأ البناء الواقع قبل 300 سطر، لا الأمر الأخير فحسب — ثم انسخها أو شاركها أو وسّعها.
- صور مضمّنة: ترسم البرامج التي تستخدم بروتوكول رسوميات Kitty الصور مباشرةً داخل الطرفية، على أندرويد وiOS. وتصمد الصور أمام التكبير بالقَرص وإعادة التفاف الأسطر: فهي تُقاس بالخلايا وتتبع سطرها بدلًا من أن تُسقَط وتترك فجوة. وهي ميزة للشاشة الرئيسية وتُمسَح عندما يستولي برنامج TUI بملء الشاشة.
- المحارف الفسيفسائية (أندرويد): محارف الكتل وبرايل والسُّداسيات والثُّمانيات يرسمها التطبيق بنفسه بدل طلبها من خط، فتتراصّ مخرجات
chafaوtimgوفنّ ANSI على الشبكة بدقّة — بلا فواصل ولا مربّعات فارغة، أيًّا كان الخط الذي اخترته. - دليل العمل الحقيقي (أندرويد): يعرض رأس الجزء المكان الذي يوجد فيه الجزء فعلًا، مأخوذًا من tmux أو مُبلَّغًا من الصدفة عبر OSC 7، بدلًا مما طبعه آخر محثّ صدفةً.
المظهر والمفاتيح
على كلٍّ من أندرويد وiOS، تتيح لك Settings تخصيص الطرفية:
- الخط: اختر خط النظام أحادي المسافة أو JetBrains Mono أو Source Code Pro.
- نظام الألوان: Default أو Solarized Dark أو Light أو Gruvbox أو Dracula أو Nord — يُطبَّق مباشرةً على اللوحات المفتوحة.
- صفّ المفاتيح الإضافي: أضِف المفاتيح وأزِلها وأعِد ترتيبها وأخفِها، وعرّف مفاتيح تسلسل هروب خاصة بك، وأعِد الضبط إلى الإعدادات الافتراضية، مع معاينة مباشرة تُظهر توزيع الصفّ الذي ستحصل عليه بالضبط. يضع Android هذا في تبويب Keys؛ وiOS تحت Extra keys ← Customize keys.
- الإضافة من الجاهز: لوحة تضمّ نحو 45 مفتاحًا في ست مجموعات —
F1–F12، وتوليفات Ctrl مثل^Cو^Dو^Zو^Rو^L، ورموز مثل|و~و/و_و:، والمعدِّلات. تُرسَلF1–F12كتسلسلات هروب عادية، فلا تحتاج إلى توليفةFN. ويقدّم Android أيضًا مفتاح 📎 إرفاق ملف يفتح منتقي الملفات ويرفع إلى الجلسة الحيّة؛ بينما يقدّم iOS مفاتيحINSوDELومفتاحFNيكشف صفّ أرقام. - حجم سجل التمرير: 1000 أو 5000 أو 10000 أو 50000 سطر (5000 افتراضيًا). ينطبق على الألواح الجديدة.
- حجم النص: شريط تمرير، إلى جانب التكبير بالقَرص.
- السِّمة: النظام أو الفاتح أو الداكن للتطبيق بأكمله.
تُعيد إعادة الضبط الإعداداتِ الافتراضية المشحونة مع النسخة بدل تجميد قائمة اليوم، فتصلك تحسينات الإصدارات اللاحقة أيضًا. وتُطبَّق التعديلات مباشرةً على الألواح المفتوحة أصلًا.
التمرير
يوجّه 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 وتتحكّم به دون كتابة توليفات مفتاح البادئة. افتحه بزر Tmux من جلسة متصلة. وهو يسرد في ثلاثة أقسام:
- الجلسات — كل جلسات tmux على الخادم.
- النوافذ — نوافذ الجلسة المحدّدة.
- الألواح — ألواح النافذة المحدّدة.
من المدير يمكنك:
- إرفاق جلسة بالطرفية الحالية.
- إنشاء جلسة أو نافذة جديدة، وإعادة تسميتها.
- قسمة لوح أفقيًا أو رأسيًا، وتكبير لوح، وإنهاء الجلسات أو النوافذ أو الألواح.
- ترتيب الجلسات بالاسم أو بتاريخ الإنشاء.
يشير 🔔 إلى أيّ جلسة ينتظر وكيلها مدخلات، فترى بلمحة تشغيلًا متوقفًا لـ Claude Code أو Codex وترفق به. وهذا يكمّل تلميحات إعادة الإرفاق أعلاه: فمنطق إعادة الإرفاق يستعيد آخر جلسة لك تلقائيًا عند إعادة الاتصال، بينما يمنحك المدير تحكّمًا يدويًا كاملًا.
كما تستطيع المنصّتان إدارة أكثر من خادم tmux (مقبس) على المضيف نفسه، وترتيب الجلسات بالاسم أو بتاريخ الإنشاء.
herdr وZellij (أندرويد)
يقدّم Android الفكرة نفسها لمُضاعِفَين آخرين. لكلٍّ منهما أيقونته في شريط الأدوات، ولا تظهر الأيقونة إلا بعد أن يعثر التطبيق فعلًا على ذلك البرنامج على الخادم — فيخبرك شريط الأدوات بما هو مثبَّت هناك دون أن تشغّل which.
- herdr يستخدم مفرداته الخاصة: جلسات، ومساحات عمل، وتبويبات، وألواح. ويعرض كل لوح حالة وكيله — يعمل، أو يحتاجك، أو خامل — ويمكن الردّ على وكيل متوقّف مباشرةً من القائمة. وتغذّي حالة herdr نفسها شارة الوكلاء في التطبيق، فيعمل هذا دون تثبيت أيّ خُطّاف على الخادم.
- Zellij يسرد الجلسات والتبويبات والألواح مع الإرفاق وإعادة التسمية والإنهاء والقسمة. وتبقى الجلسات المُنهاة مدرجة فيُحييها الإرفاق، بينما يُنسيها الحذف نهائيًا. ويحتاج تفصيل التبويبات والألواح إلى Zellij 0.44 أو أحدث؛ وعلى إصدار أقدم تعرض الصفحة أسماء التبويبات وتوضّح السبب. وتحتاج القسمة إلى عميل مُرفَق بالجلسة، وتشرح الصفحة ذلك بدل عرض زرّ سيفشل.
وإذا كان herdr أو Zellij مثبَّتًا لكنه ليس على PATH لصدفة تسجيل الدخول، تعرض الصفحة إضافته.
لكل خادم محفوظ إعداد Attach on connect: تلقائي (كشف)، أو لا شيء، أو tmux، أو herdr، أو Zellij. ويختار الوضع التلقائي ما استخدمته آخر مرة على ذلك الخادم، ثم ما لديه جلسات حيّة، ثم ما هو مثبَّت — ولا يُرفِق شيئًا بدل التخمين حين لم يفحص الخادم بعد.
أمّا تطبيق iOS فيقتصر اليوم على tmux.
تنبيهات الوكيل
يخبرك Mobile SSH حين يتوقّف وكيل برمجة ذكي بعيد — Claude Code أو Codex أو Gemini — بانتظارك. وهو لا يخمّن ذلك بقراءة مخرجات طرفيتك. وهناك مساران يعملان بمستويَي تفصيل مختلفين.
الجرس
جاهزًا من الصندوق، يرفع جرسُ طرفية قادمٌ من جلسة لا تشاهدها تنبيهًا، وكذلك تسلسلات هروب إشعارات سطح المكتب (OSC 9 وOSC 777) التي تُصدرها أدوات كثيرة أصلًا. وتُتجاهَل الأجراس التي تصل مباشرة بعد كتابتك، فلا تزعجك ضوضاء الإكمال المعتادة في الصدفة.
لا يحتاج هذا إلى أيّ إعداد، لكن التطبيق لا يعرف إلا أنّ شيئًا ما رنّ.
خُطّاف الوكيل
ولكي يعرف التطبيق أيّ وكيل ينتظر وماذا يفعل، ثبّت خُطّاف الوكيل على الخادم:
- iOS: Settings ← Agent alerts ← Install Agent Hook. وإذا كان أكثر من خادم متصلًا، يسألك عن أيّها.
- Android: اضغط مطوّلًا على رأس لوح الجلسة واختر Install agent hooks.
يكتب هذا سكربت صدفة صغيرًا في ~/.mobile-ssh/agent-hook.sh على ذلك الخادم. وهو محايد تجاه الوكلاء — يأخذ وسائط سطر أوامر بدل تحليل صيغة مزوّد بعينه — فيستطيع أيّ شيء يمكنه تشغيل أمر أن يُبلِغ عبره. وحذف الملف إلغاء تثبيت نظيف.
وبمجرد أن يُبلِغ وكيل عبر الخُطّاف:
- يقرأ رأس اللوح
claude · needs you، أو يذكر الأداة التي يشغّلها. - يحصل اللوح الذي توقّف وكيله على إطار كهرماني. أمّا اللوح الذي تنظر إليه أصلًا فيُترك وشأنه — فالسؤال أمامك مباشرة.
- تَعُدّ شارة في شريط الأدوات الوكلاءَ المنتظرين عبر كل الاتصالات، بحدّ أقصى
9+. - تسرد شاشة Agents كل وكيل على كل اتصال، مع ما يفعله ومدة انتظاره.
الردّ دون كتابة
عندما يطرح وكيل سؤالًا بمجموعة إجابات محدّدة، يعرض التطبيق زرًّا لكل خيار — حتى ستة — في قائمة Agents. وعلى Android يمكنك أيضًا النقر على شارة الوكيل في رأس اللوح.
ولا تُكتب إجابتك داخل الجلسة. بل تُكتب في ملف عبر قناة منفصلة ويلتقطها الخُطّاف، فلا يمكن للردّ أن يُفسد ما على الشاشة. ويرفض التطبيق إرسال خيار لم يعرضه السؤال فعلًا، ويخبرك بوضوح إن كان الاتصال قد انقطع بدل أن يفشل بصمت.
الإعدادات
التنبيهات مفعّلة افتراضيًا على المنصّتين، مع مفاتيح مستقلة للإشعار والصوت والاهتزاز، ولما إذا كانت الجلسة التي تشاهدها حاليًا ينبغي أن تنبّه أيضًا.
وثمّة إعداد افتراضي يستحق المعرفة: الصوت مقصور على سماعات الأذن. فمع عدم توصيل أو اقتران أيّ سماعة، يُشعِر التنبيه ويهتزّ لكنه لا يصدر نغمة. أوقِف ذلك إن أردت سماع التنبيه من سمّاعة الهاتف.
ولا يوجد إعداد للحساسية ولا منتقٍ للصوت — فالتحكّم تشغيل/إيقاف فقط.
برامج الطرفية بملء الشاشة
لبرامج مثل Vim وless وhtop وأدوات ncurses وأجزاء tmux:
- يمرّ الإدخال مباشرةً إلى البرنامج — فلا يوجد تصحيح تلقائي أو مخزّن اقتراحات للتعارض.
- استخدم صف المفاتيح الإضافية لـ
ESCوالأسهم وPGUPوPGDN. - استخدم التكبير بالقرص إذا كان النص صغيرًا جدًا، ثم انتظر قليلًا حتى يستقر حجم الطرفية البعيدة.