تطوير أدوات التصفح داخل «الترمينال»: كيف تتحول النصوص إلى واجهات تفاعلية؟
من less إلى lore.. رحلة بناء مكونات العرض البرمجية وتحديات اليونيكود

تعتمد بيئة «الترمينال» (Terminal) في جوهرها على شبكة من الصفوف والأعمدة والخطوط أحادية المسافة (Monospace)، حيث يتم عرض النصوص والتحكم فيها برمجياً. وفي حين تكتفي الأوامر البسيطة مثل cat بعرض المحتوى مباشرة، تبرز الحاجة إلى أدوات أكثر تعقيداً عند التعامل مع نصوص طويلة تتجاوز سعة الشاشة، وهو ما يعرف ببرامج «البيجر» (Pager).
تستخدم أنظمة التشغيل متغير البيئة PAGER لتحديد البرنامج المسؤول عن عرض النصوص الطويلة. البرنامج الأكثر شيوعاً هو less، لكن هناك بدائل أخرى مثل bat وdelta وmost. وتعمل هذه البرامج عبر استقبال البيانات من خلال الأنابيب (Pipes)؛ فإذا كان المخرج موجهاً إلى جلسة تفاعلية (TTY)، يقوم البرنامج بفتح «البيجر» تلقائياً لعرض المحتوى، أما في الحالات غير التفاعلية فيتم تجاهله.
التطور في هذا المجال انتقل من مجرد عرض النصوص إلى بناء واجهات مستخدم رسومية داخل الترمينال (TUIs). هذه الواجهات تختلف عن المواقع الإلكترونية أو تطبيقات سطح المكتب في كونها تعتمد على «خلية الشبكة» كأصغر وحدة بناء بدلاً من «البكسل». هذا القيد التقني يفرض على المطورين التركيز على المعلومات الجوهرية فقط، مع الاعتماد الكامل على لوحة المفاتيح للتنقل.
أحد المكونات البرمجية الحديثة في هذا السياق هو الـ Viewport، وهو محرك عرض مكتوب بلغة Go، يتيح بناء نوافذ نصية قابلة للتغيير الحجم والبحث والتمرير. تم دمج هذا المكون في أدوات مثل kl المخصصة لإدارة سجلات «كوبيرنيتيس» (Kubernetes)، حيث توفر الواجهة تقسيمات لعرض الحاويات والسجلات بشكل متزامن، مع دعم ميزات مثل البحث عبر Regex وتحسين مظهر نصوص JSON.
تحدي كبير يواجه مطوري هذه الأدوات يتمثل في معالجة «اليونيكود» (Unicode). ففي بيئة الترمينال، لا تشغل كل الرموز مساحة متساوية؛ فبينما تشغل الحروف اللاتينية خلية واحدة، تحتاج الرموز التعبيرية (Emojis) وبعض الحروف الآسيوية إلى خليتين، وهناك رموز أخرى لا تشغل أي مساحة (Zero-width). يتطلب ذلك من المكون البرمجي حساب عرض الخلايا بدقة (Terminal Cell Width) لضمان عدم تداخل النصوص عند التمرير الأفقي أو البحث.
إلى جانب الأدوات المتخصصة، ظهرت بدائل لبرامج التصفح التقليدية مثل lore، وهو «بيجر» يعتمد على إطار عمل Bubble Tea، ويوفر تجربة تصفح أكثر حداثة من less التقليدي. يمكن للمستخدمين تعيين هذه الأدوات كخيار افتراضي في ملفات الإعداد (مثل .zshrc) لتغيير الطريقة التي تظهر بها نتائج الأوامر البرمجية والبحث داخل السجلات اليومية.









