টার্মিনাল

Mobile SSH টার্মিনাল ফোন ও ট্যাবলেট পরিচালনার জন্য তৈরি। এটি একটি টার্মিনাল ক্যানভাস, অতিরিক্ত কী সারি, মাল্টি-সেশন প্যান, স্ক্রল হ্যান্ডলিং এবং পুনঃসংযোগ আচরণ একত্র করে।

টার্মিনাল মূল বিষয়

মাল্টি-সেশন গ্রিড

Mobile SSH একসাথে আটটি SSH সেশন পর্যন্ত চালাতে পারে। প্রতিটি সেশন টার্মিনাল গ্রিডে একটি প্যান হিসেবে দেখা যায়। নির্বাচন করতে প্যানে ট্যাপ করুন, অথবা অন্য সংযোগ শুরু করতে + Add Session ব্যবহার করুন।

প্যান হেডার জানায় আপনি কোথায় আছেন। Android-এ এটি প্যানের প্রকৃত কার্যকরী ডিরেক্টরি দেখায়, যা tmux থেকে জেনে নেওয়া হয় বা শেল OSC 7-এর মাধ্যমে জানায় এবং অ্যাপ খোলা থাকা অবস্থায় তা হালনাগাদ হতে থাকে; iOS-এ এটি রিমোট যে শিরোনাম সেট করে তা দেখায়, না পেলে user@host:port দেখায়।

প্যান বন্ধ করলে সেই SSH সেশন বিচ্ছিন্ন হয়। স্টার্ট স্ক্রিনে ফিরলে সক্রিয় সেশন Active Sessions-এর মাধ্যমে উপলব্ধ থাকে।

Eternal Terminal (ET)

প্রতিটি সংরক্ষিত সার্ভার দুটি ট্রান্সপোর্টের একটি ব্যবহার করতে পারে, যা সার্ভার যোগ বা সম্পাদনার সময় Transport নির্বাচক দিয়ে বেছে নেওয়া হয়:

ET সার্ভারে সেশনটি সচল রাখে, তাই আপনার ফোন নেটওয়ার্ক বদলালে বা স্লিপ থেকে জাগলে Mobile SSH নতুন শেল না খুলে সেই একই চলমান শেলে আবার অ্যাটাচ করে। এটি মোবাইল ডেটা, Wi-Fi/সেলুলার হস্তান্তর এবং দীর্ঘ-চলমান কমান্ডের জন্য উপযোগী।

ET-এর জন্য হোস্টে একটি etserver প্রক্রিয়া দরকার। সার্ভারে সেটি না থাকলে Mobile SSH বিদ্যমান SSH সংযোগের মাধ্যমেই আপনার হয়ে তা ইনস্টল ও চালু করে দিতে পারে — হাতে কোনো সার্ভার সেটআপের দরকার নেই। ET উপলব্ধ হলে Eternal Terminal ট্রান্সপোর্ট নির্বাচন করে সংযোগ করুন।

অতিরিক্ত কী সারি

দুই প্ল্যাটফর্মই তেরোটি টার্মিনাল কী-এর একটি সারি হাতের নাগালে রাখে — যেগুলো টাচ কীবোর্ডে অসুবিধাজনক বা একেবারেই নেই। 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 Android-এর চেয়ে iOS-এ বেশি স্টিকি — 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 ম্যানেজার

Mobile SSH-এ একটি tmux ম্যানেজার আছে, যাতে প্রিফিক্স কর্ড টাইপ না করেই আপনি tmux ব্রাউজ ও নিয়ন্ত্রণ করতে পারেন। সংযুক্ত সেশন থেকে Tmux বোতাম দিয়ে এটি খুলুন। এটি তিনটি বিভাগে তালিকা দেখায়:

ম্যানেজার থেকে আপনি পারেন:

যে সেশনের এজেন্ট ইনপুটের অপেক্ষায় আছে সেটি একটি 🔔 দিয়ে চিহ্নিত হয়, তাই থেমে থাকা কোনো Claude Code বা Codex চালু কাজ এক নজরেই চোখে পড়ে এবং আপনি তাতে অ্যাটাচ করতে পারেন। এটি উপরের reattach ইঙ্গিতের পরিপূরক: reattach যুক্তি পুনঃসংযোগে স্বয়ংক্রিয়ভাবে আপনার শেষ সেশন ফিরিয়ে আনে, আর ম্যানেজার আপনাকে পূর্ণ হাতে-করা নিয়ন্ত্রণ দেয়।

দুই প্ল্যাটফর্মই একই হোস্টে একাধিক 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 প্যানের মতো প্রোগ্রামের জন্য: