Обычно я пишу статьи об развитии проекта 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 сборку под вашу архитектуру. Если появились вопросы — приходите в чат (в основном русскоязычный), а отчёт про баг можно прислать сюда (принимаются и на русском, и на английском). А вот предыдущий выпуск новостей, если вы вдруг его пропустили.

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


  1. Breathe_the_pressure
    00.00.0000 00:00

    А в Аурах есть?


    1. MountainGoat
      00.00.0000 00:00
      +3

      А есть чего там нет?


      1. Breathe_the_pressure
        00.00.0000 00:00
        +1

        Действительно.jpg


      1. DistortNeo
        00.00.0000 00:00

        Есть то, что заброшено и не компилируется.


      1. micronull
        00.00.0000 00:00

        mattermost-qt например


    1. artko
      00.00.0000 00:00

      Есть.



  1. alex-open-plc
    00.00.0000 00:00
    -7

    # apt install far2l
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Unable to locate package far2l

    Linux npi 5.10.34-sunxi #21.05.1 SMP Thu May 6 20:13:21 UTC 2021 armv7l GNU/Linux


    1. kai3341
      00.00.0000 00:00
      +20

      Поясню автору, по какой причине этот комментарий собирает минусы

      При наличии глаз можно открыть скриншот и понять, что пакет оказался в `sid`. Также можно вспомнить, что пакеты debian перед релизом проходят стадии мягкой и жёсткой заморозок, когда завершается приём новых пакетов

      Отсюда вопрос -- как пакет, добавленный в sid, мог оказаться в замороженном stable? Логика, ты где?


    1. shibanovan
      00.00.0000 00:00
      +1

      А вы всегда так общаетесь - ни комментария, ни уточнений - просто вот кусок консоли и даже вопрос не задан, что вы хотите?

      Вы, возможно, не задумывались, но выглядит это не особо уважительно к собеседнику. Да и кроме того, это просто малоинформативно, стоит хотя бы пару словами написать что вы хотите этим сказать)


      1. kai3341
        00.00.0000 00:00
        +2

        Справедливости ради отмечу, что сказано, как любят говорить математики, "необходимо и достаточно"


        1. domix32
          00.00.0000 00:00
          +1

          Ну, на такое "необходимо и достаточно" можно со спокойной же душой отправить человека RTFMить. Ибо я после прочтения оных без особых усилий смог выполнить все те же команды на убунте из под WSL и получить результат.


          1. twr
            00.00.0000 00:00

            Годы идут, даже десятилетия, а нравы и повадки людей с постсоветского пространства не меняются, если говорить о культуре общения на форумах. Увидел вопрос, который оформлен не так, как тебе нравится? Обязательно влепи минус, отправь RTFMить или просто напиши, что "автор дурак, у меня всё сразу получилось". Но ни в коем случае не пытайся оказать реальную помощь!


            1. domix32
              00.00.0000 00:00

              Действительно, зачем читать мануалы. Там же расскажут, что ppa надо добавить, а я читать не хочу. Проще ж устроить дебаггинг в комментариях. Заодно половину мануала туда же перепечатаем.


              1. unxed Автор
                00.00.0000 00:00

                Мне кажется, тред вышел достаточно токсичный, предлагаю его свернуть :) Я, вероятно, написал не очень понятно: так, будто far2l уже в текущем Дебиане есть. Сожалею! Общаться в пренебрежительном тоне из-за этого едва ли стоит. Все ошибаются! И, да, людям лень читать инструкции, это нормально :)


  1. joedm
    00.00.0000 00:00
    +1

    На Debian 10 не запускается, вы зачем-то хотите glibc 2.34, а в 10-м 2.28. Или расскажите как пофиксить (ну кроме как пересобрать :) ), т.к. я не настоящий линуксоид.


    1. aborouhin
      00.00.0000 00:00
      +2

      +1. Я могу и собрать, и портабельную скачать, конечно но за готовый backport был бы тоже признателен, чтобы его с помощью ansible раскидать по серверам без танцев с бубном. А у меня зоопарк из убунт и чистых дебианов.


      1. aborouhin
        00.00.0000 00:00
        +2

        P.S. Набросал на коленке "танцы с бубном" для скачивания/обновления портабельной версии с помощью Ansible. Не претендую на изящество решения и отсутствие багов, но works for me :)

        Кусок плейбука
        - name: Install far2l (Debian)
          when: ansible_distribution == 'Debian'
          vars:
            far2l_url: https://github.com/unxed/far2l-deb/raw/master/portable/far2l_portable_amd64.tar.gz
            far2l_archive: "{{ far2l_url | basename }}"
            far2l_executable: far2l_portable_amd64.run
          block:
            - name: Get previously downloaded far2l checksum (if any)
              ansible.builtin.stat:
                path: "~/{{ far2l_archive }}"
                get_checksum: true
                checksum_algorithm: sha1
              register: previous_far2l_stats
            - name: Download portable far2l
              ansible.builtin.get_url:
                url: "{{ far2l_url }}"
                dest: "~/{{ far2l_archive }}"
            - name: Get newly downloaded far2l checksum
              ansible.builtin.stat:
                path: "~/{{ far2l_archive }}"
                get_checksum: true
                checksum_algorithm: sha1
              register: new_far2l_stats
            - name: Unpack and install far2l if new version was downloaded
              when: (not previous_far2l_stats.stat.exists) or
                (previous_far2l_stats.stat.checksum != new_far2l_stats.stat.checksum)
              block:
                - name: Unpack far2l
                  ansible.builtin.unarchive:
                    src: "~/{{ far2l_archive }}"
                    dest: /tmp/
                    remote_src: true
                - name: Copy far2l to /usr/local/bin/
                  become: true
                  ansible.builtin.copy:
                    src: "/tmp/{{ far2l_executable }}"
                    dest: /usr/local/bin/far2l
                    remote_src: true
                    mode: 0755
                    owner: root


        1. aborouhin
          00.00.0000 00:00
          +1

          P.P.S. С утра посмотрел на свой плейбук свежим взглядом и переписал его малость поээфективнее :)

          Более правильный кусок плейбука
          - name: Install far2l (Debian)
            when: ansible_distribution == 'Debian'
            vars:
              far2l_url: https://github.com/unxed/far2l-deb/raw/master/portable/far2l_portable_amd64.tar.gz
            block:
              - name: Download far2l portable to localhost
                delegate_to: localhost
                run_once: true
                block:
                  - name: Ensure folder for temporary artifact exists
                    ansible.builtin.file:
                      path: ~/.ansible_temp/far2l
                      state: directory
                      recurse: true
                  - name: Get previously downloaded far2l checksum (if any)
                    ansible.builtin.stat:
                      path: ~/.ansible_temp/far2l/far2l
                      get_checksum: true
                      checksum_algorithm: sha1
                    register: previous_far2l_stats
                  - name: Download and extract portable far2l
                    ansible.builtin.unarchive:
                      src: "{{ far2l_url }}"
                      dest: ~/.ansible_temp/far2l/
                      list_files: true
                      remote_src: true
                    register: far2l_download_result
                    changed_when: false
                  - name: Rename far2l executable
                    ansible.builtin.copy:
                      src: "~/.ansible_temp/far2l/{{ far2l_download_result.files[0] }}"
                      dest: ~/.ansible_temp/far2l/far2l
                      mode: 0755
                    changed_when: false
                  - name: Get newly downloaded far2l checksum
                    ansible.builtin.stat:
                      path: ~/.ansible_temp/far2l/far2l
                      get_checksum: true
                      checksum_algorithm: sha1
                    register: new_far2l_stats
                always:
                  - name: Clean up downloaded file with old name
                    ansible.builtin.file:
                      path: "~/.ansible_temp/far2l/{{ far2l_download_result.files[0] }}"
                      state: absent
                    changed_when: false
              - name: Install far2l if new version was downloaded
                when: (not previous_far2l_stats.stat.exists) or
                  (previous_far2l_stats.stat.checksum != new_far2l_stats.stat.checksum)
                become: true
                ansible.builtin.copy:
                  src: ~/.ansible_temp/far2l/far2l
                  dest: /usr/local/bin/far2l
                  mode: 0755
                  owner: root


    1. unxed Автор
      00.00.0000 00:00

      Оно и в 11 не запустится, потому что собирается пока только под sid, бекпорты ещё не делали. Надо подождать немножко или использовать portable.


  1. FMA
    00.00.0000 00:00

    Планируется ли поддержка Flatpak ?


    1. unxed Автор
      00.00.0000 00:00
      +1

      Я пробовал с ним разобраться, но как-то там всё слишком мудрёно показалось. Если есть человек с опытом в нём, я с радостью приму его консультации. Впрочем, portable версия по смыслу ничем не отличается.


  1. ITLav
    00.00.0000 00:00
    +3

    Добавил в epm концептуальную поддержку установки портабельной версии far2l:
    epm play far2l-portable


    1. unxed Автор
      00.00.0000 00:00

      Спасибо! Выложил свежие для amd64 и i386 вчера как раз.


  1. Urub
    00.00.0000 00:00

    imho, far "не развивается" в удобствах - например в mc создать хоткей на путь можно в два нажатия - на каталог, на ftp, на ssh - в фар так нельзя и как я понял и не хотят делать


    1. economist75
      00.00.0000 00:00
      +2

      Команды - Ссылки на папки


      1. Urub
        00.00.0000 00:00

        1. нет ссылок на сетевые "папки" (ftp, ssh) - это главное

        2. неудобно вызывать - не вижу хоткея


        1. DistortNeo
          00.00.0000 00:00
          +2

          1. Уже есть.
          2. Уже удобно.


          1. Urub
            00.00.0000 00:00

            1. так этоже другое окно, в нем много лишнего, например точки монтирования (они редко нужны сами по себе)

            2. и как сюда добавить адрес ftp ?


            1. DistortNeo
              00.00.0000 00:00
              +1

              1. Отображение точек монтирования можно отключить.


              2. Находясь внутри FTP, открыть это окошко и нажать Ins.



              Единственная проблема здесь: на букмарки можно назначать только цифры, а на точки монтирования — ещё и буквы.


              1. Urub
                00.00.0000 00:00
                +1

                спасибо, последний раз пользовался давно, попробую еще раз


  1. b00
    00.00.0000 00:00
    +4

    Добрый день. А есть где-то сравнение с mc (по основным возможностям хотя бы)?

    Чтобы предварительно понять, что к чему, прежде, чем ставить на пробу.


    1. economist75
      00.00.0000 00:00
      +6

      Far дефолтно красивее, цветнее, ярче, читаемей и удобнее чем MC. По функциям - у консольных файловых менеджеров с такой длинной историей +/- паритет.

      Far в Linux - один из самых эффективных способов перетащить опытного пользователя Windows - на Linux, потому что MC на Windows не взлетел, не похож на Far/Norton Commander etc и требует глубокой донастройки. Все имхо, но из большого коллектива.


    1. unwrecker
      00.00.0000 00:00
      +4

      Есть киллер фича в виде временного повышения приоритета при записи файлов на которые нет прав.


  1. Stanislavvv
    00.00.0000 00:00

    Он на чистой консоли запустится? Ибо для гуёв есть и более другие файлменеджеры.


    1. unwrecker
      00.00.0000 00:00

      Да, с ключиком --tty.

      Я не понимаю почему это не сделано по умолчанию.


      1. Stanislavvv
        00.00.0000 00:00

        Тут, скорее, автоопределение надо: есть непустой $DISPLAY - таки иксы и гуй, нет - таки консоль.
        Ну и, конечно, переключатель в настройках типа: "авто | только гуй | только консоль"


        1. DistortNeo
          00.00.0000 00:00
          +1

          Тут, скорее, автоопределение надо: есть непустой $DISPLAY — таки иксы и гуй, нет — таки консоль.

          Оно так и работает.


  1. turbidit
    00.00.0000 00:00
    +1

    Вопрос по пакету в Debian - он на сервер потянет ошметки X-ов? Если да, то хотелось бы far2l-nox пакет для этого случая.


    1. DistortNeo
      00.00.0000 00:00
      +1

      Что-то подтягивает, но вроде без особого криминала:


      apt install far2l
      root@0ac0c9a2f2d3:/# apt install far2l
      Reading package lists... Done
      Building dependency tree... Done
      Reading state information... Done
      The following additional packages will be installed:
        ca-certificates chafa dbus dbus-bin dbus-daemon dbus-session-bus-common
        dbus-system-bus-common far2l-data fontconfig fontconfig-config
        fonts-dejavu-core fonts-droid-fallback fonts-noto-mono fonts-urw-base35
        gcc-12-base ghostscript gsfonts htop imagemagick-6-common libaom3
        libapparmor1 libarchive13 libavahi-client3 libavahi-common-data
        libavahi-common3 libbrotli1 libbsd0 libc-bin libc6 libcairo-gobject2
        libcairo2 libcap2 libchafa0 libcups2 libcurl3-gnutls libdatrie1 libdav1d6
        libdbus-1-3 libde265-0 libdeflate0 libexpat1 libffi8 libfftw3-double3
        libfmt9 libfontconfig1 libfontenc1 libfreetype6 libfribidi0
        libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common
        libglib2.0-0 libglib2.0-data libgmp10 libgnutls30 libgomp1 libgraphite2-3
        libgs-common libgs10 libgs10-common libharfbuzz0b libheif1 libice6 libicu72
        libidn12 libijs-0.35 libjansson4 libjbig0 libjbig2dec0 libjpeg62-turbo
        liblcms2-2 libldap-2.5-0 libldap-common libldb2 liblerc4 liblmdb0 liblqr-1-0
        libltdl7 libmagickcore-6.q16-6 libmagickwand-6.q16-6 libmd0 libneon27
        libnfs13 libnghttp2-14 libnl-3-200 libnl-genl-3-200 libnuma1 libopenjp2-7
        libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpaper-utils
        libpaper1 libpixman-1-0 libpng16-16 libpopt0 libpsl5 librsvg2-2
        librsvg2-common librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db
        libsm6 libsmbclient libssh-4 libssh2-1 libssl3 libstdc++6 libtalloc2 libtdb1
        libtevent0 libthai-data libthai0 libtiff6 libuchardet0 libwbclient0 libwebp7
        libwebpdemux2 libwebpmux3 libx11-6 libx11-data libx265-199 libxau6
        libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxerces-c3.2 libxext6 libxi6
        libxml2 libxrender1 libxt6 libzstd1 openssl poppler-data publicsuffix
        samba-libs sensible-utils shared-mime-info ucf x11-common xdg-user-dirs
        xfonts-encodings xfonts-utils
      Suggested packages:
        default-dbus-session-bus | dbus-session-bus fonts-noto fonts-freefont-otf
        | fonts-freefont-ttf fonts-texgyre lm-sensors lsof strace lrzip glibc-doc
        libc-l10n locales libnss-nis libnss-nisplus cups-common libfftw3-bin
        libfftw3-dev low-memory-monitor gnutls-bin liblcms2-utils
        libmagickcore-6.q16-6-extra librsvg2-bin libsasl2-modules-gssapi-mit
        | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp
        libsasl2-modules-sql poppler-utils fonts-japanese-mincho
        | fonts-ipafont-mincho fonts-japanese-gothic | fonts-ipafont-gothic
        fonts-arphic-ukai fonts-arphic-uming fonts-nanum
      Recommended packages:
        manpages
      The following NEW packages will be installed:
        ca-certificates chafa dbus dbus-bin dbus-daemon dbus-session-bus-common
        dbus-system-bus-common far2l far2l-data fontconfig fontconfig-config
        fonts-dejavu-core fonts-droid-fallback fonts-noto-mono fonts-urw-base35
        gcc-12-base ghostscript gsfonts htop imagemagick-6-common libaom3
        libapparmor1 libarchive13 libavahi-client3 libavahi-common-data
        libavahi-common3 libbrotli1 libbsd0 libcairo-gobject2 libcairo2 libcap2
        libchafa0 libcups2 libcurl3-gnutls libdatrie1 libdav1d6 libdbus-1-3
        libde265-0 libdeflate0 libexpat1 libffi8 libfftw3-double3 libfmt9
        libfontconfig1 libfontenc1 libfreetype6 libfribidi0 libgdk-pixbuf-2.0-0
        libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libglib2.0-0 libglib2.0-data
        libgomp1 libgraphite2-3 libgs-common libgs10 libgs10-common libharfbuzz0b
        libheif1 libice6 libicu72 libidn12 libijs-0.35 libjansson4 libjbig0
        libjbig2dec0 libjpeg62-turbo liblcms2-2 libldap-2.5-0 libldap-common libldb2
        liblerc4 liblmdb0 liblqr-1-0 libltdl7 libmagickcore-6.q16-6
        libmagickwand-6.q16-6 libmd0 libneon27 libnfs13 libnghttp2-14 libnl-3-200
        libnl-genl-3-200 libnuma1 libopenjp2-7 libpango-1.0-0 libpangocairo-1.0-0
        libpangoft2-1.0-0 libpaper-utils libpaper1 libpixman-1-0 libpng16-16
        libpopt0 libpsl5 librsvg2-2 librsvg2-common librtmp1 libsasl2-2
        libsasl2-modules libsasl2-modules-db libsm6 libsmbclient libssh-4 libssh2-1
        libssl3 libtalloc2 libtdb1 libtevent0 libthai-data libthai0 libtiff6
        libuchardet0 libwbclient0 libwebp7 libwebpdemux2 libwebpmux3 libx11-6
        libx11-data libx265-199 libxau6 libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6
        libxerces-c3.2 libxext6 libxi6 libxml2 libxrender1 libxt6 openssl
        poppler-data publicsuffix samba-libs sensible-utils shared-mime-info ucf
        x11-common xdg-user-dirs xfonts-encodings xfonts-utils
      The following packages will be upgraded:
        libc-bin libc6 libgmp10 libgnutls30 libstdc++6 libzstd1
      6 upgraded, 141 newly installed, 0 to remove and 88 not upgraded.
      Need to get 77.8 MB of archives.
      After this operation, 271 MB of additional disk space will be used.
      Do you want to continue? [Y/n]


      1. turbidit
        00.00.0000 00:00
        +1

        Что-то многовато зависимостей - будет жирно для всяких Armbian на слабеньких платах. Было бы здорово иметь nox-пакет (такие есть для emacs, vim, qbittorrent).


        1. DistortNeo
          00.00.0000 00:00
          +1

          Как я понимаю, львиная доля зависимостей — это работа с юникодом (libicu), поддержка работы с архивами, работа с множеством сетевых протоколов, поддержка множества форматов изображений и видео (вывод в виде текстовой псевдографики через chafa). Вот последние свистоперделки точно надо делать опциональными.


          1. Stanislavvv
            00.00.0000 00:00

            Судя по инфе из дебиана - реальных зависимостей там немного. Остальное подтягивается по Recommends, причём не от этого пакета.


      1. Stanislavvv
        00.00.0000 00:00

        --no-install-recommends надо бы


        1. DistortNeo
          00.00.0000 00:00

          Не сильно помогло
          root@a532ad7ddd9e:/# apt install far2l --no-install-recommends
          Reading package lists... Done
          Building dependency tree... Done
          Reading state information... Done
          The following additional packages will be installed:
            chafa far2l-data fontconfig fontconfig-config fonts-dejavu-core gcc-12-base htop imagemagick-6-common libaom3 libarchive13 libavahi-client3 libavahi-common-data libavahi-common3
            libbrotli1 libbsd0 libc-bin libc6 libcairo-gobject2 libcairo2 libcap2 libchafa0 libcurl3-gnutls libdatrie1 libdav1d6 libdbus-1-3 libde265-0 libdeflate0 libexpat1 libffi8
            libfftw3-double3 libfmt9 libfontconfig1 libfreetype6 libfribidi0 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-common libglib2.0-0 libgmp10 libgnutls30 libgomp1 libgraphite2-3 libharfbuzz0b
            libheif1 libicu72 libjansson4 libjbig0 libjpeg62-turbo liblcms2-2 libldap-2.5-0 libldb2 liblerc4 liblmdb0 liblqr-1-0 libltdl7 libmagickcore-6.q16-6 libmagickwand-6.q16-6 libmd0
            libneon27 libnfs13 libnghttp2-14 libnl-3-200 libnl-genl-3-200 libnuma1 libopenjp2-7 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libpng16-16 libpopt0 libpsl5
            librsvg2-2 librtmp1 libsasl2-2 libsasl2-modules-db libsmbclient libssh-4 libssh2-1 libssl3 libstdc++6 libtalloc2 libtdb1 libtevent0 libthai-data libthai0 libtiff6 libuchardet0
            libwbclient0 libwebp7 libwebpdemux2 libwebpmux3 libx11-6 libx11-data libx265-199 libxau6 libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxerces-c3.2 libxext6 libxi6 libxml2
            libxrender1 libzstd1 samba-libs shared-mime-info
          Suggested packages:
            lm-sensors lsof strace lrzip glibc-doc libc-l10n locales libnss-nis libnss-nisplus libfftw3-bin libfftw3-dev low-memory-monitor gnutls-bin liblcms2-utils libmagickcore-6.q16-6-extra
            librsvg2-bin
          Recommended packages:
            manpages ca-certificates dbus libgdk-pixbuf2.0-bin libglib2.0-data xdg-user-dirs libldap-common ghostscript gsfonts publicsuffix librsvg2-common libsasl2-modules
          The following NEW packages will be installed:
            chafa far2l far2l-data fontconfig fontconfig-config fonts-dejavu-core gcc-12-base htop imagemagick-6-common libaom3 libarchive13 libavahi-client3 libavahi-common-data
            libavahi-common3 libbrotli1 libbsd0 libcairo-gobject2 libcairo2 libcap2 libchafa0 libcurl3-gnutls libdatrie1 libdav1d6 libdbus-1-3 libde265-0 libdeflate0 libexpat1 libffi8
            libfftw3-double3 libfmt9 libfontconfig1 libfreetype6 libfribidi0 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-common libglib2.0-0 libgomp1 libgraphite2-3 libharfbuzz0b libheif1 libicu72
            libjansson4 libjbig0 libjpeg62-turbo liblcms2-2 libldap-2.5-0 libldb2 liblerc4 liblmdb0 liblqr-1-0 libltdl7 libmagickcore-6.q16-6 libmagickwand-6.q16-6 libmd0 libneon27 libnfs13
            libnghttp2-14 libnl-3-200 libnl-genl-3-200 libnuma1 libopenjp2-7 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libpng16-16 libpopt0 libpsl5 librsvg2-2 librtmp1
            libsasl2-2 libsasl2-modules-db libsmbclient libssh-4 libssh2-1 libssl3 libtalloc2 libtdb1 libtevent0 libthai-data libthai0 libtiff6 libuchardet0 libwbclient0 libwebp7 libwebpdemux2
            libwebpmux3 libx11-6 libx11-data libx265-199 libxau6 libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxerces-c3.2 libxext6 libxi6 libxml2 libxrender1 samba-libs shared-mime-info
          The following packages will be upgraded:
            libc-bin libc6 libgmp10 libgnutls30 libstdc++6 libzstd1
          6 upgraded, 102 newly installed, 0 to remove and 88 not upgraded.
          Need to get 54.5 MB of archives.
          After this operation, 189 MB of additional disk space will be used.


          1. Stanislavvv
            00.00.0000 00:00

            5 раз по объёму - это таки достаточно сильно, на мой взгляд. Теперь тут только библиотеки, а не ещё и куча шрифтов с сервисами.


            1. DistortNeo
              00.00.0000 00:00

              5 раз по объёму

              189M против 271M — где тут 5 раз?


              Теперь тут только библиотеки, а не ещё и куча шрифтов с сервисами.

              Ага, fonts-dejavu-core и куча либ для работы с изображениями и видео никуда не делись.


              1. Stanislavvv
                00.00.0000 00:00

                Про объём наврал, не на те цифры смотрел...
                Вероятно, стоит сравнить тогда с другими гуёвыми двухпанельниками, например krusader или double commander
                В моём случае сравнить не получится - под рукой только stable и уже с гуями - бОльшая часть требуемого уже установлена.

                У меня почему-то подозрения, что они будут требовать меньше и при этом ещё и будут работать со всякими vfs, предлагаемыми соответствующими DE (krusader точно умеет использовать плагины kio).


                1. unxed Автор
                  00.00.0000 00:00

                  Можно почти без зависимостей поставить, если вам важна компактность! Насчёт VFS — есть плагин-обвязка вокруг GVFS, можно и под KIO переделать, но пока такого запроса ни у кого не было, потому что встроенный плагин NetRocks умеет практически всё.


                  1. Stanislavvv
                    00.00.0000 00:00
                    +1

                    В плане компактности мне важно не тянуть лишнее при установке на сервер без иксов из репозиториев. Не собирать специально под сервер (если дойдёт до этого - забью, см. дальше про преимущества), не брать бинарник хз откуда, а поставить из репозиториев, которым доверяю (обычно это либо дистрибутивные, либо свои). Судя по тому, как и что тянется в примере установки выше по треду - это не для серверов, а для десктопа, где есть давно существующие альтернативы.

                    Вобщем, лично мне непонятна целевая аудитория для линуксового far. Под windows far прижился хорошо, ест мало, работает быстро.

                    На линуксовом сервере для far есть следующие проблемы:
                    1) far хочет много библиотек, которые хочет только он. Проблема тут не в месте на диске, а в дополнительных уязвимостях и необходимости обновлять ещё и их.
                    2) far требует идеально настроенного терминала, а лучше — чтоб терминал был под него пропатчен. То есть, под screen будут проблемы, а в случае слегка кривого терминала есть вероятность, что ни сохранить отредактированное, ни даже корректно выйти из файлменеджера может не получиться. В том же mc есть как возможность обучить нестандартным настройкам F-клавиш, так и альтернативные хоткеи (esc-0 вместо F10).
                    Безотносительно far - мне лично неудобен putty. Я им пользовался только под виндой и только из-за того, что альтернативы были ещё хуже. Практически любой современный линуксовый терминал с табами удобнее. Единственное преимущество putty — возможность настроить F-клавиши для извращённого софта, типа банковского, который ещё и в cp866 работает.

                    На линусовом десктопе из преимуществ вижу только внешний вид и поведение для тех, кто привык к far под windows. Остальные преимущества для меня скрыты туманом — как файлмендежер фар не выделяется, редактор для скриптов лучше какой-нибудь geany или вообще vim.


                    1. unxed Автор
                      00.00.0000 00:00
                      +1

                      Это немного из серии «не читал, но осуждаю». Никаких проблем с хоткеями, кроме экзотических (типа Ctrl+цифры) ни в каких терминалах, кроме ванильной путти, нет. А в ванильной путти в любом консольном приложении с хоткеями всё плохо, это не специфическая для far2l проблема. Под screen работает, хотя на практике не нужно — far2l сам себе терминальный мультиплексор (Ctrl+Alt+Z кидает текущий far2l вместе с выполняющейся в его терминале задачей в фон, восстановить можно запуском нового far2l --tty, он предложит). Зависимости мешают — ставьте из ppa чисто консольный или используйте portable. Не доверяете ppa или portable? Дождитесь следующего дебиана или осенней убунты, появится в местных репозиториях. Уязвимости в библиотеках? far2l сетевые порты не слушает, кто и как будет их эксплуатировать? Хочется гонять в любимом терминале? Гоняйте себе! Хочется гонять в любимом терминале и чтоб ещё более комфортный UX был? Используйте ttyxi или portable far2l на десктопе, из-под него ssh на сервер, там ставите чисто консольный far2l (вообще никаких иксовых либ не надо), «внутренний» far2l «договорится» с внешним с помощью хитрых escape последовательностей, и UX удалённого консольного far2l будет такой же, как у локального: и кнопки все будут работать, и буфер обмена.

                      Перечисленные вами проблемы действительно были актуальны в своё время, но давно решены уже.


    1. unxed Автор
      00.00.0000 00:00
      +1

      У far2l три бекенда отрисовки:

      • GUI — на базе wxWidgets, работает в графическом режиме, идеальный UX, куча зависимостей

      • TTYXI — работает в консоли, зависимости буквально от пары иксовых либ (для поддержки всех-всех сочетаний клавиш и буфера обмена), почти идеальный UX

      • TTY — чистая консоль, никаких иксовых зависимостей, UX с некоторыми ограничениями

      В дебиан пошёл второй вариант, в portable тоже он.

      При сборке вручную -DUSEWX=no отключает сборку GUI бекенда. Если wxWidgets не установлены, тоже будет собираться без него. Будет ли собираться модуль ttyxi, зависит от наличия в системе пакетов libx11-dev и libxi-dev. TTY версия собирается всегда.

      При установке из ppa пакеты называются так:

      far2l — базовая версия, только TTY бекенд

      far2l-ttyx — отдельно бекенд TTYXI

      far2l-gui — отдельно бекенд GUI


  1. unreal_undead2
    00.00.0000 00:00

    Как из под putty во встроенном редакторе cut/paste использовать?


    1. unxed Автор
      00.00.0000 00:00

      Из ванильной, боюсь, никак. Нужна специальная версия putty или kitty.


  1. marshallab
    00.00.0000 00:00
    +3

    теперь можно снова пробовать полностью перейти на линукс систему


  1. yftul
    00.00.0000 00:00

    Эх, кто бы еще Дос Навигатор портировал...


    1. unxed Автор
      00.00.0000 00:00

      Я пробовал. Дошёл до стадии «запускается и пытается отрисовать интерфейс». Но DN гвоздям прибит к устаревшему компилятору и проприетарной паскалевской версии Turbo Vision. Чтоб сделать лицензионно чистую версию, надо на Free Vision его пересаживать, а это пока слишком утомительным кажется для just for fun. Разве что если командой делать.


    1. titbit
      00.00.0000 00:00

      Попробуйте NDN (ndn.muxe.com), он есть под кучу платформ, включая linux.


      1. yftul
        00.00.0000 00:00

        Чёт к некроманту не легла душа


  1. turbidit
    00.00.0000 00:00

    Еще такое замечание. В настройках редактора можно определить альтернативный редактор, например:

    vim !.!
    

    И хоткей там обозначен для альтернативного редактора как Alt-F4. Итог немного предсказуем. Методом тыка обнаружил что рабочий вариант - Alt-Win-F4. Но это очень неочевидно.