টার্মিনাল
Mobile SSH টার্মিনাল ফোন ও ট্যাবলেট পরিচালনার জন্য তৈরি। এটি একটি টার্মিনাল ক্যানভাস, অতিরিক্ত কী সারি, মাল্টি-সেশন প্যান, স্ক্রল হ্যান্ডলিং এবং পুনঃসংযোগ আচরণ একত্র করে।
টার্মিনাল মূল বিষয়
- টার্মিনাল রঙ সমর্থন ও কার্সর-কী হ্যান্ডলিং সহ xterm-শৈলীর আচরণ ব্যবহার করে।
- স্ক্রলব্যাক বাফার ডিফল্টভাবে 5000 লাইন রাখে, এবং Settings-এ এটি ১,০০০, ১০,০০০ বা ৫০,০০০-এ সেট করা যায়।
- টাইপ করার আগে প্যান নির্বাচন করতে ট্যাপ করুন।
- টেক্সটের আকার বদলাতে টার্মিনাল প্যানে পিঞ্চ করুন। অঙ্গভঙ্গি স্থির হলে Mobile SSH রিমোট PTY-এর আকার বদলায়।
- ফুলস্ক্রিন মোডে যেতে প্যানে ডাবল-ট্যাপ করুন (অথবা এর প্রসারণ নিয়ন্ত্রণ ব্যবহার করুন)। গ্রিডে ফিরতে Android-এ Back, অথবা 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 ট্যাপ করুন, তারপর 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, ফাংশন কী F1–F12, Ctrl+কী এবং Alt/Option-কে-Meta কর্ড, এবং Shift+Tab ম্যাপ করে। মডিফায়ার কী অতিরিক্ত কী সারির স্টিকি মডিফায়ারের সঙ্গে মিলিত হয়।
পেস্ট
যে প্রোগ্রাম এটি চায় (bash, Vim এবং অন্যান্য ব্র্যাকেটেড-পেস্ট অ্যাপ) তাতে পেস্ট করা ব্র্যাকেটেড-পেস্ট মার্কারে মোড়ানো হয়, তাই একাধিক লাইনের ক্লিপবোর্ড কনটেন্ট লাইনে-লাইনে স্বয়ংক্রিয়ভাবে চালানোর বদলে টেক্সট হিসেবে সন্নিবেশিত হয়। শুধু আসল পেস্ট মোড়ানো হয়; টাইপ করা ও উচ্চারিত টেক্সট অপরিবর্তিত থাকে।
নির্বাচন, কপি, শেয়ার
টার্মিনালের ভেতরে দীর্ঘক্ষণ চেপে আপনার আঙুলের নিচের শব্দটি নির্বাচন করুন, তারপর সামঞ্জস্য করতে হ্যান্ডেলগুলো টানুন। নির্বাচন টুলবার তিনটি ক্রিয়া দেয়:
- Copy — নির্বাচিত টেক্সট সিস্টেম ক্লিপবোর্ডে রাখে। এরপরও নির্বাচনটি হাইলাইট থাকে, তাই আপনি এটি শেয়ার, পুনরায় কপি বা প্রসারিত করতে পারেন।
- Share — নির্বাচিত টেক্সট সিস্টেম শেয়ার শিটে (মেইল, নোট, মেসেজিং ইত্যাদি) পাঠায়।
- Select all — নির্বাচনকে সম্পূর্ণ দৃশ্যমান টার্মিনাল বাফারে প্রসারিত করে, তারপর Copy বা Share করুন।
টার্মিনালে খুঁজুন
পুরো টার্মিনাল বাফারে — স্ক্রলব্যাক ও দৃশ্যমান স্ক্রিন — খুঁজুন এবং ম্যাচগুলোর মধ্যে ঝাঁপ দিন। টার্মিনাল নিয়ন্ত্রণ থেকে সার্চ খুলুন, একটি কোয়েরি টাইপ করুন এবং হিটগুলোর মধ্য দিয়ে এগিয়ে যান। এটি Android ও iOS উভয়েই কাজ করে।
রঙ, ইটালিক ও রিমোট ক্লিপবোর্ড
- টার্মিনাল 24-bit ট্রু কালার ও ইটালিক রেন্ডার করে, তাই থিমযুক্ত প্রম্পট, সিনট্যাক্স হাইলাইটিং ও TUI ডেস্কটপে যেমন দেখায় তেমনই দেখায়।
- OSC 52 ক্লিপবোর্ড: কোনো রিমোট প্রোগ্রাম টেক্সট কপি করলে (tmux
set-clipboard, একটি Vim/Neovim OSC 52 yank), তা আপনার ফোনের ক্লিপবোর্ডে চলে আসে — তাই আপনি সার্ভার থেকে কপি করে একটি লোকাল অ্যাপে পেস্ট করতে পারেন। - Android ও iOS উভয়েই প্রশস্ত CJK, ইমোজি ও কম্বাইনিং অক্ষর (গ্রাফিম ক্লাস্টার ও জিরো-উইড্থ জয়েনার) সঠিকভাবে মাপা ও আঁকা হয়, এবং একটি বান্ডল করা Nerd Font পাওয়ারলাইন, starship, devicon ও Material Design আইকন গ্লিফ আঁকে, যেগুলো সিস্টেম ফন্ট অন্যথায় খালি বাক্স হিসেবে দেখাত।
শেল ইন্টিগ্রেশন ও ইনলাইন ছবি
- শেল ইন্টিগ্রেশন (OSC 133): আপনার শেল OSC 133 প্রম্পট মার্কার নির্গত করলে, Mobile SSH এক প্রম্পট থেকে আরেক প্রম্পটে যেতে এবং একটি দীর্ঘ-চলমান কমান্ড শেষ হলে আপনাকে সতর্ক করতে পারে। Android ও iOS-এ কাজ করে। কোনো অ্যাপই এই মার্কার নিজে ঢোকায় না — আপনার শেলকেই সেগুলো নির্গত করতে হবে (একটি
PROMPT_COMMAND/precmdহুক, বা starship)। Android-এ প্রম্পট নেভিগেশন Settings → Shell integration-এ সক্ষম না করা পর্যন্ত বন্ধ থাকে; iOS-এ মার্ক আসতে শুরু করলেই মেনুটি নিজে থেকে দেখা যায়। - আউটপুট নির্বাচন: কোনো কমান্ডের আউটপুটের ভিতরে যেকোনো জায়গায় স্পর্শ করে গোটা ব্লকটি নির্বাচন করুন — ৩০০ লাইন আগের বিল্ড ত্রুটিটিও, শুধু শেষ কমান্ডটি নয় — তারপর কপি, শেয়ার বা প্রসারিত করুন।
- ইনলাইন ছবি: যেসব প্রোগ্রাম Kitty গ্রাফিক্স প্রোটোকল ব্যবহার করে, তারা Android ও iOS-এ সরাসরি টার্মিনালে ছবি আঁকে। পিঞ্চ-জুম ও লাইন পুনরায় সাজানোর পরও ছবি টিকে থাকে: এগুলো সেলের হিসাবে মাপা হয় এবং নিজেদের লাইনের সঙ্গেই চলে, বাদ পড়ে ফাঁকা জায়গা রেখে যায় না। এগুলো মূল স্ক্রিনের বৈশিষ্ট্য এবং কোনো ফুল-স্ক্রিন TUI দখল নিলে মুছে ফেলা হয়।
- মোজাইক গ্লিফ (Android): ব্লক, ব্রেইল, সেক্সট্যান্ট ও অক্ট্যান্ট অক্ষরগুলো ফন্টের কাছে চাওয়ার বদলে অ্যাপ নিজেই আঁকে, তাই আপনি যে ফন্টই বেছে নিন,
chafa,timgও ANSI আর্ট গ্রিডে হুবহু টাইল হয় — কোনো ফাটল নেই, কোনো খালি বাক্স নেই। - প্রকৃত কার্যকরী ডিরেক্টরি (Android): প্যান হেডার শেষ প্রম্পটে যা ছাপা হয়েছিল তা নয়, বরং প্যানটি আসলে কোথায় আছে তা দেখায় — যা tmux থেকে জেনে নেওয়া হয় বা শেল OSC 7-এর মাধ্যমে জানায়।
চেহারা ও কী
Android ও iOS উভয়েই, Settings আপনাকে টার্মিনাল নিজের মতো সাজাতে দেয়:
- ফন্ট: সিস্টেম মনোস্পেস ফন্ট, JetBrains Mono বা Source Code Pro বেছে নিন।
- কালার স্কিম: Default, Solarized Dark বা Light, Gruvbox, Dracula, বা Nord — খোলা প্যানেলে সঙ্গে সঙ্গে প্রয়োগ হয়।
- অতিরিক্ত কী সারি: কী যোগ, অপসারণ, পুনর্বিন্যাস ও লুকান, নিজের এসকেপ-সিকোয়েন্স কী নির্ধারণ করুন এবং ডিফল্টে রিসেট করুন — সঙ্গে একটি লাইভ প্রিভিউ, যা আপনি ঠিক কেমন সারি-বিন্যাস পাবেন তা দেখায়। Android এটি একটি Keys ট্যাবে রাখে; iOS-এ এটি Extra keys → Customize keys-এ।
- প্রিসেট থেকে যোগ করুন: ছয়টি গ্রুপে প্রায় ৪৫টি কী-এর একটি প্যালেট —
F1–F12,^C^D^Z^R^L-এর মতো Ctrl সংমিশ্রণ,|~/_:-এর মতো প্রতীক, এবং মডিফায়ার।F1–F12সাধারণ এসকেপ সিকোয়েন্স হিসেবে পাঠানো হয়, তাই এদের জন্য কোনোFNকর্ড লাগে না। Android-এ একটি 📎 Attach a file কী-ও আছে, যা ফাইল পিকার খুলে চলমান সেশনে আপলোড করে; iOS-এ আছেINS,DELএবং একটিFNকী যা একটি অঙ্কের সারি দেখায়। - স্ক্রলব্যাক আকার: ১,০০০, ৫,০০০, ১০,০০০ বা ৫০,০০০ লাইন (ডিফল্ট ৫,০০০)। নতুন প্যানে প্রযোজ্য।
- টেক্সট আকার: পিঞ্চ-টু-জুমের পাশাপাশি একটি স্লাইডার।
- থিম: পুরো অ্যাপের জন্য System, Light বা Dark।
রিসেট আজকের তালিকাটিকে জমিয়ে না রেখে অ্যাপের সঙ্গে দেওয়া ডিফল্টগুলো ফিরিয়ে আনে, তাই পরবর্তী কোনো রিলিজের উন্নতিও আপনার কাছে পৌঁছায়। সম্পাদনা ইতিমধ্যেই খোলা প্যানেলে সঙ্গে সঙ্গে প্রযোজ্য হয়।
স্ক্রলিং
Mobile SSH টার্মিনাল অবস্থার উপর ভিত্তি করে স্ক্রল অঙ্গভঙ্গি রুট করে:
- সাধারণ শেল আউটপুটে সোয়াইপ করলে লোকাল স্ক্রলব্যাক বাফার স্ক্রল হয়।
- মাউস-মোড টার্মিনাল অ্যাপে স্ক্রলিং মাউস-হুইল এস্কেপ সিকোয়েন্স পাঠায়।
- মাউস মোড ছাড়া বিকল্প-স্ক্রিন অ্যাপে, যেমন অনেক tmux সেশন, স্ক্রলিং tmux কপি মোডে প্রবেশ করে এবং লাইন স্ক্রল কমান্ড পাঠায়।
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 বোতাম দিয়ে এটি খুলুন। এটি তিনটি বিভাগে তালিকা দেখায়:
- Sessions — সার্ভারের প্রতিটি tmux সেশন।
- Windows — নির্বাচিত সেশনের উইন্ডোগুলো।
- Panes — নির্বাচিত উইন্ডোর প্যানগুলো।
ম্যানেজার থেকে আপনি পারেন:
- বর্তমান টার্মিনালে একটি সেশন Attach করতে।
- নতুন সেশন বা উইন্ডো Create করতে, এবং সেগুলোর rename করতে।
- একটি প্যান আনুভূমিক বা উল্লম্বভাবে Split করতে, একটি প্যান zoom করতে, এবং সেশন, উইন্ডো বা প্যান kill করতে।
- সেশনগুলো নাম বা তৈরির তারিখ অনুসারে Sort করতে।
যে সেশনের এজেন্ট ইনপুটের অপেক্ষায় আছে সেটি একটি 🔔 দিয়ে চিহ্নিত হয়, তাই থেমে থাকা কোনো Claude Code বা Codex চালু কাজ এক নজরেই চোখে পড়ে এবং আপনি তাতে অ্যাটাচ করতে পারেন। এটি উপরের reattach ইঙ্গিতের পরিপূরক: reattach যুক্তি পুনঃসংযোগে স্বয়ংক্রিয়ভাবে আপনার শেষ সেশন ফিরিয়ে আনে, আর ম্যানেজার আপনাকে পূর্ণ হাতে-করা নিয়ন্ত্রণ দেয়।
দুই প্ল্যাটফর্মই একই হোস্টে একাধিক tmux সার্ভার (সকেট) সামলাতে পারে, এবং সেশনগুলো নাম বা তৈরির তারিখ অনুসারে সাজাতে পারে।
Herdr ও Zellij (Android)
Android আরও দুটি মাল্টিপ্লেক্সারের জন্য একই ধারণা সরবরাহ করে। প্রতিটির নিজস্ব টুলবার আইকন আছে, আর সার্ভারে সেই প্রোগ্রামটি অ্যাপ সত্যিই খুঁজে পেলে তবেই আইকনটি দেখা যায় — তাই which না চালিয়েই টুলবার আপনাকে জানিয়ে দেয় সেখানে কী কী ইনস্টল করা আছে।
- Herdr নিজস্ব শব্দভাণ্ডার ব্যবহার করে: সেশন, ওয়ার্কস্পেস, ট্যাব, প্যান। প্রতিটি প্যান তার এজেন্টের অবস্থা দেখায় — কাজ করছে, আপনাকে দরকার, নিষ্ক্রিয় — এবং আটকে থাকা কোনো এজেন্টকে তালিকা থেকেই উত্তর দেওয়া যায়। Herdr-এর নিজস্ব অবস্থা অ্যাপের এজেন্ট ব্যাজে যায়, তাই সার্ভারে কোনো হুক ইনস্টল ছাড়াই এটি কাজ করে।
- Zellij সেশন, ট্যাব ও প্যান তালিকাভুক্ত করে, সঙ্গে অ্যাটাচ, নাম পরিবর্তন, কিল ও স্প্লিট। কিল করা সেশন তালিকায় থেকে যায়, তাই অ্যাটাচ করলে সেগুলো আবার জেগে ওঠে; আর delete সেগুলোকে চিরতরে ভুলে যায়। ট্যাব ও প্যানের বিস্তারিত জানতে Zellij 0.44 বা নতুন সংস্করণ লাগে; পুরোনো সংস্করণে পেজটি ট্যাবের নাম দেখায় এবং কারণটিও জানায়। স্প্লিট করতে সেশনে একটি ক্লায়েন্ট অ্যাটাচ থাকা দরকার, আর পেজটি ব্যর্থ হবে এমন বোতাম দেওয়ার বদলে সেটি ব্যাখ্যা করে।
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) ইতিমধ্যেই পাঠায় সেগুলোতেও। আপনি টাইপ করার সঙ্গে সঙ্গে আসা ঘণ্টা উপেক্ষা করা হয়, তাই সাধারণ শেল কমপ্লিশনের শব্দে আপনাকে ডাকা হয় না।
এতে কোনো সেটআপ লাগে না, কিন্তু অ্যাপ শুধু এটুকুই জানে যে কিছু একটা বেজেছে।
এজেন্ট হুক
অ্যাপ যাতে জানতে পারে কোন এজেন্ট অপেক্ষা করছে এবং কী করছে, তার জন্য সার্ভারে এজেন্ট হুকটি ইনস্টল করুন:
- 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-এর জন্য অতিরিক্ত কী সারি ব্যবহার করুন।- টেক্সট খুব ছোট হলে পিঞ্চ জুম ব্যবহার করুন, তারপর রিমোট টার্মিনালের আকার স্থির হওয়া পর্যন্ত একটু অপেক্ষা করুন।