Port Linux Far Manager: kemajuan dalam 4 tahun

Publikasi pertama kode sumber far2l, port dari Far Manager untuk Linux - bagian yang dulunya dianggap tidak mungkin secara fundamental - berlangsung pada 10 Agustus 2016. Karena pengembang utama berbicara tentang transisi proyek ke status beta , saya memutuskan untuk menulis posting ulasan tentang bagaimana hal-hal yang terjadi di sana dan apa yang telah mereka capai selama empat tahun terakhir.



Versi konsol



Pertanyaan pertama yang ditanyakan semua orang di sini , dan di opennet , dan di pengetahuan - mengapa tidak di konsol? Awalnya far2l benar-benar hanya bekerja dalam mode grafis, melalui wxWidgets. Ini ternyata menjadi cara termudah untuk mendapatkan port yang berfungsi dengan cepat dengan semua kemudahan pengguna: papan klip X dan semua pintasan keyboard, dan dengan dukungan untuk acara tidak hanya KeyDown, tetapi juga KeyUp.



Sekarang batasan ini sudah berlalu: far2l terasa hebat di konsol . Selain itu, muncullah apa yang disebut ekstensi terminal far2l., jadi jika Anda menjalankan konsol far2l di dalam konsol grafis (misalnya, dengan pergi ke suatu tempat melalui ssh), mereka "terhubung" satu sama lain, dan far2l internal juga akan melihat papan klip (dengan izin pengguna, tentu saja) dan semua tombol pintas yang memungkinkan. Selain itu, bahkan perakitan dempul khusus dibuat , memungkinkan Anda menikmati semua fitur ini dari Windows.



Di sini, lihat, ini far2l di Terminal GNOME







Tapi dalam dempul







Huruf Rusia di .zip "dari Windows"



Percaya atau tidak, Windows, hingga setidaknya tujuh, membuat arsip .zip, merekam nama file dalam pengkodean OEM (DOS) di sana! Kompatibilitas itu menakutkan. Akibatnya, StackOverflow penuh dengan pertanyaan "bagaimana saya bisa membuka zip dengan benar menggunakan krakozyabrami".



Di far2l kami memperbaikinya. Dalam prosesnya, sebuah utilitas demo lahir , yang menunjukkan cara bekerja dengan benar dengan pengkodean dalam .zips sehingga tidak ada "krakozyabrs" (berguna bagi penulis pengarsip), serta tambalan untuk p7zip yang menggunakan algoritme serupa. P7zip-with-patch bahkan dikemas ke dalam .deb (ubuntu 20.04+, amd64), yang penginstalannya memperbaiki dukungan zip, misalnya, di Engrampa yang digunakan di MATE.







Merapikan dependensi



Awalnya, port membawa sekumpulan kode perpustakaan, dan begitu juga hadir di dunia Linux dalam paket sistem: pcre, minizip, detektor charset universal. Sekarang semua ini telah digantikan oleh penggunaan dependensi yang kompeten: pustaka sistem digunakan jika memungkinkan (pengecualian: 7z dan unrar, pustaka terbaru secara statis dikompilasi di sana untuk mendukung fitur format terbaru).



Dukungan manusia .tar.gz



Plugin multiarc yang digunakan far2l untuk mengakses arsip datang kepada kami dari dunia Windows dan tidak tahu bagaimana menganggap .tar.gz sebagai satu arsip. Dia melihat .gz dan di dalamnya .tar. Oleh karena itu, untuk mendapatkan daftar file, Anda harus melakukan dekompresi penuh. Pengalaman seperti itu. Selama sebulan terakhir, multiarc telah ditingkatkan secara signifikan dan masalah ini telah hilang.



Jendela konsol yang indah



Ada masalah dalam versi grafis dari far2l: simbol gambar batas ditunjukkan dengan garis putus-putus yang mengganggu.



gambar



Kami membutuhkan waktu lama untuk menemukan penyebabnya atau menemukan pengaturan rendering yang memperbaiki bug yang tidak ada habisnya ini, sampai saya melihat kode sumber dari terminal GNOME dan KDE. Dan di sana, ternyata, dahulu kala, simbol untuk bingkai gambar dirender bukan dari font, tetapi secara manual, sehingga garisnya jelas dan indah.



Hasilnya, kami melakukan hal yang sama di far2l, hanya sedikit lebih baik: menambahkan anti-aliasing. Jika tidak, di terminal KDE dan GNOME, baris yang paling kontras akan terlalu mengganggu di samping teks antialiased.



Dalam prosesnya, saya harus mencari tahu nuansa psiko-visual dari anti-aliasing, menangkap "piksel terlalu terang" yang tidak ada yang dilihat oleh mata dengan keras kepala. Detail .



gambar



Paket distribusi



Kami belum masuk ke dalam repositori banyak distribusi ( dan beberapa sudah sampai !). Tetapi untuk waktu yang lama ada paket dalam semua format utama . Bahkan ada skrip build untuk Amazon Linux! Dan, tentu saja, ada ppa untuk * buntu - cara paling nyaman untuk "meletakkan lampu depan" bagi kebanyakan pengguna.



Pewarna Segar



