Консольная версия
Первый же вопрос, который все задавали и здесь, и на опеннете, и на лоре — а чего не в консоли? Изначально far2l действительно работал только в графическом режиме, через wxWidgets. Это оказалось самым простым способом быстро получить работающий порт со всеми пользовательскими удобствами: иксовым буфером обмена и всеми сочетаниями клавиш, причем с поддержкой событий не только KeyDown, но и KeyUp.
Сейчас это ограничение в прошлом: far2l прекрасно себя чувствует в консоли. Более того, там появились так называемые расширения терминала far2l, поэтому если запускать консольный far2l внутри графического (например, зайдя куда-нибудь по ssh), они «сконнектятся» между собой, и внутренний far2l тоже будет видеть и буфер обмена (с разрешения пользователя, конечно), и все возможные горячие клавиши. Более того, сделана даже специальная сборка putty, позволяющая наслаждаться всеми этими фишками из Windows.
Вот, смотрите, это far2l в GNOME Terminal
А вот в putty
Русские буквы в .zip'ах «с винды»
Вы не поверите, но Windows, вплоть, как минимум, до семерки создавала .zip архивы, записывая туда имена файлов в OEM (DOS) кодировке! Совместимость страшная штука. В итоге StackOverflow переполнен вопросами «как мне правильно распаковать зип с кракозябрами».
В far2l мы это починили. В процессе родилась демонстрационная утилитка, которая показывает, как правильно работать с кодировками в .zip'ах, чтобы «кракозябров» не было (пригодится авторам архиваторов), а также патчик к p7zip, применяющий аналогичный алгоритм. p7zip-с-патчиком даже запакован в .deb'ку (ubuntu 20.04+, amd64), установка которой чинит поддержку зипов, например, в Engrampa, используемом в MATE.
Приведение в порядок зависимостей
Изначально порт нёс в себе кучу кода библиотек, и так присутствующих в мире Linux в системных пакетах: pcre, minizip, universal charset detector. Сейчас всё это заменено на грамотное использование зависимостей: системные библиотеки используются везде, где это возможно (исключение: 7z и unrar, там статически компилируются самые свежие библиотеки для поддержки самых свежих особенностей форматов).
Человеческая поддержка .tar.gz
Плагин multiarc, который используется в far2l для доступа к архивам, приехал к нам из мира Windows, и не умел воспринимать .tar.gz как один архив. Он видел .gz, и внутри него .tar. Следовательно, чтобы получить список файлов, приходилось делать полную распаковку. Такой себе экспириенс. За последний месяц multiarc был существенно доработан, и эта проблема исчезла.
Красивое консольное окно
В графической версии far2l была проблема: символы рисования рамок показывались раздражающим «пунктиром».
У нас долго не получалось найти причину или подобрать настройки рендеринга, исправляющие этот бесячий баг, пока я не заглянул в исходники терминалок из GNOME и KDE. А там, оказывается, давным-давно символы рисования рамок рендерятся не из шрифта, а вручную, чтобы линии четкие и красивые получались.
В итоге сделали так же в far2l, только немножко лучше: добавив сглаживание. А то в терминалах KDE и GNOME максимально контрастные линии слишком сильно отвлекают на себя внимание рядом со сглаженным текстом.
В процессе пришлось разобраться в психовизуальных нюансах антиалиасинга, отлавливая несуществующие «слишком яркие пиксели», которые упорно видели глаза. Подробности.
Пакеты для дистрибутивов
В репозитории многих дистрибутивов мы пока не попали (а в некоторые уже попали!). Зато давно есть пакеты во всех основных форматах. Даже скрипт сборки для Amazon Linux есть! Ну и, конечно, есть ppa для *buntu — самый удобный способ «просто поставить фар» для большинства пользователей.
Свежий Colorer
far2l «форкнулся» от ветки Far 2, так что некоторые плагины там требовали срочного обновления. Недавно такое обновление было проведено: обновили код распаковки 7z и unrar, а также схемы цветовой подсветки синтаксиса Colorer. Остальные портированные плагины не содержат каких-то регулярно обновляющихся штук, а вот старые «раскраски» и не открывающиеся новые архивы были реальной проблемой. Всё, её больше нет!
NetBoxRocks
Это был второй вопрос, который обычно задавали в каментах: «а нетбоооокс буууудеееет?». Нет, нетбокса не будет! Там putty внутри, и тащить в far2l её linux-версию показалось странной затеей. Да и сам код netbox'а не слишком располагал к портированию.
Поэтому автор порта, великолепный elfmz, сделал свою версию сетевого плагина: NetRocks. Там есть всё, что только может понадобиться — и ftp[s], и scp, и sftp, и nfs, и webdav, и даже samba! Всё работает на нативных линуксовых библиотеках. В sftp можно даже удаленные команды запускать и в удаленную консоль ходить.
А ещё в NetRocks есть псевдо-сетевой плагин file, который позволяет работать с локальной файловой системой. Зачем? Потому что NetRocks умеет в фоновые операции. А обычное копирование файлов Far — не умеет.
А как там вообще с плагинами?
Помимо NetRocks, в комплекте есть:
colorer (подсветка синтаксиса, свежий!)
multiarc (работа с архивами, доработанный, свежие архиваторы!)
tmppanel (временная панель)
align block (форматирование блоков для редактора)
autowrap (автоперенос слов в редакторе)
drawline (рисование линий в редакторе)
editcase (конвертация регистра в редакторе)
SimpleIndent (работа с отступами в редакторе)
compare (продвинутая версия «сравнения папок»)
editor autocomplete (автодополнение в редакторе)
filecase (конвертация регистра имен файлов)
incremental search («быстрый поиск» в редакторе)
inside (показывает, что внутри ELF и некоторых других форматов)
и даже плагин для написания других плагинов на Python!
Есть парочка сторонних, far2-gvfs и far2l-fuse, но после появления NetRocks они в некоторой степени утратили актуальность.
В общем, базовый набор для комфортной работы с локальными и удаленными файлами и архивами, а также написания кода прямо в редакторе far2l — имеется :)
А со стабильностью как? Когда релиз уже?
Со стабильностью всё хорошо: за 4 года использования в работе (webdev + всякое офисное) ни одной потери данных с far2l я не «поймал». Автор порта готов понемножку менять статус с альфы на бету, если в течении месяца-двух не вылезет критических ошибок. Тогда можно будет подумать об отправке пакетов в репозитории дистрибутивов, например.
Bonus #1. А там правда Wine под капотом?
Отчасти :) Из Wine были вытащены некоторые кусочки трансляции WinApi в нативный API Linux (конвертация кодировок, например; к слову, этот кусок недавно попробовали переписать на iconv, но выяснилось, что код из Wine делает то же самое в 4 раза быстрее). Со временем обращения к этим функциям, разбросанные по всему коду far2l, можно будет понемножку заменять на прямые вызовы нативных функций. А пока и эта конструкция работает очень даже быстро (самое медленное, на чём пробовали запускать — raspberry pi, полет нормальный) и вполне надежно.
Bonus #2. Хватит фигней страдать, консоль учите, дурни!
За время работы над far2l (тестировщиком, а ещё иногда нехитрые патчи шлю) я узнал о линуксовой консоли больше, чем за всю жизнь до этого :) А ещё понемногу осваиваю си, на которых кодить со времен института не приходилось — повода не было (заодно, кстати, перешел на «ты» с git). Так что ждите скоро статью «как веб-макака си на опенсорсе учила»!
Bonus #3. А нескучные обои имеются?
Несколько лет назад я бы скорее посмеялся над этим вопросом. Но да, если целый день смотреть в синий цвет, становится как-то не по себе (и прямо чувствуешь, как отрастает борода и свитер с оленями). Поэтому в итоге сделал себе раскраску в духе Monokai, ну и выложил для всех, конечно. У нас opensource ведь.
Bonus #4. А на маке взлетит?
Взлетит. Половину тикетов в багтрекер с маков пишут. И да, на BSD работает тоже.
Aspos
Это ж праздник какой-то!
А куда донат заносить?
unxed Автор
Если запускать графическую версию — да, все, ВООБЩЕ ВСЕ, прямо как в родном. Если консольную — есть небольшие ограничения, сходу могу вспомнить только одно, Ctrl+цифры не работают (кажется, для этой проблемы есть workaround). Но если консольная запущена внутри графической (ну то есть запустили графический far2l, в нем сделали ssh example.com, а там уже запустили консольный far2l), все ограничения отменяются благодаря чудесным собственным расширениям терминала.
А, да, если Alt+русская_буква не срабатывает, надо собрать с wx3.1 — это в апстриме баг, он исправлен уже, но в дистрибутивах старые wx'ы.
kritikanstvo
Вот бы еще оригинальный FAR из под Windows это умел. Если через SSH, то какая разница какова операционная система у внешнего (первого) FAR…
unxed Автор
Этот момент в соседней ветке обсуждаем
unxed Автор
> А куда донат заносить?
Автор пока по непонятной причине от этой темы уклоняется, можно выразить желание поддержать его донейтом вот здесь github.com/elfmz/far2l/issues/215
XeRx0
Он справедливо уклоняется, тема скользкая, так как неизбежно найдутся желающие громко упрекать в коммерции и вымогательствах. лично я закину и буду закидывать, но никого ни к чему не призываю
unxed Автор
А куда закидывать-то? Он реквизиты не постит же.
Ну и вообще это странная история — отказываться от донейтов, потому что хейтеры что-то плохое скажут. Они в любом случае плохое скажут, они хейтеры, нельзя строить свою политику на попытке угодить им.
XeRx0
я вроде видел только что страницу где предлагается донатить,
на ГитХабе же есть стандартные переводы денех, не? — вроде то что я и видел, вникнуть не было возможности,… собственно вот, вытащил из истории посещений:
liberapay.com/on/github/elfmz
это что?
«странная история — отказываться от донейтов, потому что хейтеры что-то плохое скажут»
у меня нет точного ответа, но проблема что хейтерам может кто-то поверить, лично я, если бы был в схожей ситуации, думаю что не стал бы инициировать переводы в свою пользу, но может и стал бы, хотя бы чисто из любопытства. а так — несущественная эта тема, и исход конечно несущественнен, — что на донатах еще никто не разбогател это 100%.
Я сам сильно думаю, как сделать так чтобы качественный опенсорс окупался создателям, и ничего дельного не придумал.
А вот! )) у меня была идея вставлять рекламу бегущей текстовой строкой в ФАР )) думаю что стоит попробовать этот метод, нo что из него могло бы выйти — не знаю
unxed Автор
> liberapay.com/on/github/elfmz
Я эту штуку первый раз вижу, и выглядит она немного странно. Собирать людям, их не спрашивая? Ну такое. А это точно не скам вообще?
> на донатах еще не кто не разбогател это 100%
Во-первых, разбогатели (но это в основном это всякие хайповые однодневные истории, которые скорее плохой пример). Во-вторых, вести оперативную деятельность на донейты вполне реально, вон, на Горпроекты Каца и Варламова посмотрите :)) Тут недавно пост выходил про лучшую онлайн карту ДТП страны, это при их поддержке проект, между прочим.
А на хейтеров никогда ориентироваться нельзя, им угодить невозможно, зато можно потратить зря кучу времени и сил, демотивироваться, забросить дело. Представьте, что я этот пост писал бы не для тех, кто far2l пользуется, а пытаясь угодить тем, кто его ненавидит? Ну вот этим вот «ненужно, есть mc» и «учите консоль лучше, дурачки». Нет, я на таких даже внимание не обращаю, а когда приходят — отшучиваюсь.
Обращать внимание, наоборот, надо на добросовестных сторонников, которые тестят, код шлют, или вот денег задонейтить готовы. Все три варианта помощи по-своему хороши, глупо отрицать один из них только потому что кто-то нос воротить будет: желающие нос воротить и так всегда найдутся, обращать внимания на таких и вовсе не надо.
alexws54tk
Почему ненужно, нужно — будет больше альтернатив емаксу.
Надо будет затестить far2l дома. В виндовсе мне всегда нравился ТоталКомандер, но его не везде можно использовать и иногда приходилось довольствоваться ФАРом.
kritikanstvo
Чей-то непонятно.
Если вы только собираетесь попробовать far2l, то под Linux вы ФАР еще не гоняли.
Ну а если под Винду то везде, где можно ФАР, то там и Тотал можно тоже.
alexws54tk
Имелось в виду спорность использования условно-бесплатного Тотала в коммерческих целях.
kritikanstvo
А вы FAR лицензировали с указанием «xUSSR регистрация»?
alexws54tk
Понятия не имею, просто ФАР есть в списке разрешённых программ, а Тотал надо каждый месяц обосновывать безопасникам.
drWhy
Так сейчас вроде BSD.
unxed Автор
far2l под GPL: там кусочки кода Wine есть, а Wine-то под GPL.
elfmz
Причины вполне понятные. Во-первых крайне маловероятно что донаты составят конкуренцию зарплате, во-вторых мне больше нравится писать код как мне нравится, сорри за каламбур.
Так что чтоб не было обидок с одной стороны (я задонатил 100500 шекелей а они так и не сподобились
переписать все нафигсделать маленькую нужную мне фичу, и психологического давления с другой — донаты я не принимаю. И надеюсь это не потребуется:)Потому что есть работа, есть семья с малым ребенком, стройка дома и хобби. Надо разделять:)
unxed Автор
Ой, ну это совсем поверхностное понимание донатов. Есть разные модели, и фичи-за-бабло — далеко не единственная. Меня вот вполне устраивает модель «есть elfmz, и он пилит far2l так, как ему кажется правильным», даже если мои PR не всегда принимаются (я понимаю пределы собственной компетенции), и я готов поддержать эту модель пятихаточкой, не требуя ничего взамен. Ну, как открытку Торвальдсу послать. Просто для мотивации и выражения благодарности.
А то, что донейт не подразумевает какой-то ответственности в виде реализации конкретных фич, это можно в вежливой и ироничной форме прописать на страничке с донейтами. Кого-то отпугнёт (и чёрт с ними), других — нет.
(я, если что, работаю в частном фонде, живущем на донейты, и тему эту знаю, можно сказать, профессионально)