پروژه Phoenix Term؛ چطور خط فرمان لینوکس و مک را به ابزار همه‌فن‌حریف تبدیل کنیم؟
کد خبر : ۹۱۲۹۱۵
|
تاریخ : ۱۴۰۵/۰۳/۲۴
-
زمان : ۱۰:۵۹
|
دسته بندی: اخبار فناوری

پروژه Phoenix Term؛ چطور خط فرمان لینوکس و مک را به ابزار همه‌فن‌حریف تبدیل کنیم؟

معرفی Phoenix Term؛ پکیج متن‌باز برای یکپارچه‌سازی و ارتقای همه‌جانبه ترمینال در لینوکس و macOS.

تقریبا تمام توسعه‌دهندگانی که می‌شناسم، داستانی برای تعریف‌کردن درباره‌ی چالش‌های کانفیگ ترمینال خود دارند. داستان معمولا این‌طور شروع می‌شود: یک آخر هفته کامل را غرق در فایل‌های تنظیمات و کانفیگ‌ها می‌شوند، همه‌چیز را دقیقا همان‌طور که می‌خواهند جفت‌وجور می‌کنند و مدتی بعد که کامپیوتر جدیدی می‌خرند، حتی یادشان نمی‌آید از بین آن ۴۰ تغییر ریزی که اعمال کرده بودند، کدام‌یک واقعا حیاتی بود.

به‌عنوان توسعه‌دهنده‌ای در تیم فنی «فورج» زومیت، همواره با چالش شخصی‌سازی ترمینال دست‌وپنجه نرم می‌کردم، تا اینکه تصمیم گرفتم یک‌بار برای همیشه، تمام ابزارهایی را که در ترمینال شخصی خودم استفاده می‌کردم، در قالب پکیج یکپارچه‌ای به‌نام Phoenix Term جمع‌آوری کنم؛ پروژه‌ی متن‌بازی که که تنها با اجرای یک دستور، ترمینال را متحول می‌کند. در ادامه با معرفی Phoenix Term همراه زومیت باشید.

پروژه‌ی Phoenix Term را حسین ضرابی، عضو تیم فنی «فورج» در گروه رسانه‌ای قلم توسعه داده است.

Phoenix Term پکیج تمام‌عیاری برای macOS و Debian/Ubuntu است که بیش‌از ۱۸ ابزار CLI مدرن را به‌طور هم‌زمان نصب و پیکربندی می‌کند؛ در جدول زیر، جزئیات مربوط به ابزارهای داخل پکیج را مشاهده می‌کنید.

ابزارهای موجود در پکیج Phoenix Term

لایه

ابزار و کامپوننت استفاده‌شده

عملکرد و جزییات پکیج

Terminal

Ghostty

والپیپر اختصاصی، فونت ComicShannsMono Nerd، رنگ LightSeaGreen

Shell

Zsh + Oh-My-Zsh

همراه با پلاگین‌های پیشنهاد خودکار کلمات و هایلایت سریع دستورات

Prompt

Starship

نمایش اطلاعات مسیر و گیت در قالب کپسول‌های رنگی

Multiplexer

tmux + TPM

مدیریت پیشرفته پنجره‌ها به همراه پلاگین‌های extrakto و tmux-cowboy و ...

Sidebar

phoenix-sysmon

نمایش زنده‌ی وضعیت پردازنده، رم، دیسک، شبکه، باتری و ساعت

Welcome

بنر اختصاصی Figlet

نمایش نام با فونت گرافیکی ANSI Shadow در بالای هر شل

Editor

Neovim + LazyVim

ویرایشگر پیشرفته‌ با تم اختصاصی مشکی-طلایی Phoenix

Core Utilities

web . phoenix-clip

phoenix-cheat . phxssh

دسترسی سریع به لینک‌ها/سرورها، کلیپ‌بورد یکپارچه، سیستم چیت‌شیت تب‌بندی شده و مدیریت SSH

CLI Tools

fzf · zoxide · atuin · eza · bat · fd · ripgrep · yazi · btop · tldr · gh

پکیج کامل ابزارهای جست‌وجو، ناوبری، مدیریت فایل و تاریخچه‌ی هوشمند

لایه‌ها و ابزارها

با ابزار‌هایی که پکیج Phoenix Term به ترمینال اضافه می‌کند، دیگر به هدردادن وقت برای پیکربندی لایه‌ها و ابزارهای ترمینال خود نیازی ندارید؛ همه‌چیز در کمتر از چند دقیقه آماده‌ی کار است.

به‌محض بازکردن اولین پنجره‌ی Ghostty، با محیط زیر روبه‌رو می‌شوید:

پروژه‌ی Phoenix Term صرفا یک پوسته‌ی ظاهری نیست؛ بلکه ابزارهای زیرساختی و مدرنی را نصب می‌کند که لایه‌های ترمینال را ارتقا می‌دهند؛ از جمله‌ی این ابزارهای زیرساختی می‌توان به موارد زیر اشاره کرد.

پایه‌ی پکیج Phoenix Term روی Ghostty بنا شده؛ ترمینالی که با GPU رندر می‌کند و از نظر سرعت راه‌اندازی و رندر متن یکی‌از سریع‌ترین گزینه‌های موجود است. Phoenix Term ترمینال Ghostty را با فونت ComicShannsMono Nerd Font و والپیپر تاریک اختصاصی پیکربندی می‌کند.

شل پیش‌فرض به Zsh ارتقا می‌یابد و دو پلاگین مهم همراهش نصب می‌شود:

معماری پکیج به‌گونه‌ای است که متغیر TERM_PROGRAM را بررسی می‌کند؛ اگر داخل VS Code Terminal یا یک SSH session باشید و Ghostty نداشته باشید، لایه‌ی tmux به‌طور خودکار کنار می‌رود تا alias-ها و ابزارهای شل بدون هیچ اختلالی کار کنند.

tmux یک multiplexer ترمینال است؛ به‌زبان ساده، به کاربر اجازه می‌دهد پنجره‌ی ترمینال را به چند بخش (pane) تقسیم کند، بین سشن‌های مختلف جابه‌جا شود و سشن‌ها را حتی بعداز بستن ترمینال زنده نگه دارد.

پکیج Phoenix Term به‌ازای هر پنجره‌ی Ghostty یک tmux session مستقل با شناسه‌ی اختصاصی می‌سازد تا سشن‌ها با هم تداخل نداشته باشند. چند پلاگین هم همراهش نصب می‌شود:

Neovim یک نسخه‌ی مدرن از Vim است که به‌صورت async کار می‌کند و از LSP (Language Server Protocol) پشتیبانی بومی می‌کند؛ بدین‌مفهوم که auto-complete، تعریف توابع و خطاهای real-time مثل VS Code را داخل ترمینال در اختیارتان می‌گذارد.

LazyVim یک توزیع پیش‌پیکربندی‌شده‌ی Neovim است که پلاگین‌های ضروری را با هم نصب و تنظیم می‌کند تا از اول نیازی به ساعت‌ها کانفیگ نداشته باشید. Phoenix Term یک تم طلایی-مشکی اختصاصی هم روی آن اعمال می‌کند.

ابزارهای کابردی دیگری که در خط فرمان پکیج Phoenix Term در دسترس دارید، موارد زیر هستند:

دستورات کلاسیک Unix مثل ls، cat و find دهه‌هاست تغییر نکرده‌اند. نسخه‌های جدیدتری وجود دارند که همان کار را با سرعت بیشتر، خروجی بهتر و قابلیت‌های اضافه انجام می‌دهند. Phoenix Term هر دو دستور را به جایگزین alias می‌کند؛ بدین‌مفهوم که چه cat بزنید چه bat، در هر دو حالت bat اجرا می‌شود:

دستور

جایگزین

قابلیت‌ها

ls

eza

آیکون فایل‌ها، ستون git status، رنگ‌بندی نوع فایل

cat

bat

syntax highlighting، شماره‌خط، نمایش تغییرات git در margin

find

fd

سریع‌تر، احترام به gitignore، ساده‌تر، regex

grep

ripgrep

ده‌ها برابر سریع‌تر، multi-core، احترام به gitignore

cd

zoxide

تاریخچه‌ی مسیرها را یاد می‌گیرد؛ cd phoenix-term کافی است تا به پروژه بپرد

top

btop

نمودار real-time مصرف CPU/رم، مدیریت پروسه‌ها با کیبورد

Ctrl-R

atuin

تاریخچه در SQLite، جست‌وجوی fuzzy با فیلتر دایرکتوری، exit code و زمان

ابزارهای مکمل که همراه پکیج Phoenix Term نصب می‌شوند:

ابزار

دستور

کاربرد

lazygit

phxgit

TUI تمام‌صفحه برای git — stage، commit، rebase و merge بدون حفظ دستور

lazydocker

phxld

TUI تمام‌صفحه برای Docker؛ کانتینرها، ایمیج‌ها، لاگ و stats در یک صفحه

lazyssh

phxssh

TUI برای مدیریت SSH؛ اتصال، اضافه‌کردن، ویرایش و جست‌وجوی host-ها از روی ssh/config./~

yazi

y

file manager ترمینالی که هنگام خروج، شل را به دایرکتوری انتخابی می‌برد

tldr

tldr <cmd>

خلاصه‌ی کاربردی و مثال‌محور man page؛ بدون متن اضافه

gh

gh

ابزار رسمی خط فرمان GitHub ؛PR، issue، repo مستقیم از ترمینال

fzf

Ctrl-T

fuzzy finder عمومی؛ جست‌وجوی فایل، تاریخچه و هر لیستی

راهنمای شورتکات‌ها (Cheat Sheet): برای هیچ‌کدام از ابزارها نیازی به حفظ‌کردن شورتکات‌ها ندارید؛ کلید میان‌بر Cmd-/ (در مک) یا Ctrl-Shift-/ (در لینوکس) و همچنین Ctrl-A ? یک پاپ‌آپ گرافیکی و تب‌بندی‌شده از تمام alias-ها، دستورات و شورت‌کات‌های سیستم را روی صفحه باز می‌کند.

به‌عنوان توسعه‌دهنده، پایداری ابزار برایم اولویت اول بود؛ به‌همین دلیل یک CLI اختصاصی به نام phoenix-term طراحی کردم که مدیریت همه چیز را از یک جا ممکن می‌کند:

دستور

وظیفه

phoenix-term settings

منوی تعاملی برای تغییر نام بنر، والپیپر، ادیتور و...

تنظیمات با آپدیت پاک نمی‌شوند

phoenix-term check

در پس‌زمینه و بدون API call به گیت‌هاب،

وجود نسخه‌ی جدید را بررسی می‌کند

phoenix-term update

به آخرین نسخه ارتقا می‌دهد

تمام تنظیمات شخصی دست‌نخورده می‌مانند

phoenix-term revert

به نسخه‌ی قبلی برمی‌گردد

و چون revert هم snapshot می‌گیرد،

خودش هم قابل برگشت است

phoenix-term doctor

سلامت symlink‌ها، پکیج‌ها و فونت‌ها را بررسی می‌کند

روی لینوکس شورت‌کات‌های

GNOME/KDE را هم اسکن می‌کند

phoenix-term notes

تغییرات نسخه‌ی فعلی را نمایش می‌دهد

اگر چند نسخه را یکجا آپدیت کرده باشید،

هر نسخه یک تب جداگانه دارد

روی macOS و تمام توزیع‌های مبتنی‌بر Debian/Ubuntu (مینت، Pop!_OS، Kali و...)، برای نصب پکیج Phoenix Term، فقط این یک دستور کافی است:

اسکریپت، سیستم‌عامل و معماری پردازنده (Intel یا Apple Silicon/ARM) را تشخیص می‌دهد، پکیج‌منیجرها را بررسی می‌کند و همه‌ی ابزارها و فونت‌ها را بدون دستکاری فایل‌های حیاتی سیستم نصب می‌کند. بعد از اتمام، یک پنجره‌ی Ghostty جدید باز کنید. تمام؛ لذت ببرید.

مسیر مخصوص توسعه‌دهندگان: مخزن را clone کنید و bash install.sh را اجرا کنید. در این حالت تمام کانفیگ‌ها به داخل ریپو symlink می‌شوند؛ یعنی هر تغییری در فایل‌های مخزن بلافاصله در ترمینال اعمال می‌شود.

دنیای متن‌باز با همین ایده‌های اشتراکی جلو می‌رود. من Phoenix Term را ساختم تا پیچیدگی‌های شخصی‌سازی ترمینال را پشت یک اسکریپت هوشمند پنهان کنم تا هم خودم در کارهای روزمره و توسعه‌ی زومیت سرعت بیشتری داشته باشم، هم دیگر توسعه‌دهندگان بتوانند از یک محیط استاندارد، زیبا و پرسرعت بهره‌مند شوند.

پروژه‌ی Pheonix Term کاملا متن‌باز و تحت لایسنس MIT منتشر شده است. اگر شما هم می‌خواهید به بهبود این ابزار کمک کنید، پیشنهاد می‌کنم حتما سری به صفحه‌ی گیت‌هاب آن بزنید، به آن ستاره (Star) بدهید یا ایده و باگ‌های خود را در بخش Issues با من در میان بگذارید:

نظر شما درباره این ابزار مدرن چیست؟ آیا محیط خط فرمان خود را شخصی‌سازی کرده‌اید یا از ظاهر ساده و پیش‌فرض سیستم‌عامل استفاده می‌کنید؟ نظرات و تجربیات خود را در بخش دیدگاه‌ها با من و دیگر کاربران زومیت به اشتراک بگذارید.

خانواده ما

تبلیغات


اشتراک گذاری

دیدگاه‌ها


ارسال دیدگاه