far2l bercabang dari cabang Far 2, jadi beberapa plugin di sana memerlukan pembaruan segera. Baru-baru ini, pembaruan semacam itu dilakukan: kami memperbarui kode unpacking 7z dan unrar, serta skema warna sintaks Colorer. Plugin porting lainnya tidak berisi bagian yang diperbarui secara rutin, tetapi "pewarnaan" lama dan arsip baru yang tidak dibuka adalah masalah nyata. Itu dia, dia pergi!







Batuan kotak bersih



Ini adalah pertanyaan kedua yang biasanya ditanyakan di kamenty: "dan netbooooooooooooooooooo?". Tidak, tidak akan ada netbox! Ada dempul di dalamnya, dan menyeret versi linux ke far2l sepertinya ide yang aneh. Dan kode netbox itu sendiri tidak terlalu cocok untuk porting.



Oleh karena itu, penulis port, elfmz yang luar biasa, membuat versi plugin jaringannya sendiri: NetRocks. Ada semua yang Anda butuhkan - ftp [s], dan scp, dan sftp, dan nfs, dan webdav, dan bahkan samba! Semuanya bekerja di pustaka Linux asli. Di sftp, Anda bahkan dapat menjalankan perintah jarak jauh dan pergi ke konsol jarak jauh.



NetRocks juga memiliki plugin file pseudo-jaringan yang memungkinkan Anda bekerja dengan sistem file lokal. Untuk apa? Karena NetRocks bagus dalam operasi latar belakang. Dan penyalinan file biasa Jauh - tidak bisa.







Bagaimana dengan plugin?



Selain NetRocks, kit ini mencakup:



colorer (penyorotan sintaks, segar!)

Multiarc (bekerja dengan arsip, dimodifikasi, pengarsip baru!)

Tmppanel (panel sementara)

blok penyelarasan (blok format untuk editor)

autowrap (

bungkus otomatis di editor) drawline (gambar baris di editor)

kasus edit (ubah kapitalisasi di editor)

SimpleIndent (bekerja dengan lekukan di editor)

bandingkan (versi lanjutan dari "bandingkan folder")

pelengkapan otomatis editor (pelengkapan otomatis di editor)

kasus file (ubah kapitalisasi nama file)

pencarian tambahan ("pencarian cepat" di editor)

di dalam (menunjukkan apa yang ada di dalam ELF dan beberapa format lain)

dan bahkan sebuah plugin untuk menulis plugin lain dengan Python!



Ada beberapa yang pihak ketiga, far2-gvfs dan far2l-fuse , tetapi setelah munculnya NetRocks, mereka agak kehilangan relevansinya.



Secara umum, satu set dasar untuk kenyamanan bekerja dengan file dan arsip lokal dan jarak jauh, serta menulis kode langsung di editor far2l tersedia :)



Bagaimana dengan stabilitas? Kapan rilisnya?



Dengan stabilitas, semuanya baik-baik saja: selama 4 tahun penggunaan dalam pekerjaan (webdev + kantor manapun) saya belum "menangkap" satu pun data yang hilang dengan far2l. Pembuat port siap untuk secara bertahap mengubah status dari alfa ke beta, jika kesalahan kritis tidak keluar dalam satu atau dua bulan. Kemudian orang mungkin berpikir tentang mengirimkan paket ke repositori distribusi, misalnya.



Bonus # 1. Apakah memang ada Anggur di bawah tenda?



Sebagian :) Beberapa terjemahan WinApi ke dalam API Linux asli ditarik dari Wine (konversi encoding, misalnya; ngomong-ngomong, mereka baru-baru ini mencoba menulis ulang bagian ini ke iconv, tetapi ternyata kode dari Wine melakukan hal yang sama 4 kali lebih cepat ). Seiring waktu, panggilan ke fungsi ini, yang tersebar di seluruh kode far2l, dapat diganti secara bertahap dengan panggilan langsung ke fungsi asli. Sementara itu, desain ini juga bekerja sangat cepat (yang paling lambat mereka coba jalankan -  raspberry pi , penerbangannya normal) dan cukup dapat diandalkan.



Bonus # 2. Berhenti menderita omong kosong, ajarkan konsol, bodoh!



Selama saya bekerja di far2l (penguji, dan kadang-kadang saya mengirim tambalan sederhana) saya belajar lebih banyak tentang konsol Linux daripada sepanjang hidup saya sebelumnya :) Dan saya juga secara bertahap menguasai C, di mana saya tidak perlu membuat kode sejak institut - tidak ada alasan (pada saat yang sama) , ngomong-ngomong, beralih ke "Anda" dengan git). Jadi tunggu sebentar lagi artikel "bagaimana web macaque si diajarkan di open source"!



Bonus # 3. Apakah ada wallpaper yang membosankan?



Beberapa tahun yang lalu, saya lebih suka menertawakan pertanyaan ini. Tapi ya, jika Anda terlihat biru sepanjang hari, itu menjadi tidak nyaman (dan Anda bisa langsung merasakan bagaimana janggut dan sweter dengan rusa tumbuh kembali). Oleh karena itu, pada akhirnya saya menjadikan diri saya sebuah pewarnaan dalam semangat Monokai, dan menaruhnya untuk semua orang , tentunya. Kami memiliki sumber terbuka.







Bonus # 4. Akankah itu lepas landas pada poppy?



Lepas landas. Setengah dari tiket ditulis ke pelacak bug dari bunga poppy. Dan ya, ini juga berfungsi di BSD.



All Articles