Ура! В новой версии 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'у функционала:

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

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

Комментарии (48)


  1. turbidit
    18.10.2023 14:12
    +2

    Попробовал использовать для каждодневных задач, столкнулся со следующими проблемами:

    1. Ломаются цвета на терминалах с нестандартной темой (но эта проблема общая с mc), вот например с Konsole с темой nord. В тоже время нет удобного механизма для выбора и установки тем. Если на рабочем месте еще можно настроить через скрипт с github, то на удаленных серверах всегда будет вырвиглазие.

    2. Хоткей для вызова альтернативного редактора зачем-то Alt-F4 - с предсказуемым результатом! Методом тыка выяснил что рабочий вариант - Win-Alt-F4.

    3. neovim вызванный внутри far2l почему-то монохромный, хотя оригинальный vim - нормальный.


    1. unxed Автор
      18.10.2023 14:12
      +1

      1. С тех пор как Truecolor технически поддерживается, темы сделать можно. Просто руки пока не дошли для элементов интерфейса добавить поддержку такую. Можно вот здесь высказаться, что вам оно нужно!

      1. А запульните про это тикет, пожалуйста!


      1. NetMGS
        18.10.2023 14:12
        +1

        а где пункт N2?


        1. unxed Автор
          18.10.2023 14:12
          +2

          А по N2 я не знаю, что предложить :) Обход с Win — да, разумная мера. А, ну макрос можно сделать, чтоб по другой кнопке это действие срабатывало. Макросы в far2l работают так же, как в Far 2 (пока).


      1. turbidit
        18.10.2023 14:12
        +1

        1. Хотелось бы несколько готовых тем и диалог их выбора как в mc, например

        2. Похоже у меня просто версия старая была, на новой из ppa вроде не наблюдается.


    1. unxed Автор
      18.10.2023 14:12
      +1

      Палитра, кстати, теперь настраивается и в консольной версии тоже, попробуйте!


  1. kruphi
    18.10.2023 14:12
    +8

    Отмечу, что в Ubuntu 23.10 (и Debian) попала пока версия far2l от конца весны, а часть перечисленных в статье приятностей сделана летом, поэтому лучше ставить свежий оперативно обновляемый far2l из https://launchpad.net/~far2l-team/+archive/ubuntu/ppa где также пакеты и для остальных актуальных версий Ubuntu.


  1. vagon333
    18.10.2023 14:12
    +2

    Ура-ура!

    А как можно на 22.04?

    С Фаром уж лет 20, но линускосвый far как-то не прижился - года 2 назад попробовал, описал проблемы, не поборол цвета и вернулся на MC.
    Хочу попробовать, но сижу на 22.04 Server (только консоль, без GUI).


    1. unxed Автор
      18.10.2023 14:12
      +1

      На 22.04 можно через ppa, как сказано тут! А вы откуда к этой серверной консоли подключаетесь, с какой системы?


  1. vagon333
    18.10.2023 14:12
    +2

    Win -> Xshell -> Ubuntu 22.04 или остались еще 20.04


    1. unxed Автор
      18.10.2023 14:12
      +1

      Ага, спасибо! По поводу цветов тут ответил. Однако палитра настраивается, если что! И в графической версии, и в консольной. Смотрите в ~/.config/far2l/palette.ini


  1. unxed Автор
    18.10.2023 14:12
    +1

    Пара нюансов про Ubuntu 23.10 в целом:

    1. В Virtualbox он у меня запустился только после установки настроек «2 ядра процессора, память 2048 Mb, сеть bridged».

    2. В lxc 23.10 иногда не запускается, там баг, обходной путь здесь.


  1. anapogo
    18.10.2023 14:12
    +6

    Боже мой... Программистом еще начинал с Нортон Командера в 90-х.
    Затем появился Far...
    Теоретически, изначально он прижился потомуШта сделан был визуально под NC.
    Потом он начал улучшаться, NC наоборот заглох...
    Вообщем, первой прогой, которую уже многие лета, и до сих пор инсталлирую после установки Винды, является ЕГО ВЕЛИЧЕСТВО FAR!

    Спасибо огромное Eugene Roshal за ЭТО!

    Как-то не верится, что только в 2023 Far пришел в Linux...

    Да, в консоли обычно МС... но там по быстрому, и не задумывался об Far...


    1. Breathe_the_pressure
      18.10.2023 14:12
      +1

      на Арче уже годами доступен. Но я не проникся, хотя раньше пользовался ещё в 2000. Krusader намного больше нравится.


      1. unxed Автор
        18.10.2023 14:12
        +1

        А чего не хватает? Может, конкретной фишки какой-то?


    1. Fedorkov
      18.10.2023 14:12
      +2

      Аналогично - Нортон, потом Волков и Far.

      В 2014 после откровений Сноудена решился перейти на линукс и снести винду. Единственное, чего не хватало в жизни - это фара; по сравнению с ним mc и Double Commander по функциональности рядом не стоят. Где-то в 2016 открыл для себя far2l (в пользовательских репозиториях арча), и в этот момент впервые почувствовал себя под линуксом комфортнее, чем под виндой. В 2018 перешёл с арча на убунту, и, разумеется, первым делом скомпилировал и установил far2l. К следующему LTS переустановлю из репозитория.

      @unxed с абсолютно заслуженным и сильно запоздалым включением в репозиторий!


  1. leongurman
    18.10.2023 14:12
    +1

    А есть шанс, что far2l когда-нибудь появится и для Red Hat?


    1. 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


    1. kruphi
      18.10.2023 14:12
      +2

      1. deseven
        18.10.2023 14:12

        Для ARM нету, к сожалению :(

        Status code: 404 for https://download.copr.fedorainfracloud.org/results/polter/far2l/epel-9-aarch64/repodata/repomd.xml


  1. rehci
    18.10.2023 14:12
    +4

    А можно список самых заметных фич, которые есть в far2l и нет в mc?


    1. mrobespierre
      18.10.2023 14:12

      Вот да, тож интересно.


      1. sabay
        18.10.2023 14:12
        +1

        Возможность открыть несколько файлов на редактирование и переключаться между ними


        1. b00
          18.10.2023 14:12

          В MC есть Screens. Внутренний редактор (и просмотрщик) с ними работают.

          Внешний редактор - нет. Но, если это редактор с панелями - он и сам умеет несколько файлов в разных панелях.


        1. mrobespierre
          18.10.2023 14:12

          Неплохо, хоть и не очень актуально для меня - я всегда внешний редактор использую.


    1. Breathe_the_pressure
      18.10.2023 14:12
      +3

      Глоток щемящей ностальгии по молодости.


    1. unwrecker
      18.10.2023 14:12
      +1

      Киллер фича - временное повышение прав. При сохранении файла, например, когда прав не хватает.


    1. unxed Автор
      18.10.2023 14:12
      +1

      Макросы, буфер обмена через ssh, привычные кнопки все (это стоило труда), куча сетевых протоколов (включая WebDAV и NFS), куда более качественная подсветка синтаксиса в редакторе, запрос повышения прав, возможности делать плагины на Питоне и Луа — это навскидку только.


      1. inetstar
        18.10.2023 14:12

        Я не понял: чтобы корректно работал через ssh нужно как-то заморачиваться с иксами?

        Второй вопрос: если сравнить с дос навигатором под линукс, то в чью пользу будет сравнение?


        1. kruphi
          18.10.2023 14:12
          +1

          Теперь уже X не обязательны. Для передачи на запущенный на удалённом компьютере far2l расширенных сочетаний клавиш и буфера обмена необходимо инициировать соединение из умеющих это клиентов. Подробнее: https://github.com/akruphi/far2l/wiki#tty-terminals


        1. unxed Автор
          18.10.2023 14:12

          Если вы запускаете команду ssh изнутри far2l, полноценно работающего на вашем десктопе — заморачиваться не надо. Если нет — зависит от терминалки, в перечисленных у меня в посте всё будет ок, в остальных надо включать x forwarding.


      1. b00
        18.10.2023 14:12

        >куча сетевых протоколов (включая WebDAV и NFS)
        Для пользователя это чем-то отличается от условного mount davfs2/nsf/cifs/etc | sshfs и работы в смонтированном каталоге любым удобным способом?


  1. titbit
    18.10.2023 14:12

    Фар всегда славился плагинами, поэтому вопрос - а планируется ли портирование плагинов из основной ветки (фар3: arclite, brackets, etc.), и возможно дополнительных плагинов других авторов? Вообще, насколько сложно портировать плагины к которым есть исходники (visren, hexitor, textconv, etc.)?


    1. unxed Автор
      18.10.2023 14:12
      +1

      Портирование сравнительно несложно, если это си/c++. Вот пример портирования простого плагина: https://github.com/unxed/far2l-EditWrap


  1. DBalashov
    18.10.2023 14:12
    +2

    И кстати far2l прекрасно работает и в WSL тоже :)


    1. unxed Автор
      18.10.2023 14:12

      Специально исправляли специфические баги, чтоб работал на отлично и там!


  1. domix32
    18.10.2023 14:12

    А поддержку запуска из терминальных мультиплексеров делать будете? tmux, zellij и прочие? Внутри них биндинги могут работать криво


    1. unxed Автор
      18.10.2023 14:12

      Более-менее работает, есть минорные проблемы под screen, и что-то вроде было не так под tmux, точно не помню. Самый частный юзкейс мультиплексоров — не терять сессию при обрыве соединения — far2l умеет и сам.


      1. domix32
        18.10.2023 14:12

        Лично сталкивался с тем что из-под zellij выход не работал по F10, ну и темы местами багуют, как впрочем и в остальных. А так основной юзкейс - несколько переключаемых рабочих пространств. Сессии без дополнительной магии выживать не будут.


        1. unxed Автор
          18.10.2023 14:12
          +2

          У нас выживают! Попробуйте по ssh подключиться, там запустить far2l, там поставить какую-то долгую операцию выполняться, а потом окошко где ssh грохнуть по kill -9. И снова по ssh подключиться и far2l запустить. Он предложит «подхватить» предыдущий инстанс, операция там не прервётся.


  1. APh
    18.10.2023 14:12

    Сам Far 2 всегда был 16-цветным, однако «фреймворк» продвинутых консольных приложений, на котором он работает в *nix, с недавнего времени поддерживает полноцветную палитру...

    А что это за «фреймворк»? Может кто ссылку или название привести?


    1. unxed Автор
      18.10.2023 14:12
      +1

      Названия нет, выбор термина условен, не знаю, как ещё назвать. Посмотрите в папке WinPort в дереве исходников far2l, это как раз оно: штука, реализующая некое подмножество консольного API Windows.


      1. ibnteo
        18.10.2023 14:12

        TrueColor называется.


  1. serge-phi
    18.10.2023 14:12

    Почему-то не работает автоповтор нажатия клавиши при работе в WSLg.


    1. unxed Автор
      18.10.2023 14:12

      В чате пишут, что починили 1 мая, может быть, в версии из ppa уже есть нужный фикс? Тикет. Если воспроизводится на свежей версии из ppa, отпишитесь там в тикете, пожалуйста!


  1. serge-phi
    18.10.2023 14:12
    +1

    Пересобрал из свежих исходников, под win 10 не работает автоповтор. В тикете отписался.


    1. unxed Автор
      18.10.2023 14:12

      Лайк! Спасибо!


  1. grinsv
    18.10.2023 14:12
    -2

    И чем оно лучше mc?