Как стать автором
Обновить

Linux-порт Far Manager: новости весны 2023

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров23K

Обычно я пишу статьи об развитии проекта far2l — порта знаменитого Far Manager под Linux, MacOS и BSD (а теперь ещё и Haiku) раз в год. Но иногда случается так, что объем новостей на статью набирается быстрее. Недавно произошло сразу несколько важных событий, поэтому дожидаться конца года не буду, а опубликую самое интересное сразу.

Нас взяли в Debian!

Это, пожалуй, главная новость. К сожалению, в Bookworm мы попасть не успели, так что ждите нас в следующем выпуске, или в Ubuntu 23.10. Да, можно будет делать sudo apt install far2l, без всяких сложностей с ppa или самостоятельной сборкой!

Путь в Debian был непростой: в проекте очень строгие требования по лицензионной чистоте. far2l включает большое количество кода из разных проектов под разными лицензиями (большей частью это BSD, под которой публиковались оригинальные исходники Far, и GPL2, под которой находится код Wine, отдельные фрагменты которого всё ещё используются в проекте, и весь вновь написанный код), и потребовалось значительное время, чтобы заменить лицензионно несовместимые библиотеки.

В частности, пришлось заменить ConvertUTF из состава LLVM на utf-cpp авторства ww898, которая распространяется под подходящей нам MIT. Потом — внести в GPL2 специальное исключение для разрешения линковки с OpenSSL, что потребовало согласования со всеми авторами меняющего лицензию кода. Также для Debian пришлось отказаться от использования libunrar в пользу обвязки вокруг отдельной утилиты командной строки — опять же из-за лицензионных ограничений, и написать специальный скрипт, собирающий лицензионную информацию со всех файлов с исходниками в единый файл сведений об авторских правах в совместимом с Debian формате. Итог — пакеты лежат на ftp, ура!

Portable версия для Linux теперь куда более portable

Ещё одна новость о доступности far2l на разных системах: portable-сборка, позволяющая скачать far2l в виде одного исполняемого файла, переработана, и теперь запускается на куда большем числе дистрибутивов. Например, она теперь работает и на таких старых системах как Debian 7 и CentOS 6 (там ядро 2.6.32, даже на нём запускается!). Просто скачиваете один-единственный файл, и всё работает.

Сборка для Haiku и OpenWRT/DDWRT

В проект добавлены патчи, позволяющие собрать far2l и для Haiku!

Также добавлены buildroot-скрипты для сборки под embedded платформы, такие как OpenWRT или DDWRT. Теперь можно запустить far2l даже на роутере. В процессе пришлось внести некоторые оптимизации во viewer (до них он тратил по 32 Мб памяти на открытие каждого файла) и поиск в файлах по подстроке, чтобы избежать падений в условиях очень органиченных аппаратных ресурсов. Заодно поддержка протокола SCP в плагине NetRocks (альтернатива NetBox) доработана для нормального взаимодействия с *wrt-роутерами (на которых более надёжного SFTP обычно по умолчанию нет).

Улучшения поддержки буфера обмена в консольной версии

far2l теперь поддерживает стандарты Bracketed Paste и OSC52 (OSC52 нужно включать в настройках), описывающие протоколы доступа к системному буферу обмена из консольных приложений. В результате консольная версия far2l справляется с копированием и вставкой из графического буфера обмена под такими терминалами как, например, Windows Terminal или iTerm2 (поддержку OSC 52 можно включить и в любом другом терминале с помощью специальной утилиты). Также поддержка активирована и для приложений, работающих внутри встроенного терминала самого far2l.

Развитие экосистемы

В консольный текстовый редактор turbo добавлена поддержка расширений терминала far2l (в частности, поддержка передачи всех сочетаний клавиш и доступ к буферу обмена). turbo интересен тем, что это один из немногих консольных редакторов, где нормально работает перенос по словам — как в windows notepad или html textarea (он сделан на базе движка Scintilla, на котором работает Notepad++). Удобно, когда ты привык работать с длинными текстами в консоли.

В результате мы находимся в моменте, когда два приложения (putty4far2l и turbo) в состоянии общаться между собой на языке расширений терминала far2l даже без использования самого far2l. А ещё putty4far2l (форк putty, где в far2l работают все комбинации клавиш и буфер обмена) обновлен до последней версии апстрима.

Приятные мелочи

Теперь можно запускать far2l сразу с maximized окном (или, наоборот, в стандартном размере, выбор через опции командной строки, см. far2l --help). Размер и положение окна запоминается при сохранении настроек.

Палитра цветов из ~/config/far2l/palette.ini теперь применяется и в консольной версии в терминалах, поддерживающих установку палитры через escape-последовательности OSC 4.

Теперь можно вручную задавать допустимые алгортимы шифрования через файл настроек OpenSSH: поможет тем, у кого были проблемы с соединением с некоторыми хостами в NetRocks.

В графической версии побеждён давний баг #1303 (проблемы с рендерингом под rdp, xwayland и на некоторых других системах), заодно ускорили первичную отрисовку окна при запуске.

Добавлена поддержка стандарта .editorconfig — теперь можно задавать настройки табуляции для редактора (использовать табы или пробелы, ширина табов, etc) глобально для всей папки с исходниками какого-либо проекта в одном конфигурационном файле.

Если вы ещё не пробовали far2l, самое время попробовать! Например, установив через ppa или скачав portable сборку под вашу архитектуру. Если появились вопросы — приходите в чат (в основном русскоязычный), а отчёт про баг можно прислать сюда (принимаются и на русском, и на английском). А вот предыдущий выпуск новостей, если вы вдруг его пропустили.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 141: ↑141 и ↓0+141
Комментарии89

Публикации

Истории

Ближайшие события

Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
OTUS CONF: GameDev
Дата30 мая
Время19:00 – 20:30
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область