far2l в Ubuntu 23.10

в 13:29, , рубрики: BSD, FAR, far manager, far2l, file manager, linux, MacOS, Ubuntu, WinAPI

Ура! В новой версии Ubuntu, наконец-то, можно установить Far Manager (far2l) самым обычным sudo apt install far2l — прямо из коробки, без всяких ppa и кастомных сборок! Под катом — немного подробностей, а также обычный дайджест новостей проекта за прошедшее время.

far2l в Ubuntu 23.10 - 1

Клавиатурный ввод в продвинутых терминалах

Одной из главных проблем, мешавших портированию Far Manager на Linux, Mac и BSD, была ограниченная поддержка клавиатуры в классических POSIX терминалах. Например, сочетания Ctrl+цифры, активно используемые в Far для переключения режимов отображения списка файлов, в большинстве терминалов генерируют спецсимволы, по которым однозначно определить нажатые клавиши невозможно.

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

Вторым решением было создание консольной версии, способной взаимодействовать с иксами только для работы с буфером обмена и прослушивания клавиатурного ввода, всё остальное работает через консоль. Именно такая версия вошла в Ubuntu и Debian.

Однако у такого подхода тоже есть недостатки. Если far2l работает на удаленном сервере, для подержки всех сочетаний клавиш может потребоваться соединение с включенным X Forwarding, что доступно не на всех серверах. Также задержки в ssh могут приводить к нечёткой работе определения клавиатурных модификаторов (Ctrl, Alt, Shift, etc) через иксы.

К счастью, в некоторых терминалах реализованы свои, нестандартные расширения, позволяющие получать подробную информацию о клавиатурных событиях. Мне известны четыре таких протокола, подходящих для реализации всего нужного Far'у функционала:

  1. Собственный протокол far2l terminal extensions

  2. win32-input-mode (в процессе реализации протокола мы даже нашли баг в Windows Terminal, где этот протокол впервые появился)

  3. Протокол kovidgoyal's kitty (также поддерживается в WezTerm, однако там пока баг)

  4. Протокол 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! У нас здорово, и мы с удовольствием ответим на любые вопросы!

Предыдущая статья цикла.

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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js