মূল কনটেন্টে যান
Termi, saved commands and a grid of terminals

Termi - macOS ও Linux-এর জন্য ওপেন সোর্স টার্মিনাল অ্যাপ

macOS ও Linux-এর জন্য একটি ওপেন সোর্স টার্মিনাল অ্যাপ, Webanion MIT লাইসেন্সে প্রকাশ করেছে: সেভ করা কমান্ড যা একটি ট্যাবে পাশাপাশি সর্বোচ্চ চারটি টার্মিনাল খোলে, Termi-র মনে রাখা লেআউটে, আর অ্যাপের সঙ্গেই শুরু হতে পারে; স্প্লিট, রিওপেন, একটি কমান্ড প্যালেট, একটি শর্টকাট শিট, একটি বিল্ট-ইন গাইড, আর সাইডবারে CPU, মেমোরি ও নেটওয়ার্কের হিসাব। Electron, React, TypeScript, xterm.js ও node-pty, electron-vite দিয়ে তৈরি আর Vitest দিয়ে পরীক্ষিত, সঙ্গে একটি MCP সার্ভার যাতে একটি অ্যাসিস্ট্যান্ট সেভ করা কমান্ড সামলাতে পারে। সোর্স github.com/webanion/termi-এ।

ElectronReact.jsTypeScriptxterm.jsnode-ptyelectron-viteVitest
Md Moniruzzaman Image
Jawad Ahbab Turna

Md Moniruzzaman, Jawad Ahbab

পুরো গল্পটা

একটি সেভ করা কমান্ড, চারটি টার্মিনাল, মনে রাখা লেআউট, আর চালু হতেই পুরো গ্রিড ফিরে আসা।

প্রতিদিন সকালে সেই একই আটটি উইন্ডো

একটি প্রজেক্টে কাজ করা একজন ডেভেলপার প্রতিটি কর্মদিবসে একই প্রসেসগুলো চালু করেন: একটি ডেভ সার্ভার, একটি টেস্ট ওয়াচার, git-এর জন্য একটি শেল, আর যা কিছু সামনে আসে তার জন্য আরেকটি। টার্মিনাল অ্যাপ সেগুলো একটার পর একটা খোলে, প্রতিটি সঠিক ফোল্ডারে, তারপর উইন্ডোগুলো হাতে সাজাতে হয়, আর রিস্টার্টের পর পুরো রুটিনটা আবার চলে। কমান্ডগুলো কখনো বদলায় না। সেগুলো আবার টাইপ করতে যে মিনিটগুলো যায়, সেগুলোও বদলায় না।

Termi হলো macOS ও Linux-এর জন্য একটি ওপেন সোর্স টার্মিনাল অ্যাপ, যা Webanion MIT লাইসেন্সে প্রকাশ করেছে। একটি সেভ করা কমান্ড ধরে রাখে সর্বোচ্চ চারটি টার্মিনাল, যে ফোল্ডারে সেগুলো চলে আর যে লেআউটে সেগুলো বসে; এক ক্লিকে সবগুলো একটি ট্যাবে খোলে, আর Termi চালু হওয়ার মুহূর্তেই সেগুলো শুরু করতে পারে। অ্যাপের বাকি অংশ শেলের পথ থেকে সরে থাকে: স্প্লিট, রিওপেন, একটি কমান্ড প্যালেট, একটি শর্টকাট শিট, একটি বিল্ট-ইন গাইড, আর সাইডবারের নিচে মেশিনের CPU, মেমোরি ও নেটওয়ার্কের হিসাব।

একটি সেভ করা কমান্ড, চারটি টার্মিনাল

Termi নামের সেভ করা কমান্ডটি প্রজেক্টের চারটি টার্মিনাল একটি ট্যাবে খোলে: ওয়াচ মোডে ইউনিট টেস্ট, git লগ, টাইপ ও লিন্ট চেক, আর একটি সাধারণ শেল, সবই প্রজেক্টের ফোল্ডারে। প্রতিটি টার্মিনাল তার হেডারে কাঁচা কমান্ডের বদলে একটি শিরোনাম দেখায়, চালু থাকা ট্যাবগুলো তাদের শর্টকাটসহ সাইডবারের ওপরে বসে, আর সেভ করা কমান্ডগুলো নিচে, যেগুলো চালুর সময় শুরু হয় সেগুলোর পাশে একটি বোল্ট চিহ্ন।

Brand colour backdrop
The Termi window: a saved command running the unit tests, the git log, the type and lint checks and a shell in a grid of four, the sidebar with the running tabs and saved commands, and CPU, memory and network at its foot

একটি লেআউট যা Termi মনে রাখে

