منفذ Linux الخاص بـ Far Manager: تقدم في 4 سنوات

أول إصدار للكود المصدري لـ far2l ، منفذ Far Manager لنظام Linux - قطعة كانت تعتبر مستحيلة في الأساس - في 10 أغسطس 2016. نظرًا لأن المطور الرئيسي يتحدث عن انتقال المشروع إلى الحالة التجريبية ، فقد قررت كتابة منشور مراجعة حول كيفية سير الأمور هناك وما حققوه خلال السنوات الأربع الماضية.



إصدار وحدة التحكم



السؤال الأول الذي طرحه الجميع هنا ، على الشبكة المفتوحة ، وعلى العلم - لماذا لا يكون في وحدة التحكم؟ في الأصل ، عملت far2l حقًا فقط في الوضع الرسومي ، عبر wxWidgets. تبين أن هذا هو أسهل طريقة للحصول بسرعة على منفذ عمل مع جميع وسائل الراحة للمستخدم: حافظة X وجميع اختصارات لوحة المفاتيح ، ومع دعم الأحداث ليس فقط KeyDown ، ولكن أيضًا KeyUp.



هذا القيد أصبح الآن شيئًا من الماضي: far2l يشعر بالارتياح في وحدة التحكم . علاوة على ذلك ، ظهرت هناك ما يسمى بامتدادات محطة far2l.، لذلك إذا قمت بتشغيل وحدة التحكم far2l داخل الوحدة الرسومية (على سبيل المثال ، بالانتقال إلى مكان ما عبر ssh) ، فإنهم "يتصلون" ببعضهم البعض ، وسيرى far2l الداخلي أيضًا الحافظة (بإذن من المستخدم ، بالطبع) وجميع مفاتيح الاختصار الممكنة. علاوة على ذلك ، تم عمل مجموعة خاصة من المعجون ، مما يتيح لك الاستمتاع بكل هذه الميزات من Windows.



هنا ، انظر ، هذا far2l في محطة جنوم







لكن في المعجون







الأحرف الروسية بتنسيق zip. "من Windows"



صدق أو لا تصدق ، أنشأ Windows ، ما يصل إلى سبعة على الأقل ، أرشيفات مضغوطة ، وتسجيل أسماء الملفات في ترميز OEM (DOS) هناك! التوافق مخيف. ونتيجة لذلك ، فإن StackOverflow مليء بالأسئلة "كيف يمكنني فك ضغط ملف zip باستخدام krakozyabrami بشكل صحيح".



في far2l أصلحناه. في هذه العملية ، ولدت الأداة المساعدة التجريبية ، والتي توضح كيفية العمل بشكل صحيح مع الترميزات في ملفات مضغوطة بحيث لا توجد "krakozyabrs" (مفيدة لمؤلفي الأرشيف) ، بالإضافة إلى تصحيح p7zip الذي يستخدم خوارزمية مماثلة. يتم تعبئة p7zip-with-patch في ملف .deb (ubuntu 20.04+، amd64) ، حيث يعمل التثبيت على إصلاح دعم zip ، على سبيل المثال ، في Engrampa المستخدم في MATE.







ترتيب التبعيات



في البداية ، كان المنفذ يحمل مجموعة من رموز المكتبة ، وبالتالي فهو موجود في عالم Linux في حزم النظام: pcre و minizip و Universal charset detector. الآن تم استبدال كل هذا بالاستخدام الكفء للتبعيات: يتم استخدام مكتبات النظام حيثما كان ذلك ممكنًا (باستثناء: 7z و unrar ، يتم تجميع أحدث المكتبات بشكل ثابت لدعم أحدث ميزات التنسيقات).



الدعم البشري .tar.gz



المكوّن الإضافي multiarc الذي يستخدمه far2l للوصول إلى الأرشيفات جاء إلينا من عالم Windows ، ولم يعرف كيف نتعامل مع .tar.gz كأرشيف واحد. رأى .gz وداخله .tar. لذلك ، للحصول على قائمة الملفات ، كان عليك القيام بفك ضغط كامل. مثل هذه التجربة. خلال الشهر الماضي ، تم تحسين Multiarc بشكل كبير واختفت هذه المشكلة.



نافذة وحدة التحكم الجميلة



حدثت مشكلة في النسخة الرسومية من far2l: تم عرض رموز رسم الحدود بخط منقط مزعج.



صورة



لقد استغرق الأمر منا وقتًا طويلاً للعثور على السبب أو العثور على إعدادات العرض التي تعمل على إصلاح هذا الخطأ الذي لا نهاية له ، حتى نظرت في الكود المصدري لمحطتي GNOME و KDE. وهناك ، اتضح ، منذ وقت طويل ، أن رموز إطارات الرسم لا يتم تقديمها من الخط ، ولكن يدويًا ، بحيث تكون الخطوط واضحة وجميلة.



نتيجة لذلك ، فعلنا الشيء نفسه في far2l ، ولكن أفضل قليلاً: إضافة مانع التعرج. خلاف ذلك ، في طرفي KDE و GNOME ، فإن الأسطر الأكثر تباينًا تشتت انتباهها عن نفسها بجوار النص المضاد للتحيز.



في هذه العملية ، كان عليّ أن أفهم الفروق الدقيقة النفسية والبصرية لمقاومة التعرج ، والتقاط "وحدات البكسل الساطعة جدًا" غير الموجودة والتي تراها العيون بعناد. التفاصيل .



صورة



حزم التوزيع



لم ندخل بعد إلى مستودعات العديد من التوزيعات ( وبعضها وصل بالفعل إلى هناك !). ولكن لفترة طويلة كانت هناك حزم بجميع التنسيقات الرئيسية . يوجد أيضًا نص برمجي للبناء لـ Amazon Linux! وبالطبع ، هناك PPA لـ * buntu - الطريقة الأكثر ملاءمة لـ "مجرد إضاءة" لمعظم المستخدمين.



تلوين طازج



far2l متشعب من فرع Far 2 ، لذلك تطلبت بعض المكونات الإضافية تحديثات عاجلة. في الآونة الأخيرة ، تم إجراء مثل هذا التحديث: قمنا بتحديث كود التفريغ 7z و unrar ، بالإضافة إلى نظام الألوان الخاص ببنية Colorer. لا تحتوي بقية المكونات الإضافية المنقولة على أي قطع يتم تحديثها بانتظام ، ولكن "التلوين" القديم والمحفوظات الجديدة التي لم تفتح كانت مشكلة حقيقية. هذا كل شيء ، لقد ذهبت!







صافي مربع الصخور



كان هذا هو السؤال الثاني الذي يُطرح عادة في kamenty: "and netboooooooooooooooooooooooo". لا ، لن يكون هناك netbox! يوجد معجون بالداخل ، وقد بدا سحب نسخته من linux إلى far2l فكرة غريبة. ولم يكن رمز netbox نفسه مناسبًا جدًا للتنقل.



لذلك ، صنع مؤلف المنفذ ، elfmz الممتاز ، نسخته الخاصة من المكون الإضافي للشبكة: NetRocks. هناك كل ما قد تحتاجه - ftp [s] و scp و sftp و nfs و webdav وحتى samba! كل شيء يعمل على مكتبات Linux الأصلية. في sftp ، يمكنك حتى تشغيل الأوامر عن بُعد والانتقال إلى وحدة التحكم عن بُعد.



يحتوي NetRocks أيضًا على مكون إضافي لملفات الشبكة الزائفة يتيح لك العمل مع نظام الملفات المحلي. لاجل ماذا؟ لأن NetRocks جيد في العمليات الخلفية. والنسخ المعتاد للملفات الآن - لا يمكن.







ماذا عن الإضافات؟



بالإضافة إلى NetRocks ، تحتوي المجموعة على:



