टर्मिनल

Mobile SSH टर्मिनल फ़ोन और टैबलेट संचालन के लिए बनाया गया है। यह एक टर्मिनल कैनवस, अतिरिक्त कुंजी पंक्ति, मल्टी-सेशन पैन, स्क्रॉल हैंडलिंग और पुनः-कनेक्शन व्यवहार को एक साथ जोड़ता है।

टर्मिनल मूल बातें

मल्टी-सेशन ग्रिड

Mobile SSH एक साथ आठ SSH सेशन तक चला सकता है। प्रत्येक सेशन टर्मिनल ग्रिड में एक पैन के रूप में दिखता है। पैन को चुनने के लिए टैप करें, या दूसरा कनेक्शन शुरू करने के लिए + Add Session उपयोग करें।

पैन हेडर बताता है कि आप कहाँ हैं। Android पर यह उस पैन की असली कार्यशील डायरेक्टरी दिखाता है, जो tmux से पूछी जाती है या शेल द्वारा OSC 7 पर बताई जाती है और ऐप खुले रहने तक ताज़ा होती रहती है; iOS पर यह वह शीर्षक दिखाता है जो रिमोट सेट करता है, और उसके अभाव में user@host:port

पैन बंद करना उस SSH सेशन को डिस्कनेक्ट करता है। स्टार्ट स्क्रीन पर लौटने पर सक्रिय सेशन Active Sessions के माध्यम से उपलब्ध रहते हैं।

अतिरिक्त कुंजी पंक्ति

दोनों प्लेटफ़ॉर्म तेरह टर्मिनल कुंजियों की एक पंक्ति आपकी पहुँच में रखते हैं — वही कुंजियाँ जो टच कीबोर्ड पर असुविधाजनक या नदारद होती हैं। Android पर यह सेशन के नीचे एक पट्टी है (जो हार्डवेयर कीबोर्ड जुड़ा होने पर खुद को छिपा लेती है); iOS पर यह सॉफ़्टवेयर कीबोर्ड के ऊपर सवार रहती है।

दोनों के डिफ़ॉल्ट सेट आकार में बराबर हैं, पर एक जैसे नहीं:

AndroidiOS
डिफ़ॉल्टESC TAB CTRL तीर HOME PGUP END PGDN ESC TAB CTRL तीर HOME END PGUP PGDN
अंतरबैकस्पेस है, Shift नहींस्टिकी Shift है, बैकस्पेस नहीं

यह पंक्ति कभी स्क्रॉल नहीं होती। जब कुंजियाँ चौड़ाई में समाना बंद कर देती हैं, तो वे जगह को बराबर बाँटकर दूसरी पंक्ति में लिपट जाती हैं; उसके बाद भी जो बचे, वह ओवरफ़्लो मेन्यू में समा जाता है। कुछ भी स्वाइप के पीछे नहीं छिपता और न ही स्क्रीन के किनारे कटता है, और सक्रिय किया हुआ मॉडिफ़ायर उस कुंजी पर भी लागू होता है जिसे आप ओवरफ़्लो में से चुनते हैं।

CTRL एक स्टिकी मॉडिफ़ायर की तरह काम करता है: CTRL टैप करें, फिर Ctrl-C भेजने के लिए 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, फ़ंक्शन कुंजियाँ F1F12, Ctrl+कुंजी और Alt/Option-को-Meta कॉर्ड, तथा Shift+Tab को मैप करता है। मॉडिफ़ायर कुंजियाँ अतिरिक्त कुंजी पंक्ति के स्टिकी मॉडिफ़ायर के साथ मिलकर काम करती हैं।

पेस्ट

जो प्रोग्राम इसका अनुरोध करते हैं (bash, Vim और अन्य ब्रैकेटेड-पेस्ट ऐप्स) उनमें पेस्ट करना ब्रैकेटेड-पेस्ट मार्करों में लपेटा जाता है, इसलिए बहु-पंक्ति क्लिपबोर्ड सामग्री लाइन-दर-लाइन अपने आप निष्पादित होने के बजाय टेक्स्ट के रूप में डाली जाती है। केवल वास्तविक पेस्ट लपेटे जाते हैं; टाइप किया और बोला गया टेक्स्ट अछूता रहता है।

