- PVSM.RU - https://www.pvsm.ru -

Линукс-порт Far Manager: что нового за 2021

Предыдущий пост [1] про порт Far Manager под Linux, far2l [2], оказался невероятно популярным, так что я подумал, что неплохо бы раз в год писать что-то вроде дайджеста самых интересных новостей разработки. Начнём.

Буфер обмена в консольной версии

Теперь far2l, как и mc, умеет использовать буфер обмена X11 даже в консольной версии (в графической умел с самого начала). Для этого собирается отдельный модуль взаимодействия с X, который загружается, только если в системе установлена библиотека libx11. Можно даже ходить на удаленные сервера через ssh -X, буфер обмена будет работать и там (опять же, если libx11 на сервере установлена).

И ещё о консольном режиме. Не забываем про параметр командной строки --ee, позволяющий избавиться от необходимости нажимать ESC дважды.

Кстати, о клавиатуре в консоли. Горячие клавиши в сторонних терминалах поддерживаются практически все — по крайней мере, я знаю только про проблемы с комбинациями Ctrl+цифра, над ними идёт работа [3].

far2l в GNOME Terminal
far2l в GNOME Terminal

Человеческие сообщения об ошибках

Долгое время все сообщения об ошибках far2l показывали цифровые коды ошибок, пришедшие из мира Windows и не несущие никакой полезной информации. Теперь это исправили, все сообщения об ошибках стали семантические, а коды ошибок — родные для платформы.

Линукс-порт Far Manager: что нового за 2021 - 2

Цвета в логе встроенного терминала

Во встроенный просмотрщик добавили поддержку ANSI escape-последовательностей для управления цветом отображения, так что просмотр логов встроенного терминала теперь в цвете. Удобно, когда разбираешь логи компилятора, например.

Линукс-порт Far Manager: что нового за 2021 - 3

Вообще просмотрщик сильно улучшили. Например, у него появился так называемый «processed mode» (переключается по F5), позволяющий получить информацию о файле (скажем, увидеть текстовое представление PDF'ки или технические данные об изображении).

Линукс-порт Far Manager: что нового за 2021 - 4

Ещё больше форматов архивов

В multiarc-плагине, через который в far2l сделана работа с архивами, есть поддержка псевдоформата custom, позволяющего задавать в текстовом конфиге сигнатуру архива, командные строки архиватора и формат его выдачи. Это позволяет легко и просто добавлять поддержку любых мыслимых форматов. Например, таким образом теперь поддерживаются [4] форматы образов диска большинства виртуальных машин, и даже такая экзотика в мире Линукс как формат WIM.

Линукс-порт Far Manager: что нового за 2021 - 5

Встроенный «реестр» заменен на обычные .ini файлы

Исторически настройки far2l лежали в структуре, напоминающей реестр Windows, но работающей на текстовых файлах. Такое решение было выбрано для удобства портирования, но удобным способом работы с файлами конфигурации его назвать сложно. Теперь этот рудимент исчез, а все настройки лежат в ~/.config/far2l в человекочитаемых .ini файлах

Линукс-порт Far Manager: что нового за 2021 - 6

Кстати, в папке настроек тоже навели порядок — все временные рабочие файлы перенесли оттуда в ~/.cache/far2l (/tmp для них не слишком подходит, так как там могут быть критичные пользовательские данные).

Упорядочивание зависимостей

Переходом с UCD на Uchardet завершилось наведение порядка с библиотеками и зависимостями. Теперь статически собираются только libcolorer (потому что нет в репах дистрибутивов), 7z/unrar (чтоб всегда свежие были) и utf-cpp [5] (т.к. у нас своя, слегка адаптированная версия). Все остальные библиотеки используются из дистрибутива.
Кстати, при переходе на Uchardet заодно починили запуск автоопределения кодировки текста через пункт в меню редактора и просмотрщика.

Лицензионная совместимость с Debian

После удаления из far2l библиотеки конвертации форматов UTF из clang и добавления в лицензию плагина NetRocks GPL-исключения для OpenSSL проект стал полностью совместим с лицензионными требованиями Debian, идёт работа над пакетом [6].

Точнее сказать — мы думаем, что совместим. Юристов в команде пока нет :)

Поддержка устаревших архивов

Командные строки для вызова распаковщиков разной экзотики вроде ARJ и ACE заменили на вызов утилит, присутствующих в актуальных версиях дистрибутивов. Теперь все форматы, заявленные как поддерживаемые — как минимум распаковываются. Для некоторых потребуется поставить сторонние утилиты, а вот поддержку формата .ha сделали встроенной — люди, которые помнят фидо, это оценят :)

CI для Mac и FreeBSD

Раньше автоматизированная сборка выполнялась только для Linux платформы, теперь скрипты continious integration есть и для BSD, и для Mac. Ошибки, проявляющиеся только на этих платформах, будут отлавливаться быстрее.

Рефакторинг

Устранена куча предупреждений компилятора и «мёртвого» кода. большая часть оставшихся — из colorer'а, который в неизменном виде берется из апстрима. Переписан [7] код копирования файлов — улучшена поддержка символических ссылок, повышена производительность. Добавлена поддержка Copy-on-Write и sparse-файлов. Много небольших улучшений [8] производительности [9], включая сетевую: поддержка сжатия SSH трафика в NetRocks и более оптимальное [10] отображение интерфейса в терминалах.

Графический бекенд в отдельном модуле

Теперь графический бекенд, который рисует окно фара через wx widgets, собирается в отдельный модуль, который автоматически проверяет наличие нужных библиотек в системе, и, если их нет, far2l запускается в консольном режиме. Удобно: можно собрать этот модуль в отдельный пакет, зависимый от wx, а весь остальной far2l собрать в другой пакет без этой зависимости. Упростит установку на серверах без графики.

А нужна ли нам вообще wx версия, если в консоли теперь работает всё или почти всё? Есть мнение, что нужна — если мы хотим полноценный опыт работы с Far как-в-винде, без скидок и компромиссов. Обсуждаем это здесь [11].

PS: Все же знают, что есть пропатченная putty [12], в которой в far2l работает буфер обмена и все сочетания клавиш?

Автор: Иван Сорокин

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/370241

Ссылки в тексте:

[1] Предыдущий пост: https://habr.com/ru/post/524370/

[2] far2l: https://github.com/elfmz/far2l

[3] идёт работа: https://github.com/elfmz/far2l/issues/1126

[4] поддерживаются: https://github.com/elfmz/far2l/blob/master/multiarc/configs/plug/custom.ini

[5] utf-cpp: https://github.com/ww898/utf-cpp

[6] работа над пакетом: https://github.com/elfmz/far2l/issues/692

[7] Переписан: https://github.com/elfmz/far2l/pull/1050

[8] улучшений: https://github.com/elfmz/far2l/pull/1022

[9] производительности: https://github.com/elfmz/far2l/pull/1041

[10] более оптимальное: https://github.com/elfmz/far2l/pull/903

[11] здесь: https://github.com/elfmz/far2l/issues/1101

[12] пропатченная putty: https://github.com/unxed/putty4far2l

[13] Источник: https://habr.com/ru/post/593451/?utm_source=habrahabr&utm_medium=rss&utm_campaign=593451