أداة تلوين (تمييز بناء الجملة ، جديد!)

Multiarc (تعمل مع أرشيفات ، معدلة ، أرشفة جديدة!)

Tmppanel (لوحة مؤقتة)

كتلة محاذاة (كتل تنسيق للمحرر) التفاف

تلقائي (

التفاف تلقائي في المحرر) خط رسم (رسم أسطر في المحرر)

حالة التحرير (تحويل الحالة في المحرر)

SimpleIndent (العمل مع المسافة البادئة في المحرر)

قارن (الإصدار المتقدم من "مقارنة المجلدات")

الإكمال التلقائي للمحرر (الإكمال التلقائي في المحرر)

حالة الملف (تحويل حالة أسماء الملفات)

البحث المتزايد ("البحث السريع" في محرر)

بالداخل (يعرض ما بداخل ELF وبعض التنسيقات الأخرى)

وحتى مكون إضافي لكتابة ملحقات أخرى في Python!



هناك نوعان من الجهات الخارجية ، far2-gvfs و far2l-fuse ، ولكن بعد ظهور NetRocks ، فقدوا أهميتهم إلى حد ما.



بشكل عام ، تتوفر مجموعة أساسية للعمل المريح مع الملفات والمحفوظات المحلية والبعيدة ، بالإضافة إلى كتابة التعليمات البرمجية مباشرة في محرر far2l :)



ماذا عن الاستقرار؟ متى الإصدار بالفعل؟



مع الاستقرار ، كل شيء على ما يرام: لمدة 4 سنوات من الاستخدام في العمل (webdev + أي مكتب) لم "ألاحظ" فقدان بيانات واحد مع far2l. مؤلف المنفذ جاهز لتغيير الحالة تدريجيًا من ألفا إلى بيتا ، إذا لم تظهر الأخطاء الجسيمة في غضون شهر أو شهرين. ثم قد يفكر المرء في إرسال الحزم إلى مستودع التوزيع ، على سبيل المثال.



المكافأة # 1. هل يوجد بالفعل نبيذ تحت الغطاء؟



جزئيًا :) تم سحب بعض أجزاء ترجمة WinApi إلى واجهة برمجة تطبيقات Linux الأصلية من Wine (تحويل الترميز ، على سبيل المثال ؛ بالمناسبة ، حاولوا مؤخرًا إعادة كتابة هذه القطعة إلى iconv ، ولكن اتضح أن الكود من Wine يفعل نفس الشيء 4 مرات أسرع ). بمرور الوقت ، يمكن استبدال استدعاءات هذه الوظائف المنتشرة في جميع أنحاء كود far2l تدريجيًا باستدعاءات مباشرة للوظائف الأصلية. في غضون ذلك ، يعمل هذا التصميم أيضًا بسرعة كبيرة (أبطأ شيء حاولوا تشغيله -  raspberry pi ، الرحلة طبيعية) وموثوق تمامًا.



المكافأة # 2. توقفوا عن المعاناة من الهراء ، علموا وحدة التحكم ، أيها الحمقى!



أثناء عملي على far2l (مختبِر ، وأحيانًا أرسل تصحيحات بسيطة) تعلمت المزيد عن وحدة تحكم Linux أكثر مما كنت عليه في حياتي كلها من قبل :) وأنا أيضًا أتقن لغة C تدريجيًا ، والتي لم أضطر إلى البرمجة فيها منذ المعهد - لم يكن هناك سبب (في نفس الوقت ، بالمناسبة ، تحولت إلى "أنت" باستخدام git). لذا انتظر قريبًا للحصول على مقال "كيف تدرس مكاك الويب على الويب في المصدر المفتوح"!



المكافأة # 3. هل هناك أي خلفيات مملة؟



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







المكافأة # 4. هل تقلع على الخشخاش؟



اخلع. تتم كتابة نصف التذاكر إلى bugtracker من الخشخاش. ونعم ، إنه يعمل على BSD أيضًا.



All Articles