آموزش تصویری

حل مشکل به هم ریختگی متن فارسی در ترمینال ویندوز

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

مایکروسافت هنوز پشتیبانی کامل و پایدار از متن دوطرفه (Bidirectional / RTL) را در ویندوز ترمینال پیاده‌سازی نکرده است. مسئله‌ای که سال‌هاست در مخزن رسمی پروژه مطرح می‌شود و میلیون‌ها کاربر زبان‌های راست‌به‌چپ را تحت تأثیر قرار داده است. در نتیجه، بسیاری از کاربران مجبور شده‌اند به ترمینال‌های جایگزین روی بیاورند یا با نمایش نادرست متن کنار بیایند.

پروژه Windows Terminal RTL دقیقاً برای حل همین مشکل ساخته شده است. این پروژه یک پچ و مجموعه‌ای از بیلدهای آماده ارائه می‌دهد که پشتیبانی واقعی از متن راست‌به‌چپ را در لایه رندرینگ ویندوز ترمینال اضافه می‌کند. نتیجه آن، نمایش صحیح فارسی، عربی و عبری در تمام بخش‌های ترمینال است؛ بدون نیاز به نصب پیچیده یا دسترسی administrator.

در این مقاله آموزشی، پروژه را به‌طور کامل معرفی می‌کنیم، ویژگی‌های کلیدی آن را بررسی می‌کنیم و گام‌به‌گام نحوه نصب و استفاده از آن را توضیح می‌دهیم تا بتوانید به‌راحتی از آن در محیط کاری خود بهره ببرید.

معرفی پروژه

Windows Terminal RTL یک پروژه متن‌باز است که توسط AmirAliManzar توسعه داده شده و روی GitHub در دسترس است. هدف اصلی آن، رفع مشکل رندرینگ متن راست‌به‌چپ در ویندوز ترمینال است.

این پروژه مشکل را در لایه شکل‌دهی متن (text-shaping) و رندرر Atlas حل می‌کند. در نتیجه، اصلاحات روی تمام بخش‌هایی که ویندوز ترمینال متن را رسم می‌کند اعمال می‌شود:

  • نوار تب‌ها
  • رابط تنظیمات
  • محتوای داخل ترمینال (شامل PowerShell، CMD، WSL، ابزارهای CLI مثل claude code و opencode، و ویرایشگرهایی که از طریق SSH اجرا می‌شوند)

پروژه دو پچ اصلی ارائه می‌دهد:

  1. پچ RTL که الگوریتم بیدی (Bidirectional) را در رندرر اعمال می‌کند.
  2. پچ کدپیج کنسول که خروجی را به‌صورت پیش‌فرض روی UTF-8 تنظیم می‌کند تا متن فارسی حتی در سیستم‌هایی که زبان فارسی نصب نشده، به‌درستی منتقل شود و به علامت سؤال (????) تبدیل نگردد.

علاوه بر پچ‌ها، نسخه‌های ازپیش‌ساخته‌شده (portable و installer) نیز در بخش Releases ارائه شده‌اند تا کاربران بدون نیاز به کامپایل، بتوانند به‌سرعت از آن استفاده کنند. این پروژه به‌عنوان یک راه‌حل موقت تا زمانی که مایکروسافت پشتیبانی رسمی RTL را اضافه کند، طراحی شده است.

ویژگی‌های کلیدی

  • نمایش صحیح کلمات، شکل‌گیری حروف (shaping) و موقعیت مکان‌نما
  • اعمال اصلاحات در تمام بخش‌های رابط کاربری ترمینال (نه فقط محتوای داخل شل)
  • بیلدهای Portable که نیازی به نصب یا دسترسی administrator ندارند
  • نصب‌کننده گرافیکی ساده با پشتیبانی از زبان فارسی
  • همراه بودن فونت‌های Cascadia Code و Cascadia Mono با پشتیبانی کامل از حروف فارسی و عربی و ویژگی‌های شکل‌دهی (GSUB)
  • تنظیم پیش‌فرض کنسول روی UTF-8 برای جلوگیری از تبدیل متن به علامت سؤال
  • خواندن تنظیمات موجود ویندوز ترمینال (پروفایل‌ها، تم‌ها، طرح‌های رنگی و فونت‌ها) بدون تغییر دادن آن‌ها
  • امکان ساخت از سورس با اسکریپت‌های آماده
  • عدم تداخل با نسخه Store ویندوز ترمینال

پیش‌نیازها

  • ویندوز ۱۰ نسخه ۲۰۰۴ (build 19041) یا بالاتر (ویندوز ۱۱ به‌طور کامل پشتیبانی می‌شود)
  • ویندوز سرور ۲۰۲۲ یا بالاتر (ویندوز سرور ۲۰۱۹ پشتیبانی نمی‌شود)
  • معماری x64 یا ARM64
  • برای نصب‌کننده: دسترسی معمولی کاربر (نیازی به administrator نیست)
  • برای ساخت از سورس: Visual Studio 2022 یا جدیدتر با workload سی‌پلاس‌پلاس، Windows 10 SDK و Python 3

نحوه نصب و راه‌اندازی

ساده‌ترین روش استفاده از نسخه‌های ازپیش‌ساخته‌شده است که در صفحه Releases پروژه قرار دارند.

روش ۱: استفاده از نصب‌کننده (پیشنهادی برای اکثر کاربران)

  1. به صفحه Releases پروژه در GitHub بروید.
  2. فایل WindowsTerminal-RTL-Installer.exe را دانلود کنید.
  3. فایل را اجرا کنید. ویزارد نصب باز می‌شود.
  4. معماری سیستم خود را انتخاب کنید (x64 یا arm64).
  5. پوشه نصب را مشخص کنید و در صورت تمایل، میانبرهای منوی استارت و دسکتاپ را فعال کنید.
  6. نصب‌کننده فایل مناسب را دانلود، صحت‌سنجی (با sha256) و نصب می‌کند.

نصب‌کننده به‌صورت پیش‌فرض انگلیسی است، اما اگر زبان نمایش ویندوز فارسی باشد، به فارسی تغییر می‌کند. همچنین دکمه تغییر زبان در گوشه بالا وجود دارد. این نسخه در بخش «Apps & features» یا «Add or remove programs» ثبت می‌شود و به‌راحتی قابل حذف است. اجرای مجدد نصب‌کننده گزینه‌های Update، Repair و Uninstall را ارائه می‌دهد.

روش ۲: نسخه Portable (بدون نصب)

  1. فایل WindowsTerminal-RTL-x64.zip یا WindowsTerminal-RTL-arm64.zip را دانلود کنید.
  2. فایل را در هر پوشه‌ای که می‌خواهید استخراج کنید.
  3. فایل WindowsTerminal.exe را اجرا کنید.

این نسخه هیچ تغییری در سیستم ایجاد نمی‌کند و تنظیمات موجود ویندوز ترمینال را از مسیر زیر می‌خواند:

%LOCALAPPDATA%\Microsoft\Windows Terminal

اگر می‌خواهید میانبر منوی استارت داشته باشید، فایل install.ps1 داخل زیپ را با راست‌کلیک و انتخاب «Run with PowerShell» اجرا کنید. برای حذف نیز از دستور زیر استفاده کنید:

.\install.ps1 -Uninstall

روش ۳: نسخه تک‌فایلی Portable

فایل‌های WindowsTerminal-RTL-Portable-x64.exe یا نسخه arm64 را دانلود و اجرا کنید. در اولین اجرا، محتوا در مسیر زیر استخراج می‌شود و ترمینال باز می‌گردد:

%LOCALAPPDATA%\Programs\WindowsTerminal-RTL-Portable

اجراهای بعدی بسیار سریع هستند.

نحوه استفاده

