أدوات المستخدم

أدوات الموقع


arabic-support-on-linux-terminal

هذه نسخة قديمة من الصفحة!


تحسين دعم العربية في طرفية لينكس

هناك عددٌ من المشاكل الموجودة حاليًا في الطرفية (Terminal) على سطح مكتب لينكس. منها أبرز مشكلتين هما:

  1. الحروف تظهر متداخلة بحيث لا يمكن قراءة النص العربي بشكل جيد.
  2. اتجاه النص يكون من اليسار إلى اليمين (LTR) وليس من اليمين إلى اليسار (RTL)، وهو ما يخرّب عرض النص العربي.

يمكنك رؤية هذه المشاكل في الصورة التالية مثلًا:

لحسن الحظّ يمكنك حل كلتا المشكلتين، ونعمل نحن في فريق تقويم على جعل هذه الحلول دائمة وافتراضية على توزيعات لينكس ولكننا لم نصل إلى هناك بعد. وسنشرح في هذه الصفحة كيف يمكنك حلها من طرفك مؤقتًا إلى أن يكتمل الإصلاح الرسمي.

يمكنك إن شاء الله الحصول على الشكل التالي بعد تطبيق التعليمات في هذه الصفحة:

تغيير الخط الافتراضي للطرفيّة

من إعدادات طرفية جنوم، اختر استعمال خط مُخصص من نافذة الإعدادات كما بالصورة (اضغط على المربع الفارغ لتظهر علامة صحّ):

بعدها ابحث عن خط اسمه Monospace من القائمة، واختر الحجم 11 كما في الصورة واضغط “اختر”:

إذا جرّبت الكتابة الآن في الطرفية فستجد أن المشكلة الأولى قد حلّت بشكل كبير؛ حيث لم تعد الأحرف متداخلة ببعضها البعض وصار بإمكانك قراءة الكلمات والجمل العربية بأريحية. بالطبع هناك بعض المشاكل في الخطّ مثل مشكلة حرف لا (حيث يظهر مثل U) وسنعمل على حلّها من طرفنا لكن الوضع جيد للعيش معه حاليًا.

تفعيل التقاط الاتجاه التلقائي (Auto-detection) للنص في الطرفية

المشكلة الثانية التي تعاني منها الطرفية هي مشكلة الاتجاه. يجب أن تكون النصوص العربية تُعرض من اليمين إلى اليسار (RTL) وليس من اليسار إلى اليمين (LTR)، ولكن هذا لا يحصل افتراضيًا في الطرفية مما يؤدي إلى المشكلة التي رأيتها في الصورة الأولى في هذه الصفحة.

في البداية عليك أن تفهم أن الكثير من برامج الطرفية (Terminal) مثل GNOME Terminal وXfce4-Terminal وغيرها تستعمل مكتبة برمجية اسمها VTE هي المسؤولة عن عرض الطرفية. أي أن هذه البرامج في الواقع هي مجرد نوافذ وقوائم، بينما محتوى الطرفية الحقيقي (الشاشة السوداء التي تكتب فيها الأوامر) هي قادمة من مكتبة VTE. وبالتالي المسؤول عن عرض النصوص داخل الطرفية هو هذه المكتبة وليس برامج الطرفية.

وبالتالي أيضًا فإن إصلاح مشاكل اللغة العربية داخل الطرفية يكون في هذه المكتبة ولا يكون من التطبيق نفسها.

لحسن الحظ وبعد بحثٍ وتنقيب اكتشفنا أن مكتبة VTE تدعم اتجاه RTL منذ 2019م، لكنه غير مفعّل افتراضيًا بسبب عدم وجود الاختبارات الكافية لجودة هذا الدعم بالإضافة لبعض المشاكل الصغيرة، ونعمل على حلها في فريق تقويم لجعل هذا الخيار افتراضيًا لمستخدمي لينكس العرب ولكن الأمر لم يكتمل بعد. ومع ذلك فيمكنك أنت أن تفعّل هذا الخيار على نظامك بحيث تعرض لك النصوص باتجاه RTL.

الالتقاط التلقائي لاتجاه النص (Text direction auto-detection) هي ميزة تسمح بعرض النصوص في الطرفية إما باتجاه RTL أو LTR على حسب النص نفسه؛ إذا كان النص مكتوبًا بالإنجليزية أو أي لغة أخرى تُكتب من اليسار إلى اليمين فسيُعرض كـLTR، وإذا كان النص مكتوبًا بالعربية وبقية اللغات التي تُكتب من اليمين فسيُعرض النص كـRTL. تستعمل هذه الميزة أول حرف من كل سطر من النص لتحديد اللغة وبالتالي تحديد الاتجاه الواجب استخدامه.

اكتب الأمر التالي في الطرفية لتفعيل الميّزة:

printf "\e[?2501h"

وستلاحظ أن الطرفية صارت تدعم عرض النصوص العربية من اليمين إلى اليسار الآن (بعد إغلاق الطرفية وفتحها من جديد):

يمكنك إضافة الأمر المذكور إلى نهاية ملف .bashrc (ملف مخفي في مجلد المنزل الخاص بك، يُنفّذ عند كل مرة تُفتح الطرفية فيها تلقائيًا)، مما يؤدي إلى تطبيق هذا الأمر تلقائيًا في كل طرفية تفتحها دون الحاجة لتكتب الأمر أنت بنفسك كل مرّة. فقط من سطر الأوامر حرر الملف:

nano ~/.bashrc

وانزل إلى نهاية الملف واكتب الأمر السابق، ثم اخرج عبر الضغط على Ctrl + X، أو إن شئت فيمكنك تحرير الملف بأي طريقة تريدها.

فرض اتجاه RTL في طرفية لينكس


جميع هذه الأوامر تتطلب إغلاق برنامج الطرفية وإعادة تشغيلها من جديد لتأخذ التغييرات عملها مالم تضع الأوامر المذكورة في نهاية ملف .bashrc.

هناك ميزة أخرى في طرفية VTE أكثر تطرفًا وهي إجبار جميع النصوص - بغض النظر عن كونها أجنبية أو عربية - على أن تكون من اليمين إلى اليسار. هذا الخيار ليس جيدًا ليكون هو الخيار الافتراضي لطرفية لينكس لأن معظم الأوامر والنصوص المعروضة في الطرفية تكون باللغات الأجنبية، وبالتالي لن تُعرض بشكل جيد إن أُجبرت على أن تكون باتجاه RTL، لكنه قد يكون خيارًا جيدًا إن كنت تريد تطوير تطبيقات سطر أوامر عربية 100%. حينها يمكنك أنت التحكّم بجميع النصوص ولا يهمّك المستخدمون الأجانب فالبرنامج عربي وموجّه للعرب، وبالتالي يمكنك إجبار عرض النصوص كـRTL في تطبيقك.

لفعل ذلك، أضف السطر التالي إلى نهاية ملف .bashrc الخاص بك:

printf "\e[2 k"

وستجد بعدها أن جميع النصوص صارت مجبورة على العرض كـRTL، مما قد يظهر لك بعض العلل المُضحكة في الطرفية:

تابع المثال التالي لرؤية كيفية تطوير تطبيق سطر أوامر عربي 100% باتجاه RTL.

مثال برمجي على تطبيق طرفية عربي على لينكس

arabic-support-on-linux-terminal.1674465592.txt.gz · آخر تعديل: 2023/12/20 17:08 (تحرير خارجي)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki