Pull to refresh

Comments 89

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

# 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

скажу за Ивана - нет. flatpak для десктопных приложений.

а вот в snap можно было бы добавить.

Ну почему же? Чисто гуёвый вариант - вполне себе десктопное приложение.

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

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

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

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

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

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

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

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


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



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

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

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

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

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

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

Подскажите, пожалуйста, "опытному пользователю Windows", отчего far2l, даже будучи запущен из-под putty4far2l, выглядит так:


image


(я имею в виду буковки "Б", и прочее непотребство вместо рамочек...)

В настройках в Translation в Remote character set выберите UTF-8.

Выбрал. И даже потыкал все чекбоксы и селекторы на странице Translation — ничего не помогает :(

Любопытно! У меня такое воспроизводится, когда на вкладке Translation стоит KOI8-R. Даже не знаю, куда тикет писать — в оригинальную putty (т.к. я в своём форке ничего связанного с кодировками не менял) или в far2l. Видимо, надо и туда и туда.

Разобрался. Нужно, помимо UTF-8, выбрать правильный шрифт. Courier (просто) — отображает мусор, а Courier New и Lucida Console рисуют замечательные рамочки.

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

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

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

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

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

Не хватает настраиваемой опции: для интерактивной консоли (Konsole, xterm) форсировать --tty тоже. Ну или враппить самостоятельно через alias или ещё как-то:

tty -s && far2l --tty "$@" || far2l "$@"

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

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


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]

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

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

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

Не сильно помогло
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.

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

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

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


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

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

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

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

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

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

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

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

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

Это немного из серии «не читал, но осуждаю». Никаких проблем с хоткеями, кроме экзотических (типа 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 будет такой же, как у локального: и кнопки все будут работать, и буфер обмена.

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

Про ванильную putty - у меня работали все хоткеи, которые я использовал в других более-менее распространённых гуёвых терминалах. Либо у far есть другие хоткеи, которые действительно не укладываются в бОльшую часть terminfo, либо кто-то не умеет настраивать putty. Неудобство putty в моём случае было не связано с тем, как обрабатываются хоткеи, а с его многооконностью в случае работы с несколькими хостами.

Про терминальный мультиплексор подробней. Захожу я по ssh на хост, где запускаю screen и в нём десяток-полтора окон с другими ssh уже на целевые серверы с целью продолжить работу, если связь разорвалась. Делаю работу, запускаю длительные задачи (не связанные с ручной работой с файлами и запускаемые уже внутри вторичных сессий ssh), могу запустить ещё сессию ssh из другого места и отобрать screen, могу разделить окно на несколько при помощи C-a | или C-a S для случая, когда требуется наблюдать несколько процессов и отключиться от консоли, чтобы уже в другом месте подключиться. Что из этого может far для случая удалённой консоли?

Как-то хреново с документацией на гитхабе у far2l, чтобы понимать, что именно он может и накой он вообще нужен сейчас, а не 15-20 лет назад? Тут и mc-то не слишком используется уже, разве что mcedit я запускаю более-менее часто.

У Far действительно много сложных хоткеев. А как именно вы настраиваете putty? Что и где там надо прописать, чтобы, скажем, выделение в mcedit по shift-стрелкам заработало?

Про частичную замену screen. Если у вас какая-то задачка выполняется во встроенном терминале far2l, в случае обрыва связи процесс не прервётся, а продолжит выполняться в фоне. При повторном запуске на том же хосте far2l спросит: подхватить фоновый процесс (если их несколько, он даст выбрать из списка), или запустить новый? Можно и вручную кидать долгие задачки в фон, нажимая Ctrl+Alt+Z во встроенном терминале far2l во время их выполнения. А вот нескольких окон с отдельными процессами — такого [пока?] нет.

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

Оставление фонового процесса при удалённой работе — отказать сразу, если это по-умолчанию и особенно, если это не конфигурируется. Либо я явно должен указать, что процесс должен остаться, либо при закрытии окна задача также должна завершаться. Опция, позволяющая не оставлять процесс живым - не то, что ожидается от обычных приложений, коим для меня является файлменеджер. Согласен на опцию "остаться в памяти при обрыве", но предпочту всё же screen.

Фоновые процессы что в чистом bash (Ctrl-Z + bg), что в far2l — хреновая замена окнам screen или табам нормального терминала. Зачастую требуется посмотреть выхлоп или сравнить результаты, что лучше делать всё же в разных окнах, тем более, что по результатам обычно следуют какие-то действия на хостах, где запускались эти длительные процессы.

Хоткеи: где-то есть полный список? (см. "Документация?") Их где-то можно переопределить? А то в WM/DE может быть что-нибудь настроено, в частности Ctrl-Alt-Z у меня когда-то было аналогом Win-D во времена, когда ещё были клавиатуры без кнопки Win и, подозреваю, что-нибудь ещё точно пересечётся.

Документация? Есть что-то на неё похожее, не встроенный хелп и не куцее wiki на гитхабе? Встроенный хелп - это подсказка, её нормально не почитать без запуска far2l, а хотелось бы хотя бы на предмет "что вообще оно может и нужно ли оно?".

Мысли вслух: опять делается очередной комбайн путём засовывания уже существующего отдельного в одно приложение, на этот раз на базе файлменеджера. До emacs всё равно не дотянет, тот умел работать, если его запустить вместо wm (наблюдал у товарища лично в начале века, был весьма впечатлён, но всё же жить в emacs - это перебор).

Если по умолчанию отправка в фон при обрыве соединения вам мешает, запускайте с ключём --mortal

screen и табы любимого терминала вам никто, собственно, использовать и не запрещает, если удобно.

Про документацию. Вы же знаете, как работает опенсорс :) Если вам не хватает документации за пределами встроенной справки — напишите и отправьте Pull Request!

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

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

Кстати о линуксовых терминалах с табами. Вы в качестве такового, случаем, не kitty ли используете?

Нет и вряд ли буду, ибо мне не нужны его фичи:

- меня устраивает производительность lxterminal и tilda, тем более, они точно заработают при кривых драйверах видеокарты или через x2go, т.е. без GPU, а что будет с kitty - хз, может даже и не заработать, если драйвера основательно покривились.
- не требуется truecolor для каждой буквы — не смотрю кино через libcaca.
- не требуется показ изображений непременно в терминале, эффектно, но сейчас бесполезно. Реально было актуально примерно лет 30 назад и даже использовалось в работе за неимением другой графики, я это даже застал уже в этом веке в каком-то телнете под дос и не вижу смысла делать такие приложения при наличии гуя, а вне гуя нынешние терминалы не работают (ибо не терминалы, а эмуляторы терминалов). Совместимого же ПО, которое ещё и имеет смысл использовать, с тех времён вряд ли осталось.
- не вижу смысла в управлении окнами внутри терминала, если уже есть работающий wm/de. Исключение - screen, как дающий возможность работать из мест, где открыть более одного терминала не выйдет, но там либо не линукс, либо особенности канала связи, но чаще - это способ либо сохранить набор открытых терминалов при обрыве связи/выключении питания рабочего места или способ передать набор терминалов в другое место.

Кстати, несколько терминалов на одном экране одновременно, а не во вкладках у меня увидеть сложно - практически нет задач, чтобы смотреть сразу в несколько мест, т.е. 99.5% времени у меня окно терминала с табами развёрнуто на весь экран. Где-то 0.5% времени - сверху спускается tilda, там обычно локальные короткие задачи без хождения за три ssh. Ну и пару раз в год, получается пара-тройка терминалов одновременно на время задачи, при которой, к примеру, непременно надо нажать enter вручную при завершении другой задачи на другом хосте (пример высосан из пальца, так как я не помню, накой мне надо было смотреть на два терминала в прошлый раз).

У 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

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

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

Я тоже долго страдал без Far, а потом попробовал nnn и втянулся.

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

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

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

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

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

vim !.!

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

Кстати о mc: чтобы добавить в него какой-нибудь экзотический вид архивов или vfs - понадобится сделать скрипт на любом удобном языке, запускаемом в ОС. В частности, работа с .rpm как с архивами сделана на /bin/sh, работа с .deb - на perl, работа с s3 - на python, причём это довольно давно так — пиши на чём угодно, лишь бы были реализованы соответствующие команды.

Что-то подобное можно сделать для far2l? Я, конечно, видел упоминание python в исходниках, но с налёту не понял, куда он применим, документации на эту тему не нашел, к тому же, для простых вещей скрипт на шелле зачастую проще скрипта на python.

Да, через шелл можно сделать довольно простую интеграцию, однако, сразу вылезают вопросы:


  1. Как получить список файлов в архиве? Если используется внешная тулза, то она должна будет выдавать список в строго определённом формате. Учитывая, что каждый архиватор имеет свой формат вывода, в любом случае придётся писать код, преобразующий формат.


  2. Как прочитать содержимое архива целиком, не распаковывая его во временную директорию? Типичный сценарий: поиск по содержимому архива. Внешний скрипт должен преобразовывать архив во что-то простое типа tar.


Это всё работает через файл настроек custom.ini плагина multiarc. Так открывается куча форматов, от MSI до образов SQUASHFS.

Для любой внешней тулзы пишется обёртка на удобном языке программирования, в которой и делается список файлов и т.п. В случае mc - уже написано какое-то количество.

Экзотический формат архивов можно добавить через редактирование файла настроек custom.ini плагина multiarc. VFS через скрипты — хорошая идея, предложите в багтрекере! Можно по-русски, если с английским сложно.

забавно, как раз на днях нашел его в репозитории Альтлинукса :)

пришлось отказаться от использования libunrar в пользу обвязки вокруг отдельной утилиты командной строки — опять же из-за лицензионных ограничений
Но ведь это ухудшает производительность, не так ли? Не рассматривали вариант перейти на libarchive? Она уже довольно давно и лицензионно чисто умеет в RAR.

libarchive в far2l поддерживается, а вот поддержка rar там довольно ограниченная.

Заметил проблему со встроенным редактором.

При открытии файлов с расширением nsi (nullsoft install system), некоторые строки файла, содержащие несколько строковых констант в кавычках, обрезаются. И после сохранения файла он становится непригодным для компиляции.

Наблюдал это в Астре, может быть и в других системах так же.

О, это серьёзная штука, надо багрепорт писать срочно (и образец файлика приложить):
https://github.com/elfmz/far2l/issues

Можно и на английском и на русском, как вам проще.

Sign up to leave a comment.

Articles