Ура! В новой версии Ubuntu, наконец-то, можно установить Far Manager (far2l) самым обычным sudo apt install far2l
— прямо из коробки, без всяких ppa и кастомных сборок! Под катом — немного подробностей, а также обычный дайджест новостей проекта за прошедшее время.
Клавиатурный ввод в продвинутых терминалах
Одной из главных проблем, мешавших портированию Far Manager на Linux, Mac и BSD, была ограниченная поддержка клавиатуры в классических POSIX терминалах. Например, сочетания Ctrl+цифры, активно используемые в Far для переключения режимов отображения списка файлов, в большинстве терминалов генерируют спецсимволы, по которым однозначно определить нажатые клавиши невозможно.
Первым решением, которое применялось в far2l, было создание графического бекенда отрисовки — Far работал через иксы, где, понятное дело, есть доступ к подробной информации о нажатых клавишах. Проблема в том, что этот бекенд тащил за собой целый графический рабочий стол — не очень удобно на серверах.
Вторым решением было создание консольной версии, способной взаимодействовать с иксами только для работы с буфером обмена и прослушивания клавиатурного ввода, всё остальное работает через консоль. Именно такая версия вошла в Ubuntu и Debian.
Однако у такого подхода тоже есть недостатки. Если far2l работает на удаленном сервере, для подержки всех сочетаний клавиш может потребоваться соединение с включенным X Forwarding, что доступно не на всех серверах. Также задержки в ssh могут приводить к нечёткой работе определения клавиатурных модификаторов (Ctrl, Alt, Shift, etc) через иксы.
К счастью, в некоторых терминалах реализованы свои, нестандартные расширения, позволяющие получать подробную информацию о клавиатурных событиях. Мне известны четыре таких протокола, подходящих для реализации всего нужного Far'у функционала:
-
Собственный протокол far2l terminal extensions
-
win32-input-mode (в процессе реализации протокола мы даже нашли баг в Windows Terminal, где этот протокол впервые появился)
-
Протокол kovidgoyal's kitty (также поддерживается в WezTerm, однако там пока баг)
-
Протокол iTerm2
В настоящее время far2l понимает их все (а встроенный терминал самого far2l — первые два). Следовательно, в любом из перечисленных терминалов все кнопки клавиатуры будут работать в любом случае, есть у вас иксы и переадресация их протокола, или нет.
Полный список терминалов, где UX far2l будет наилучшим:
Mac: iTerm2, kovidgoyal's kitty
Linux/BSD: kovidgoyal's kitty
Windows: Windows Terminal свежей версии, putty4far2l, cyd01's KiTTY, putty-nd
Не забудьте включить OSC52 в настройках far2l: в некоторых терминалах без этого не работает буфер обмена.
wiki с полезностями
Встроенная справка не всегда обновляется достаточно быстро, а новых возможностей — много. Чтобы собирать где-то оперативную информацию о них, и выкладывать ответы на самые частые вопросы, мы сделали wiki проекта far2l, заходите!
Например, знали ли вы, что в far2l есть копирование в фоновом режиме? Ищите в разделе «полезности»!
Улучшения справки
Впрочем, встроенный help тоже улучшен во многих местах, вот только часть предложенных исправлений: раз, два, три, четыре! А самые главные особенности far2l, которые лучше бы сразу рассказывать новичку, теперь в справке на видном месте!
Более умная система сборки
Мы внесли несколько важных изменений в сборочную систему. Во-первых, теперь весь проект не пересобирается из-за каждого коммита (была ошибка в логике включения хэша коммита в код). Во-вторых, сборка поддержки макросов теперь опциональна: можно сэкономить 300 Кб, собирая версию для роутеров и другого embedded оборудования. А ещё мы вырезали из обязательных зависимостей spdlog (а также pcre), и теперь можем собираться без зависимостей вообще (часть плагинов, правда, без зависимостей не соберётся).
Редактор симлинков
В far2l добавлена возможность редактирования символических ссылок — опция, которой не было у нашего предка, Far 2.
TrueСolor в подсветке типов файлов
Сам Far 2 всегда был 16-цветным, однако «фреймворк» продвинутых консольных приложений, на котором он работает в *nix, с недавнего времени поддерживает полноцветную палитру, которая понемногу внедряется и в сам Far тоже. Например, недавно стало возможным использовать для «раскраски» файлов на панелях не только стандартные 16 цветов терминала, но и любой TrueColor цвет!
Версия для телефонов
А для желающих пользоваться far2l в дороге у нас появилась сборка для Termux — одного из решений, позволяющих получить полноценнию Linux систему в телефоне на Андроиде. Сборки, скрины.
Приятные мелочи
Мы отформатировали все исходники (раньше строки вылезали за край экрана, были и другие проблемы), в процессе пришлось даже немного допилить clang-format под наши нужды. Добавили правила оформления нового кода. Поотлавливали часть ошибок, найденных PVS Studio. Починили автодополнение в редакторе. Сделали так, чтобы пользователь и группа в редактировании свойств файлов выбирались из списков, а не вводились вручную. Улучшили окно истории команд. Добавили UTF8 в список кодировок, переключающихся по F8. И сделали возможность задавать консольные команды для операций с буфером обмена, что поможет, к примеру, на системах с Wayland, где у некоторых пользователей бывали проблемы.
Добавляйтесь в Telegram-чат русскоязычного сообщества far2l! У нас здорово, и мы с удовольствием ответим на любые вопросы!
Предыдущая статья цикла.
Автор: Иван Сорокин