Ура! В новой версии 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! У нас здорово, и мы с удовольствием ответим на любые вопросы!
Предыдущая статья цикла.
Комментарии (48)
kruphi
18.10.2023 14:12+8Отмечу, что в Ubuntu 23.10 (и Debian) попала пока версия far2l от конца весны, а часть перечисленных в статье приятностей сделана летом, поэтому лучше ставить свежий оперативно обновляемый far2l из https://launchpad.net/~far2l-team/+archive/ubuntu/ppa где также пакеты и для остальных актуальных версий Ubuntu.
vagon333
18.10.2023 14:12+2Ура-ура!
А как можно на 22.04?
С Фаром уж лет 20, но линускосвый far как-то не прижился - года 2 назад попробовал, описал проблемы, не поборол цвета и вернулся на MC.
Хочу попробовать, но сижу на 22.04 Server (только консоль, без GUI).unxed Автор
18.10.2023 14:12+1На 22.04 можно через ppa, как сказано тут! А вы откуда к этой серверной консоли подключаетесь, с какой системы?
vagon333
18.10.2023 14:12+2Win -> Xshell -> Ubuntu 22.04 или остались еще 20.04
unxed Автор
18.10.2023 14:12+1Ага, спасибо! По поводу цветов тут ответил. Однако палитра настраивается, если что! И в графической версии, и в консольной. Смотрите в ~/.config/far2l/palette.ini
unxed Автор
18.10.2023 14:12+1Пара нюансов про Ubuntu 23.10 в целом:
В Virtualbox он у меня запустился только после установки настроек «2 ядра процессора, память 2048 Mb, сеть bridged».
В lxc 23.10 иногда не запускается, там баг, обходной путь здесь.
anapogo
18.10.2023 14:12+6Боже мой... Программистом еще начинал с Нортон Командера в 90-х.
Затем появился Far...
Теоретически, изначально он прижился потомуШта сделан был визуально под NC.
Потом он начал улучшаться, NC наоборот заглох...
Вообщем, первой прогой, которую уже многие лета, и до сих пор инсталлирую после установки Винды, является ЕГО ВЕЛИЧЕСТВО FAR!Спасибо огромное Eugene Roshal за ЭТО!
Как-то не верится, что только в 2023 Far пришел в Linux...
Да, в консоли обычно МС... но там по быстрому, и не задумывался об Far...
Breathe_the_pressure
18.10.2023 14:12+1на Арче уже годами доступен. Но я не проникся, хотя раньше пользовался ещё в 2000. Krusader намного больше нравится.
Fedorkov
18.10.2023 14:12+2Аналогично - Нортон, потом Волков и Far.
В 2014 после откровений Сноудена решился перейти на линукс и снести винду. Единственное, чего не хватало в жизни - это фара; по сравнению с ним mc и Double Commander по функциональности рядом не стоят. Где-то в 2016 открыл для себя far2l (в пользовательских репозиториях арча), и в этот момент впервые почувствовал себя под линуксом комфортнее, чем под виндой. В 2018 перешёл с арча на убунту, и, разумеется, первым делом скомпилировал и установил far2l. К следующему LTS переустановлю из репозитория.
@unxed с абсолютно заслуженным и сильно запоздалым включением в репозиторий!
leongurman
18.10.2023 14:12+1А есть шанс, что far2l когда-нибудь появится и для Red Hat?
unxed Автор
18.10.2023 14:12+2Кто-то брался делать, статус не помню. Спросил в чате.
UPD:
«По fedora мы к 39 релизу уже не успеваем, если до 7-го числа не рассмотрят. Думаю успеем к 40му»
https://fedoraproject.org/PackageReviewStatus/reviewable.html
https://bugzilla.redhat.com/show_bug.cgi?id=2227064
kruphi
18.10.2023 14:12+2rpm-сборки:
* https://download.opensuse.org/repositories/home:/viklequick/
* https://copr.fedorainfracloud.org/coprs/polter/far2ldeseven
18.10.2023 14:12Для ARM нету, к сожалению :(
Status code: 404 for https://download.copr.fedorainfracloud.org/results/polter/far2l/epel-9-aarch64/repodata/repomd.xml
rehci
18.10.2023 14:12+4А можно список самых заметных фич, которые есть в far2l и нет в mc?
mrobespierre
18.10.2023 14:12Вот да, тож интересно.
sabay
18.10.2023 14:12+1Возможность открыть несколько файлов на редактирование и переключаться между ними
mrobespierre
18.10.2023 14:12Неплохо, хоть и не очень актуально для меня - я всегда внешний редактор использую.
unwrecker
18.10.2023 14:12+1Киллер фича - временное повышение прав. При сохранении файла, например, когда прав не хватает.
unxed Автор
18.10.2023 14:12+1Макросы, буфер обмена через ssh, привычные кнопки все (это стоило труда), куча сетевых протоколов (включая WebDAV и NFS), куда более качественная подсветка синтаксиса в редакторе, запрос повышения прав, возможности делать плагины на Питоне и Луа — это навскидку только.
inetstar
18.10.2023 14:12Я не понял: чтобы корректно работал через ssh нужно как-то заморачиваться с иксами?
Второй вопрос: если сравнить с дос навигатором под линукс, то в чью пользу будет сравнение?
kruphi
18.10.2023 14:12+1Теперь уже X не обязательны. Для передачи на запущенный на удалённом компьютере far2l расширенных сочетаний клавиш и буфера обмена необходимо инициировать соединение из умеющих это клиентов. Подробнее: https://github.com/akruphi/far2l/wiki#tty-terminals
unxed Автор
18.10.2023 14:12Если вы запускаете команду ssh изнутри far2l, полноценно работающего на вашем десктопе — заморачиваться не надо. Если нет — зависит от терминалки, в перечисленных у меня в посте всё будет ок, в остальных надо включать x forwarding.
b00
18.10.2023 14:12>куча сетевых протоколов (включая WebDAV и NFS)
Для пользователя это чем-то отличается от условногоmount davfs2/nsf/cifs/etc | sshfs
и работы в смонтированном каталоге любым удобным способом?
titbit
18.10.2023 14:12Фар всегда славился плагинами, поэтому вопрос - а планируется ли портирование плагинов из основной ветки (фар3: arclite, brackets, etc.), и возможно дополнительных плагинов других авторов? Вообще, насколько сложно портировать плагины к которым есть исходники (visren, hexitor, textconv, etc.)?
unxed Автор
18.10.2023 14:12+1Портирование сравнительно несложно, если это си/c++. Вот пример портирования простого плагина: https://github.com/unxed/far2l-EditWrap
domix32
18.10.2023 14:12А поддержку запуска из терминальных мультиплексеров делать будете? tmux, zellij и прочие? Внутри них биндинги могут работать криво
unxed Автор
18.10.2023 14:12Более-менее работает, есть минорные проблемы под screen, и что-то вроде было не так под tmux, точно не помню. Самый частный юзкейс мультиплексоров — не терять сессию при обрыве соединения — far2l умеет и сам.
domix32
18.10.2023 14:12Лично сталкивался с тем что из-под zellij выход не работал по F10, ну и темы местами багуют, как впрочем и в остальных. А так основной юзкейс - несколько переключаемых рабочих пространств. Сессии без дополнительной магии выживать не будут.
unxed Автор
18.10.2023 14:12+2У нас выживают! Попробуйте по ssh подключиться, там запустить far2l, там поставить какую-то долгую операцию выполняться, а потом окошко где ssh грохнуть по kill -9. И снова по ssh подключиться и far2l запустить. Он предложит «подхватить» предыдущий инстанс, операция там не прервётся.
APh
18.10.2023 14:12Сам Far 2 всегда был 16-цветным, однако «фреймворк» продвинутых консольных приложений, на котором он работает в *nix, с недавнего времени поддерживает полноцветную палитру...
А что это за «фреймворк»? Может кто ссылку или название привести?
turbidit
Попробовал использовать для каждодневных задач, столкнулся со следующими проблемами:
Ломаются цвета на терминалах с нестандартной темой (но эта проблема общая с mc), вот например с Konsole с темой nord. В тоже время нет удобного механизма для выбора и установки тем. Если на рабочем месте еще можно настроить через скрипт с github, то на удаленных серверах всегда будет вырвиглазие.
Хоткей для вызова альтернативного редактора зачем-то Alt-F4 - с предсказуемым результатом! Методом тыка выяснил что рабочий вариант - Win-Alt-F4.
neovim вызванный внутри far2l почему-то монохромный, хотя оригинальный vim - нормальный.
unxed Автор
С тех пор как Truecolor технически поддерживается, темы сделать можно. Просто руки пока не дошли для элементов интерфейса добавить поддержку такую. Можно вот здесь высказаться, что вам оно нужно!
А запульните про это тикет, пожалуйста!
NetMGS
а где пункт N2?
unxed Автор
А по N2 я не знаю, что предложить :) Обход с Win — да, разумная мера. А, ну макрос можно сделать, чтоб по другой кнопке это действие срабатывало. Макросы в far2l работают так же, как в Far 2 (пока).
turbidit
Хотелось бы несколько готовых тем и диалог их выбора как в mc, например
Похоже у меня просто версия старая была, на новой из ppa вроде не наблюдается.
unxed Автор
Палитра, кстати, теперь настраивается и в консольной версии тоже, попробуйте!