দুই, তিন বা চারটি টার্মিনালের একটি ট্যাব হতে পারে গ্রিড, পাশাপাশি, একটির ওপর একটি, বাঁয়ে বড় বা ওপরে বড়। লেআউট বেছে নেওয়া যায় সেভ করা কমান্ডের ডায়ালগে বা হেডারের ডান পাশের কন্ট্রোল থেকে, আর Termi সেই কমান্ডের জন্য তা মনে রাখে, তাই ট্যাবটি ঠিক যেভাবে রাখা হয়েছিল সেভাবেই ফিরে আসে। কমান্ডের বাকি যা দরকার সবই ডায়ালগে আছে: একটি নাম, ঐচ্ছিক শিরোনামসহ সর্বোচ্চ চারটি কমান্ড, ফোল্ডার, আর Termi খুললে সেটি শুরু হবে কি না। দুটি টার্মিনালের মাঝের রেখাটি টেনে আকার বদলানো যায়, আর ডাবল-ক্লিকে সেগুলো আবার সমান হয়ে যায়।

Brand colour backdrop
The edit dialog of a saved command: four commands with their titles, the layout picker with Grid chosen, the folder and Start when Termi opens
The same tab in the large-on-the-left layout: the tests wide on the left, the git log, the checks and the shell stacked on the right

স্প্লিট, রিওপেন, আর মেশিনের ওপর নজর

যেকোনো ট্যাব হেডার বা কীবোর্ড থেকে সর্বোচ্চ চারটি টার্মিনালে ভাগ হয়, নতুন শেলটি শুরু হয় ট্যাবের ফোল্ডারে; এখানে প্রোডাক্ট সাইটের ডেভ সার্ভার আর একটি টাইপচেক একটি ট্যাব ভাগ করে নিয়েছে। সেভ করা কমান্ডের একটি টার্মিনাল বন্ধ করলে হেডারে Reopen দেখা যায়, যা বন্ধ হওয়াগুলোর তালিকা দেখায় আর সেগুলোকে আগের জায়গায় ফিরিয়ে দেয়, আর সাইডবার দেখায় 3 of 4। ফুটার প্রতি ১.৫ সেকেন্ডে CPU, মেমোরি, ডাউনলোড ও আপলোড পড়ে।

A split tab: the product site dev server on the left and a typecheck in the shell that split added on the right
The grid tab with one terminal closed: Reopen in the header lists the closed shell with Reopen all, and the sidebar counts 3 of 4

সবকিছু কীবোর্ড থেকে

একটি কমান্ড প্যালেট নাম দিয়ে যেকোনো অ্যাকশন বা চালু থাকা টার্মিনাল খুঁজে দেয় আর পাশে তার কী দেখায়, আর একটি শর্টকাট শিট এক পাতায় প্রতিটি শর্টকাট তালিকাভুক্ত করে। কীগুলো ইচ্ছে করেই সিস্টেমভেদে আলাদা: macOS-এ Command কী কাজটা করে, আর Linux-এ একটি অক্ষরসহ সাধারণ Ctrl সবসময় শেলে পৌঁছায়, তাই Ctrl+C এখনো থামায় আর Ctrl+B থাকে tmux-এর প্রিফিক্স, আর Termi-র নিজের শর্টকাটগুলো ব্যবহার করে একটি অক্ষরসহ Ctrl+Shift, ট্যাবের জন্য একটি সংখ্যাসহ Alt, আর সেগুলোর মধ্যে চলাফেরার জন্য Ctrl+Page Up ও Page Down। সেভ করা কমান্ডও কীবোর্ড থেকে চলে: নামের একটা অংশ টাইপ করে Enter চাপুন, আর সেটি আগে থেকেই চালু থাকলে Termi তার ট্যাবে চলে যায়।

Brand colour backdrop
The keyboard shortcut sheet over the running app: every action with its Linux keys in two columns
The command palette: a search field and the actions by name, New Terminal, Split Terminal, New Saved Command and the rest, each with its keys

অ্যাপের সঙ্গেই আসা সাহায্য

প্রথমবার চালু হলে আর পরে Help মেনু থেকে একটি পাঁচ পাতার গাইড খোলে, অ্যাপের প্রতিটি অংশের জন্য এক পাতা: টার্মিনাল ও ট্যাব, সেভ করা কমান্ড, স্প্লিট টার্মিনাল, কপি করা ও স্ট্যাটস, আর MCP সার্ভার। Help, Report an Issue একটি বাগ রিপোর্ট খোলে যাতে Termi-র সংস্করণ, সিস্টেম আর শেল আগে থেকেই ভরা থাকে, ব্যবহারকারী পড়ে জমা দেবেন। Termi নিজে থেকে কিছুই পাঠায় না: কোনো টেলিমেট্রি নেই, কোনো অ্যানালিটিক্স নেই, কোনো আপডেট চেক নেই।

Brand colour backdrop
The built-in guide on its second page, Saved commands, over the running app: how to save one, pick its layout, run it, and reopen its terminals

ডাউনলোডের জন্য একটি পাতা

