A smart RTL (Right-to-Left) patcher for the ChatGPT desktop app with Codex, as well as legacy standalone Codex installations. It brings polished support for Persian (Farsi), Arabic, Hebrew, and other RTL languages.
Codex Smart RTL injects an RTL engine into the app, fixes mixed-direction typing issues, and adds a small settings panel for fonts, line height, and layout preferences.
- Smart Auto-Direction: Automatically detects if a paragraph is RTL or LTR and aligns it perfectly.
- Force RTL Mode: Want everything aligned to the right? Just toggle the switch.
- Custom Typography: Define different fonts for RTL text, English text, and code blocks.
- Line Height Control: A precise slider to adjust the line height for better readability.
- Persian Keyboard Fix: Maps
Shift + 2to type@instead of٬on Persian keyboards. - Beautiful Settings Panel: A floating, non-intrusive UI widget at the bottom right corner.
- Vazirmatn Built-in: Comes with the beautiful Vazirmatn variable font by default.
- Theme Compatibility: Seamlessly adapts colors based on Codex's active theme, using native color variables.
You don't need to download any files manually. Install Node.js first, then run the command for your operating system.
The patcher automatically prefers the current /Applications/ChatGPT.app Codex bundle and falls back to a legacy Codex.app. ChatGPT Classic.app is not a patch target because it does not use an Electron app.asar archive.
Before running the patcher, make sure Node.js is installed. You can install it from the official website, or if you already use Homebrew:
brew install nodeSimply run:
npx codex-rtlQuit ChatGPT/Codex before running the command. To patch a non-standard installation explicitly:
npx codex-rtl --asar "/full/path/to/app.asar"First time? If you get a "Permission Denied" error, the tool will automatically open the App Management settings page for you. Just enable the toggle for your terminal app, then run the command again. No
sudoneeded!You can also grant permission manually:
System Settings > Privacy & Security > App Management.
sudo apt install nodejs npm # Skip this line if Node.js is already installed.
sudo npx codex-rtlOpen PowerShell as Administrator (Right-click -> Run as Administrator), then run:
winget install OpenJS.NodeJS.LTS # Skip this line if Node.js is already installed.
npx codex-rtlWarning
App Updates: Since updating ChatGPT/Codex overwrites its internal files, the RTL patch will be removed. You will need to run the installation command again after each update to re-apply the patch.
If you ever want to revert ChatGPT/Codex back to its original state (before the patch), quit the app and run the command with the --restore flag:
npx codex-rtl --restore(On Linux, run with sudo. On Windows, run in an Administrator terminal)
This CLI tool:
- Locates the current ChatGPT/Codex or legacy Codex installation.
- Stores a versioned backup outside the signed application bundle in
~/.codex-rtl/backups/. - Reads the real Electron entry point from
package.jsoninstead of assuming a fixed bootstrap filename. - Preserves native
app.asar.unpackedmetadata while injecting the Smart RTL Engine. - On macOS, updates
ElectronAsarIntegrityto match the repacked archive header. - On macOS, preserves the official bundle files needed for restore, re-signs only the outer app bundle ad-hoc, and verifies the complete bundle. An already broken or ad-hoc app must be reinstalled before patching.
The injected browser payload is assembled from source modules, so edits go in src/, not the generated bin/payload.js:
src/rtl-core.cjs— pure, DOM-free detection engine (script ranges, LaTeX/arithmetic isolation, table direction). Unit-tested.src/rtl-payload.js— the DOM layer (observer, per-element direction, math islands, conversation scoping).src/rtl-widget.js— the floating settings panel.tools/build-payload.mjs— assembles the above intobin/payload.js.
npm run build # regenerate bin/payload.js from src/
npm test # rebuild, then run unit + jsdom payload smoke testsnpm test runs the pure-logic unit tests and a jsdom smoke test that executes the fully assembled payload against a mock DOM — this catches assembly/scope/substitution regressions that unit tests alone cannot. Please keep it green when adding enhancements.
Feel free to open issues or submit pull requests. Let's make Codex accessible and beautiful for everyone!
یک پچر هوشمند راستبهچپ (RTL) برای اپ جدید ChatGPT که Codex در آن ادغام شده است، و نسخههای مستقل قدیمی Codex؛ با پشتیبانی از فارسی، عربی، عبری و دیگر زبانهای RTL.
Codex Smart RTL یک موتور RTL را به برنامه تزریق میکند، مشکل تایپ و نمایش متنهای ترکیبی راستبهچپ/چپبهراست را بهتر مدیریت میکند، و یک پنل کوچک برای تنظیم فونت، فاصلهٔ خطوط و چیدمان در اختیار شما میگذارد.
- راستچین هوشمند (Smart Auto-Direction): سیستم به طور خودکار تشخیص میدهد که پاراگراف شما با حرف انگلیسی شروع شده یا فارسی، و چیدمان را بر همان اساس تنظیم میکند.
- حالت راستچینِ اجباری (Force RTL Mode): دوست دارید همه چیز (حتی پیامهای انگلیسی) کاملاً در سمت راست قرار بگیرند؟ فقط کافیست سوئیچ را روشن کنید!
- تنظیماتِ پیشرفتهٔ فونت: میتوانید برای متون فارسی، متون انگلیسی و کدهای برنامهنویسیِ داخل چت، فونتهای جداگانه تعریف کنید.
- کنترل فاصلهٔ خطوط (Line Height): با استفاده از اسلایدر میتوانید فاصلهٔ خطوط را برای خوانایی بهتر متن تنظیم کنید.
- حل مشکل کیبورد فارسی: این ابزار کلید ترکیبی
Shift + 2روی کیبورد فارسی را اصلاح میکند تا به جای «٬» علامت@تایپ شود. - پنل تنظیمات زیبا: تمام این تنظیمات در یک ویجتِ کوچک، مدرن و شناور در پایینِ صفحه قرار گرفتهاند.
- فونت وزیرمتن: فونت زیبای Vazirmatn Variable به صورت پیشفرض در این افزونه گنجانده شده است.
- همگامسازی خودکار با تم (Theme Compatibility): هماهنگی و تغییر پویای رنگ سوییچهای پنل با تغییر تم رنگی Codex به صورت کاملاً بومی.
نیازی نیست فایلهای پروژه را دستی دانلود کنید. ابتدا Node.js را نصب کنید، سپس دستور مربوط به سیستمعامل خود را اجرا کنید.
پچر ابتدا ChatGPT.app جدید را پیدا میکند و سپس به Codex.app قدیمی fallback میکند. ChatGPT Classic.app هدف پچ نیست، چون فایل Electron app.asar ندارد.
قبل از اجرای پچر، مطمئن شوید Node.js روی سیستم شما نصب است. میتوانید آن را از سایت رسمی Node.js نصب کنید، یا اگر از Homebrew استفاده میکنید:
brew install nodeکافیست دستور زیر را اجرا کنید:
npx codex-rtlپیش از اجرا، ChatGPT/Codex را کاملاً ببندید. برای مسیر غیرمعمول:
npx codex-rtl --asar "/full/path/to/app.asar"اولین بار؟ اگر خطای Permission Denied دریافت کردید، ابزار به صورت خودکار صفحهٔ تنظیمات App Management را برای شما باز میکند. فقط سوئیچ ترمینال خود (مثلاً Terminal، iTerm2 یا VS Code) را فعال کنید و دوباره دستور را اجرا کنید. نیازی به
sudoنیست!همچنین میتوانید به صورت دستی به مسیر
System Settings > Privacy & Security > App Managementبروید.
sudo apt install nodejs npm # اگر Node.js از قبل نصب است، این خط را رد کنید.
sudo npx codex-rtlبرنامهٔ PowerShell را در حالت Administrator (راستکلیک -> Run as Administrator) باز کنید و دستور زیر را بنویسید:
winget install OpenJS.NodeJS.LTS # اگر Node.js از قبل نصب است، این خط را رد کنید.
npx codex-rtl[!WARNING] بهروزرسانی برنامه: آپدیت ChatGPT/Codex فایلهای داخلی را بازنویسی میکند؛ بنابراین پس از هر آپدیت، دستور نصب را مجدداً اجرا کنید.
اگر زمانی خواستید ChatGPT/Codex را به حالتِ اولیه برگردانید، اپ را ببندید و دستور زیر را اجرا کنید:
npx codex-rtl --restore(در لینوکس با sudo اجرا کنید. کاربران ویندوز این دستور را در یک ترمینال ادمین اجرا کنند)
- محل نصب ChatGPT/Codex را پیدا میکند.
- backup نسخهبندیشده را بیرون از bundle اپ در
~/.codex-rtl/backups/نگه میدارد. - entry point واقعی Electron را از
package.jsonمیخواند. - هنگام repack، metadata ماژولهای native را حفظ میکند.
- در macOS، مقدار
ElectronAsarIntegrityرا با hash آرشیو جدید هماهنگ میکند. - در macOS، فایلهای لازم برای restore امضای رسمی را نگه میدارد، فقط bundle بیرونی را بهصورت ad-hoc امضا و کل bundle را verify میکند. اپی که از قبل امضای خراب یا ad-hoc دارد باید پیش از patch دوباره نصب شود.
با کمال میل از نظرات، گزارشِ باگها و Pull Request های شما استقبال میشود.
مُصحِّح ذكي لدعم الكتابة من اليمين إلى اليسار (RTL) لتطبيق ChatGPT لسطح المكتب المدمج مع Codex، وكذلك نسخ Codex المستقلة القديمة؛ يجلب دعمًا متقنًا للعربية والفارسية والعبرية وغيرها من اللغات التي تُكتب من اليمين إلى اليسار.
يقوم Codex Smart RTL بحقن محرك RTL داخل التطبيق، ويعالج مشكلات الكتابة المختلطة الاتجاه، ويُصحِّح أزرار التحكم الأصلية بالنافذة على أنظمة RTL، ويضيف لوحة إعدادات صغيرة للخطوط وارتفاع السطر والتخطيط.
- الاتجاه التلقائي الذكي: يكتشف تلقائيًا ما إذا كانت الفقرة عربية/RTL أو إنجليزية/LTR ويضبط محاذاتها بدقة — حتى أثناء وصول الرد المتدفق.
- بقاء المعادلات والشيفرة قابلة للقراءة: تُعزل العمليات الحسابية المجردة (
2 + 3 = 5) ومعادلات LaTeX ($x^2$) من اليسار إلى اليمين داخل النص العربي بدلًا من انعكاسها، وتبقى كتل الشيفرة دائمًا LTR. - جداول من اليمين إلى اليسار: تُقلَب الجداول العربية/العبرية لتُقرأ من اليمين إلى اليسار مع احتفاظ كل خلية باتجاهها.
- إصلاح أزرار النافذة: على نظام ويندوز بلغة عربية/RTL، تنعكس أزرار شريط العنوان (تصغير/تكبير/إغلاق) وشريط القوائم إلى الجهة الخاطئة؛ تُعيد الأداة إطار النافذة إلى LTR دون التأثير على اتجاه نص المحادثة.
- الحصر داخل المحادثة: يُطبَّق الاتجاه RTL داخل المحادثة فقط، بينما يبقى الشريط الجانبي والقوائم وأشرطة الأدوات باتجاه LTR الأصلي للتطبيق.
- وضع RTL الإجباري: تريد محاذاة كل شيء إلى اليمين؟ فعِّل المفتاح فقط.
- خطوط مخصّصة: حدِّد خطوطًا مختلفة للنص العربي، والنص الإنجليزي، وكتل الشيفرة.
- التحكم في ارتفاع السطر: شريط تمرير دقيق لضبط ارتفاع السطر.
- إصلاح لوحة المفاتيح الفارسية: يحوّل
Shift + 2ليكتب@بدلًا من٬. - لوحة إعدادات أنيقة: عنصر واجهة عائم في الزاوية السفلية اليمنى.
- خط Vazirmatn مضمَّن، وتوافق مع سمة التطبيق.
لا حاجة لتنزيل أي ملفات يدويًا. ثبِّت Node.js أولًا، ثم شغِّل الأمر الخاص بنظام تشغيلك.
تُفضِّل الأداة تلقائيًا حزمة /Applications/ChatGPT.app الحالية وتعود إلى Codex.app القديمة. أما ChatGPT Classic.app فليست هدفًا للتصحيح لأنها لا تستخدم أرشيف Electron app.asar.
brew install node # إن لم يكن Node.js مثبَّتًا
npx codex-rtlأغلق ChatGPT/Codex قبل تشغيل الأمر. ولتصحيح مسار غير قياسي صراحةً:
npx codex-rtl --asar "/full/path/to/app.asar"إذا ظهر خطأ "Permission Denied"، ستفتح الأداة صفحة App Management تلقائيًا؛ فعِّل مفتاح الطرفية ثم أعد المحاولة. لا حاجة إلى
sudo.
sudo apt install nodejs npm # تجاوزه إن كان مثبَّتًا
sudo npx codex-rtlافتح PowerShell بصلاحيات المسؤول، ثم شغِّل:
winget install OpenJS.NodeJS.LTS # تجاوزه إن كان مثبَّتًا
npx codex-rtl[!WARNING] تحديثات التطبيق: يُعيد تحديث ChatGPT/Codex كتابة ملفاته الداخلية فيُزال التصحيح؛ أعد تشغيل الأمر بعد كل تحديث.
أغلق التطبيق ثم شغِّل الأمر مع الراية --restore:
npx codex-rtl --restore(على لينكس شغِّله مع sudo، وعلى ويندوز في طرفية بصلاحيات المسؤول)
- تحدِّد مكان تثبيت ChatGPT/Codex أو Codex القديم.
- تحفظ نسخة احتياطية مُؤرَّخة خارج حزمة التطبيق المُوقَّعة في
~/.codex-rtl/backups/. - تقرأ نقطة دخول Electron الحقيقية من
package.jsonبدل افتراض اسم ملف ثابت. - تحافظ على بيانات
app.asar.unpackedالأصلية أثناء حقن محرك RTL. - على macOS، تُحدِّث
ElectronAsarIntegrityليطابق ترويسة الأرشيف المُعاد تحزيمه. - على macOS، تحفظ ملفات الحزمة الرسمية اللازمة للاستعادة، وتوقِّع الحزمة الخارجية فقط توقيعًا ذاتيًا (ad-hoc)، ثم تتحقّق من الحزمة كاملةً.
نرحّب بالمشكلات (Issues) وطلبات الدمج (Pull Requests). لنجعل Codex متاحًا وجميلًا للجميع!