चयन, कॉपी, साझा करें

अपनी उंगली के नीचे वाले शब्द को चुनने के लिए टर्मिनल के अंदर देर तक दबाएँ, फिर समायोजित करने के लिए हैंडल खींचें। चयन टूलबार तीन क्रियाएँ देता है:

टर्मिनल में खोज

पूरे टर्मिनल बफ़र — स्क्रॉलबैक और दृश्य स्क्रीन — में खोजें और मिलानों के बीच जाएँ। टर्मिनल नियंत्रणों से खोज खोलें, कोई क्वेरी टाइप करें और हिट्स के बीच आगे बढ़ें। यह Android और iOS दोनों पर काम करता है।

रंग, इटैलिक और रिमोट क्लिपबोर्ड

शेल इंटीग्रेशन और इनलाइन छवियाँ

रूप-रंग और कुंजियाँ

Android और iOS दोनों पर, Settings आपको टर्मिनल को अनुकूलित करने देती है:

रीसेट आज की सूची को जमा देने के बजाय ऐप के साथ आए डिफ़ॉल्ट लौटाता है, ताकि किसी बाद के रिलीज़ के सुधार भी आप तक पहुँचें। बदलाव पहले से खुले पैन पर लाइव लागू होते हैं।

स्क्रॉलिंग

Mobile SSH टर्मिनल की स्थिति के आधार पर स्क्रॉल इशारों को रूट करता है:

Android पर, माउस-ट्रैकिंग वाले प्रोग्राम के भीतर किया गया टैप उसी सेल पर बायाँ क्लिक बनकर पहुँचता है, इसलिए htop, vim और क्लिक-से-फ़ोकस होने वाले पैन स्पर्श पर प्रतिक्रिया देते हैं। iOS पर उसी प्रोग्राम में टैप करने से क्लिक के बजाय कीबोर्ड ऊपर आता है; वहाँ केवल व्हील स्क्रॉलिंग रिपोर्ट होती है।

यदि आप पीछे स्क्रॉल करते हुए टाइप करते हैं, तो Mobile SSH लाइव टर्मिनल दृश्य पर लौट आता है।

tmux व्यवहार

Mobile SSH आउटगोइंग tmux attach और new-session कमांड देखता है, जैसे:

tmux attach -t work
tmux a -t work
tmux new -A -s work

जब आप tmux में थे और कनेक्शन गिर जाता है, ऐप उस सर्वर के अंतिम tmux सेशन नाम को याद रख सकता है और पुनः कनेक्ट के बाद फिर से अटैच करने का प्रयास कर सकता है। यदि कोई स्पष्ट सेशन नाम नहीं देखा गया लेकिन ऐप जानता है कि आप वैकल्पिक-स्क्रीन tmux-जैसे सेशन में थे, तो यह सामान्य tmux attach आज़मा सकता है।

यह व्यवहार सर्वोत्तम-प्रयास है। यदि रिमोट tmux सेशन अब मौजूद नहीं है, तो रिमोट शेल उपलब्ध रहता है।

दोनों प्लेटफ़ॉर्म एक ही होस्ट पर एक से अधिक tmux सर्वर (सॉकेट) भी संभाल सकते हैं, और सेशनों को नाम या बनने की तिथि से छाँट सकते हैं।

Herdr और Zellij (Android)

Android यही विचार दो और मल्टीप्लेक्सरों के लिए भी देता है। हर एक का अपना टूलबार आइकन है, और आइकन तभी दिखता है जब ऐप ने वह प्रोग्राम सर्वर पर सचमुच खोज लिया हो — यानी which चलाए बिना ही टूलबार आपको बता देता है कि वहाँ क्या स्थापित है।

यदि herdr या Zellij स्थापित तो है पर लॉगिन शेल के PATH में नहीं है, तो पृष्ठ उसे जोड़ने का प्रस्ताव देता है।

हर सहेजे गए सर्वर में एक Attach on connect सेटिंग होती है: Auto (detect), Nothing, tmux, herdr या Zellij। Auto पहले वही चुनता है जिसे आपने उस सर्वर पर आख़िरी बार उपयोग किया था, फिर वह जिसके सेशन चालू हैं, फिर वह जो स्थापित है — और जब तक उसने सर्वर की जाँच नहीं की, तब तक अनुमान लगाने के बजाय किसी से भी अटैच नहीं करता।

iOS ऐप आज केवल tmux के लिए है।

Agent alerts

Mobile SSH आपको बताता है कि कोई रिमोट AI कोडिंग एजेंट — Claude Code, Codex, Gemini — कब आप पर अटका हुआ है। यह आपका टर्मिनल आउटपुट पढ़कर अनुमान नहीं लगाता। इसके दो रास्ते हैं, और वे अलग-अलग स्तर के विवरण देते हैं।

घंटी

बिना किसी सेटअप के, जिस सेशन को आप नहीं देख रहे उससे आई टर्मिनल घंटी एक अलर्ट बना देती है, और वैसे ही डेस्कटॉप-नोटिफ़िकेशन एस्केप सीक्वेंस (OSC 9, OSC 777) भी, जिन्हें कई टूल पहले से भेजते हैं। आपके टाइप करने के तुरंत बाद आने वाली घंटियाँ अनदेखी कर दी जाती हैं, ताकि सामान्य शेल पूर्णता का शोर आपको न बुलाए।

इसमें कुछ सेट करना नहीं पड़ता, पर ऐप को केवल इतना पता होता है कि कुछ बजा है।

एजेंट हुक

ऐप को यह जानने के लिए कि कौन-सा एजेंट प्रतीक्षा कर रहा है और क्या कर रहा है, सर्वर पर एजेंट हुक स्थापित करें:

यह उस सर्वर पर ~/.mobile-ssh/agent-hook.sh में एक छोटी शेल स्क्रिप्ट लिख देता है। यह किसी एक एजेंट से बँधी नहीं है — यह किसी वेंडर के प्रारूप को पढ़ने के बजाय कमांड-लाइन आर्ग्युमेंट लेती है — इसलिए जो कुछ भी कोई कमांड चला सकता है, वह इसके ज़रिए सूचना दे सकता है। फ़ाइल हटा देना ही साफ़-सुथरी अनइंस्टॉल है।

एक बार एजेंट हुक के ज़रिए सूचना देने लगे:

बिना टाइप किए जवाब देना

जब कोई एजेंट ऐसा सवाल पूछता है जिसके उत्तर तय हों, तो ऐप Agents सूची में हर विकल्प के लिए एक बटन दिखाता है — अधिकतम छह। Android पर आप किसी पैन हेडर में एजेंट चिप को भी टैप कर सकते हैं।

आपका जवाब सेशन में टाइप नहीं होता। वह एक अलग चैनल से एक फ़ाइल में लिखा जाता है और हुक उसे उठा लेता है, इसलिए जवाब देने से स्क्रीन पर चल रही चीज़ बिगड़ नहीं सकती। ऐप ऐसा विकल्प भेजने से मना कर देता है जो प्रॉम्प्ट ने वास्तव में दिया ही न हो, और यदि कनेक्शन इस बीच टूट गया हो तो चुपचाप विफल होने के बजाय साफ़-साफ़ बता देता है।

सेटिंग्स

दोनों प्लेटफ़ॉर्म पर अलर्ट डिफ़ॉल्ट रूप से चालू हैं, और नोटिफ़िकेशन, ध्वनि, कंपन तथा यह कि आप जिस सेशन को अभी देख रहे हैं उससे भी अलर्ट आए या नहीं — इन सबके लिए अलग-अलग स्विच हैं।

एक डिफ़ॉल्ट जानने लायक है: ध्वनि केवल हेडफ़ोन तक सीमित है। जब कुछ भी लगा या जुड़ा न हो, तो अलर्ट सूचना देता है और कंपन करता है, पर कोई आवाज़ नहीं बजाता। यदि आप चाहते हैं कि अलर्ट फ़ोन के स्पीकर पर सुनाई दे, तो इसे बंद कर दें।

कोई संवेदनशीलता सेटिंग नहीं है और न ही कोई ध्वनि चयनकर्ता — नियंत्रण बस चालू/बंद के हैं।

फ़ुल-स्क्रीन टर्मिनल प्रोग्राम

Vim, less, htop, ncurses टूल और tmux पैन जैसे प्रोग्रामों के लिए: