تقریبا تمام توسعهدهندگانی که میشناسم، داستانی برای تعریفکردن دربارهی چالشهای کانفیگ ترمینال خود دارند. داستان معمولا اینطور شروع میشود: یک آخر هفته کامل را غرق در فایلهای تنظیمات و کانفیگها میشوند، همهچیز را دقیقا همانطور که میخواهند جفتوجور میکنند و مدتی بعد که کامپیوتر جدیدی میخرند، حتی یادشان نمیآید از بین آن ۴۰ تغییر ریزی که اعمال کرده بودند، کدامیک واقعا حیاتی بود.
بهعنوان توسعهدهندهای در تیم فنی «فورج» زومیت، همواره با چالش شخصیسازی ترمینال دستوپنجه نرم میکردم، تا اینکه تصمیم گرفتم یکبار برای همیشه، تمام ابزارهایی را که در ترمینال شخصی خودم استفاده میکردم، در قالب پکیج یکپارچهای بهنام 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 با من در میان بگذارید:
نظر شما درباره این ابزار مدرن چیست؟ آیا محیط خط فرمان خود را شخصیسازی کردهاید یا از ظاهر ساده و پیشفرض سیستمعامل استفاده میکنید؟ نظرات و تجربیات خود را در بخش دیدگاهها با من و دیگر کاربران زومیت به اشتراک بگذارید.
خانواده ما
دیدگاهها