termi.webanion.com এক পাতায় রাখে ডাউনলোড, ফিচার, লেআউট আর শর্টকাট, আর প্রথমে দেখায় দর্শকের নিজের সিস্টেমের বিল্ড: Apple silicon ও Intel Mac-এর জন্য একটি dmg, Debian ও Ubuntu-র জন্য একটি deb, আর অন্য Linux ডিস্ট্রিবিউশনের জন্য একটি AppImage, প্রতিটি রিলিজের সঙ্গে মিলিয়ে দেখার জন্য একটি SHA256SUMS ফাইল। রিলিজ তৈরি করে একটি GitHub Actions ওয়ার্কফ্লো, কখনো হাতে নয়: এটি সংস্করণ বাড়ানো আর কমিট থেকে লেখা চেঞ্জলগসহ একটি পুল রিকোয়েস্ট খোলে, আর সেটি মার্জ করলে macOS ও Linux প্যাকেজ তৈরি হয়, সংস্করণটি ট্যাগ হয়, আর অবদানকারীদের নামসহ রিলিজটি প্রকাশিত হয়।

The whole product site in its dark theme: the hero, features, layouts, help, shortcuts, MCP, security, downloads and open source sections
The download section of the site: the macOS builds for Apple silicon and Intel, the deb and the AppImage for Linux, each release with its checksums

ওপেন সোর্স, Webanion থেকে

Termi শুরু করেছিলেন Jawad Ahbab, পরে Webanion এটিকে রিফ্যাক্টর করে MIT লাইসেন্সে একটি ওপেন সোর্স পণ্য হিসেবে প্রকাশ করে। Webanion-এর রিলিজের কাজ এটিকে দিয়েছে electron-vite বিল্ড, TypeScript, ESLint ও Prettier চেক, Vitest ইউনিট টেস্ট, আসল শেলের বিপরীতে ইন্টিগ্রেশন টেস্ট, প্রতিটি পুল রিকোয়েস্টে CI-তে Linux ও macOS-এ তৈরি অ্যাপের একটি স্মোক রান, আর প্রতিটি রিলিজ তৈরি ও প্রকাশ করার ওয়ার্কফ্লো।

উইন্ডোর নিচে Electron একটি স্যান্ডবক্সড React পেজ চালায় যা শুধু একটি যাচাই করা IPC চুক্তির মাধ্যমে শেলে পৌঁছায়, xterm.js টার্মিনালগুলো আঁকে আর node-pty সেগুলো চালায়, আর সেটিংস থাকে একটি JSON ফাইলে সংস্করণ নম্বর ও মাইগ্রেশনসহ, তাই পুরোনো বিল্ড কখনো নতুন বিল্ডের সেটিংস নষ্ট করে না। একই বিল্ডে একটি MCP সার্ভারও আসে, তাই Claude Code-এর মতো একটি অ্যাসিস্ট্যান্ট সেভ করা কমান্ডগুলো তালিকাভুক্ত, যোগ ও সম্পাদনা করতে পারে, গাইডে বলা সতর্কতাসহ: সেভ করা কমান্ড এক ক্লিকে বা চালুর সময় চলে, তাই ওই দুটি টুল ম্যানুয়াল অনুমোদনে থাকা উচিত। সোর্স, ইস্যু আর good first issue-গুলো আছে github.com/webanion/termi-এ।

আপনার আরও ভালো লাগতে পারে

Keyboard Tracker Logo

Keyboard Tracker - ডেস্কটপ কার্যকলাপের চার্ট ও রিপোর্ট

Linux, Windows ও macOS-এর একটি নিঃশব্দ ডেস্কটপ অ্যাপ, যা কীবোর্ড ও মাউসের ব্যবহার গোনে, চার্টে দেখায় এবং রিপোর্ট এক্সপোর্ট করে, Ja Turna-এর জন্য পাঁচ সপ্তাহে তৈরি। কেউ কী টাইপ করছে তা রেকর্ড না করেই এটি প্রেস গোনে, একদিন থেকে পুরো সময়কালের চার্ট দেখায় এবং মাসের পর মাসের ডেটাতেও মসৃণ থাকে, যেকোনো টেবিল এমন PDF হিসেবে ডাউনলোড করতে দেয় যা একজন ম্যানেজার শেয়ার করতে পারেন, আর নতুন মেশিনের জন্য পুরো ইতিহাস একটি ফাইলে ব্যাকআপ রাখে। একই কোডবেস থেকে Electron, React, TypeScript ও Redux।

Md Moniruzzaman Image

Md Moniruzzaman

সেপ্ট 07, 2021

Jawad Ahbab Turna
Read the Md Moniruzzaman blog

ব্লগটি প্রোডাকশনের ময়দান থেকে লেখা নোট: আর্কিটেকচারের সিদ্ধান্ত, বাস্তব ব্যবহারকারীর মুখোমুখি টিকে যাওয়া AI সিস্টেম, আর নিজের খরচ নিজে তোলা অবকাঠামো। কাজ থেকে লেখা, কাজ নিয়ে গল্প নয়।