Far Manager的Linux端口:4年的进度

far2l源代码的首次发布是Linux的Far Manager移植版-曾经被认为根本上是不可能的-发行于2016年8月10日。由于主要开发人员正在谈论该项目向Beta状态的过渡,因此我决定撰写一篇评论文章,介绍过去四年来的发展情况以及取得的成就。



控制台版本



每个人都在这里,在opennet上和在其他知识提出的第一个问题-为什么不在控制台中?最初,far2l实际上仅通过wxWidgets在图形模式下工作。事实证明,这是快速获得所有用户方便的工作端口的最简单方法:X剪贴板和所有键盘快捷键,并且不仅支持KeyDown,而且还支持KeyUp事件。



现在,此限制已成为过去:far2l在控制台中感觉很棒。此外,在那里出现了所谓的far2l终端扩展。,因此,如果您在图形界面中运行控制台far2l(例如,通过ssh到某个地方),它们会彼此“连接”,并且内部far2l也将看到剪贴板(当然,在用户的允许下)和所有可能的热键。此外,甚至还制作特殊的腻子组件,使您可以从Windows中享受所有这些技巧。



在这里,这是GNOME Terminal中的far2l







但是腻子







.zip中的俄语字母“来自Windows”



信不信由你,Windows(最多七个)创建了.zip存档,并在其中以OEM(DOS)编码写入了文件名!兼容性令人恐惧。结果,StackOverflow充满了“如何正确地用krakozyabrami解开拉链”的问题。



在far2l中,我们对其进行了修复。在此过程中,出现了一个演示实用程序,该实用程序演示了如何正确使用.zips中的编码,以便不存在“ krakozyabrs”(对存档者有用),以及使用类似算法的p7zip补丁p7zip-with-patch甚至打包到一个.deb文件(ubuntu 20.04 +,amd64)中,该文件的安装可修复zip支持,例如在MATE使用的Engrampa中。







整理依赖



最初,端口带有一堆库代码,因此在Linux世界中以系统软件包的形式存在:pcre,minizip,通用字符集检测器。现在,所有这些都已被依赖的使用所取代:尽可能使用系统库(例外:7z和unrar,最新的库在此处静态编译以支持格式的最新功能)。



人类支持.tar.gz



far2l用于访问档案的多弧插件来自Windows世界,它不知道如何将.tar.gz视为一个档案。他看到.gz并在其中看到.tar。因此,要获取文件列表,您必须进行完全解压缩。这样的经历。在过去的一个月中,多弧技术得到了显着改善,这个问题已经消失。



漂亮的控制台窗口



在far2l的图形版本中存在一个问题:用令人讨厌的虚线显示了边框绘制符号。



图片



我们花了很长时间才找到原因或找到修复此无尽错误的渲染设置,直到研究了GNOME和KDE终端的源代码。事实证明,很久以前,绘图框的符号不是从字体渲染的,而是手动渲染的,因此线条清晰美观。



结果,我们在far2l中做了同样的事情,只好一点:添加了抗锯齿功能。否则,在KDE和GNOME终端中,最反差的行在抗锯齿的文本旁边太分散了自己的注意力。



在此过程中,我必须了解抗锯齿的心理视觉细微差别,捕捉不存在的“顽固像素”,这是眼睛顽固地看到的。细节



图片



发行包



我们尚未进入许多发行版的存储库(有些已经到达!)。但是很长一段时间以来,所有主要格式的软件包都存在甚至还有Amazon Linux的构建脚本!而且,当然,还有* Buntu的ppa-对大多数用户来说,“打开灯”的最便捷方法。



新鲜着色剂



far2l来自Far 2分支,因此那里的一些插件需要紧急更新。最近,进行了这样的更新:我们更新了7z和unrar的拆包代码,以及Colorer语法的配色方案。其余移植的插件不包含任何定期更新的插件,但是旧的“着色”和新的存档没有打开是一个真正的问题。就是这样,她走了!









这是第二个在kamenty中经常被问到的问题:“和netboooooooooooooooooooooo?”。不,将没有netbox!里面有腻子,将其Linux版本拖到far2l似乎是一个奇怪的想法。而且netbox代码本身不太适合移植。



因此,端口的作者,出色的elfmz制作了自己的网络插件版本:NetRocks。您可能需要所有内容-ftp [s],scp,sftp,nfs,webdav甚至samba!一切都在本机Linux库上运行。在sftp中,您甚至可以运行远程命令并转到远程控制台。



NetRocks还具有一个伪网络文件插件,可让您使用本地文件系统。做什么的?因为NetRocks擅长后台操作。和通常的文件复制-不能。







一般而言插件如何?



除NetRocks之外,该工具包还包括:



着色器(语法突出显示,新鲜!)

Multiarc(与档案,修改过的新鲜档案一起使用!)

Tmppanel(临时面板)

align块(编辑器的格式化块)

autowrap(在编辑器中自动

包装drawline(绘图编辑器中的行)

editcase(在编辑器中转换大小写SimpleIndent(在编辑器中

使用缩进)

比较(“比较文件夹”的高级版本)

编辑器自动完成(在编辑器中自动完成)

文件案例(转换文件名的大小写)

增量搜索(在“快速搜索”中)编辑器)

内部(显示ELF和其他格式的内部内容)

甚至还有一个用Python编写其他插件的插件!



有几个第三方的,far2-gvfsfar2l-fuse,但是在出现NetRocks之后,它们已经失去了一定的关联性。



通常,可以使用一个基本的设置来轻松地处理本地和远程文件和档案,以及直接在far2l编辑器中编写代码:)



稳定性如何?版本何时发布?



有了稳定性,一切都很好:在工作中使用4年(webdev +任何办公室),我都没有因为far2l而“抓到”单个数据丢失。如果严重错误在一两个月内没有出现,则端口的作者准备将状态从alpha逐渐更改为beta。然后,人们可能会考虑例如将软件包提交到​​分发存储库。



奖金#1。引擎盖下真的有酒吗?



部分:)从Wine提取了一些WinApi到本机Linux API的转换(例如,编码转换;顺便说一下,他们最近试图将这一段重写为iconv,但事实证明,Wine的代码将相同的东西快4倍)。随着时间的流逝,散布在far2l代码中的对这些函数的调用可以逐渐被对本机函数的直接调用所取代。同时,该设计也非常快(它们尝试在树莓派上运行的最慢的速度- 飞行是正常的)并且非常可靠。



奖金#2。别再胡说八道了,教控制台,你这傻瓜!



在研究far2l(测试人员,有时我会发送简单的补丁程序)的过程中,我对Linux控制台的了解比一生中的经历还多:) ,顺便说一句,使用git切换到“您”。因此,请耐心等待一篇文章“如何在开放源代码上教网络猕猴”!



奖金3。有无聊的墙纸吗?



几年前,我宁愿嘲笑这个问题。但是,是的,如果您整天看上去都是蓝色的,那会有点不舒服(您可以直接感觉到胡子和毛衣搭配鹿的成长)。因此,最后,我本着Monokai的精神为自己着色,并为每个人布置了颜料毕竟,我们有开源。







奖金#4。它会在罂粟上起飞吗?



脱掉。一半的票证是从罂粟花写入bugtracker的。是的,它也适用于BSD。



All Articles