پس از نصب یا اجرای نسخه portable، ویندوز ترمینال RTL دقیقاً مانند نسخه معمولی رفتار می‌کند، با این تفاوت که متن فارسی به‌درستی نمایش داده می‌شود.

  • پروفایل‌های موجود شما (PowerShell، CMD، WSL و غیره) بدون تغییر کار می‌کنند.
  • می‌توانید از همان تم‌ها، فونت‌ها و میانبرهای قبلی استفاده کنید.
  • متن فارسی در خروجی دستورات، لاگ‌ها، پیام‌های خطا و ابزارهای CLI به‌صورت صحیح و خوانا ظاهر می‌شود.
  • مکان‌نما در جای درست قرار می‌گیرد و می‌توانید متن فارسی را به‌راحتی ویرایش کنید.

نکات مهم

  • این پروژه نسخه Store ویندوز ترمینال را دستکاری نمی‌کند. دلیل آن محدودیت‌های امنیتی ویندوز (فایل‌سیستم wcifs) است که اجازه جایگزینی فایل‌های داخل WindowsApps را نمی‌دهد. بنابراین نسخه portable یا نصب‌کننده جداگانه بهترین و امن‌ترین راه است.
  • الگوریتم بیدی به‌طور کامل پیاده‌سازی نشده است. قانون L2 (بازچینی کلمات) و قوانین P2/P3 (تعیین جهت پاراگراف بر اساس اولین کاراکتر قوی) اعمال شده‌اند، اما mirroring پرانتزها و شکل‌دهی اعداد (L3/L4) هنوز اضافه نشده‌اند. بنابراین در متن‌های ترکیبی پیچیده مثل ABC سلام ۱۲۳ ممکن است جایگاه اعداد کمی نادرست باشد.
  • فونت‌های همراه پروژه (Cascadia) پشتیبانی خوبی از فارسی دارند، اما اگر فونت دلخواه دیگری می‌خواهید، آن را کنار فایل اجرایی قرار دهید.
  • همیشه از آخرین نسخه موجود در Releases استفاده کنید، چون پروژه به‌طور منظم به‌روزرسانی می‌شود.
  • اگر از ابزارهای هوش مصنوعی خط فرمان یا ویرایشگرهای تحت SSH استفاده می‌کنید، این پروژه تأثیر مثبتی روی تجربه کاربری شما خواهد داشت.

نتیجه‌گیری

مشکل نمایش متن فارسی و راست‌به‌چپ در ویندوز ترمینال سال‌هاست که کاربران را آزار می‌دهد و تاکنون راه‌حل رسمی پایداری از سوی مایکروسافت ارائه نشده است. پروژه Windows Terminal RTL با ارائه پچ دقیق در لایه رندرینگ و بیلدهای آماده، این مشکل را به‌طور عملی حل کرده است.

با نصب نسخه portable یا استفاده از نصب‌کننده، می‌توانید بدون دردسر و بدون نیاز به دسترسی administrator، از نمایش صحیح فارسی در ترمینال خود لذت ببرید. این پروژه نه‌تنها برای توسعه‌دهندگان، بلکه برای هر کسی که با خط فرمان و زبان‌های راست‌به‌چپ کار می‌کند، بسیار کاربردی است.

اگر شما هم از کاربران ویندوز ترمینال هستید و با مشکل نمایش فارسی روبه‌رو بوده‌اید، حتماً این پروژه را امتحان کنید. لینک مخزن و نسخه‌های آماده در GitHub در دسترس است و جامعه کاربری آن در حال رشد است. با استفاده از چنین پروژه‌هایی، تجربه کار با ابزارهای خط فرمان در محیط فارسی بسیار دلپذیرتر خواهد شد.

بیشتر بخوانید:

جایگزین متن‌باز برای همه نرم‌افزارهای معروف دنیا با پروژه Everything
جداسازی صدای خواننده از موزیک داخل مرورگر به صورت رایگان و آفلاین
ویرایش PDF با Stirling PDF: جایگزین متن‌باز و قدرتمند Adobe Acrobat

وحید خاکپور

متولد 76 . مبتدی در همه چیز. علاقه مند به یادگیری و به اشتراک گذاشتن تجربه های مفید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *