LINUX.ORG.RU

Форк Midnight Commander c поддержкой панельных плагинов

 , , , ,


4

2

https://www.opennet.ru/opennews/art.shtml?num=66018.

Выпущен консольный файловый менеджер Midnight Commander 6.0.3 (mc6), представляющий собой форк GNU Midnight Commander 4.8.33, расширенный поддержкой панельных плагинов и поставляемый со встроенным PTY-терминалом mcterm. Интегрированный в mc6 фреймворк панельных плагинов позволяет отображать в панелях не только файловые системы, но и контейнеры, Git-репозитории, базы данных и объекты удалённых хранилищ. Код проекта написан на языке Си и распространяется под лицензией GPLv3+. Готовые пакеты подготовлены для Debian и Ubuntu, Fedora и RHEL, а также Arch Linux в форматах DEB, RPM и pkg.tar.zst. Для Gentoo дополнительно предоставлен ebuild для установки через локальный overlay.

В состав выпуска вошли плагины для работы с архивами, FTP/SFTP/FTPS, Samba, Git, Docker, Kubernetes, MongoDB и S3-совместимыми хранилищами. Плагины поддерживают стандартные файловые операции, а переработанная поддержка архивов на базе libarchive заметно (в десятки или сотни раз) ускоряет обработку больших архивов.

Во встроенный текстовый редактор mcedit добавлены возможность сворачивания блоков кода, браузер истории Undo/Redo, средства управление макросами и поддержка сохранения файлов через sudo. В разы улучшена производительность при работе с очень длинными строками.

Просмотрщик mcview получил древовидное представление JSON, YAML и XML, интерактивную фильтрацию содержимого, базовую поддержку отображения разметки Markdown и режим воспроизведения файлов с ANSI-последовательностями.

В состав включён встроенный PTY-терминал mcterm с собственным эмулятором терминала, предназначенный для замены традиционного subshell-механизма.

★★★★★

Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от hobbit

А есть какое-нибудь решение, чтобы ставить и запускать mc6, не удаляя ванильный mc? Судя по комментариям выше, я не одинок в этом вопросе.

пока только на уровне ижью которое я завел https://github.com/blue-panels/mc6/issues/219

angel_il ★★★★★
()
Ответ на: комментарий от dataman

А что было не так со скином tokyo-night-16M, что его теперь нет?

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

angel_il ★★★★★
()

Наверное, в $ mc --help не нужно выводить --no-lua Disables Lua support, если mc6 и так собран без Lua?

dataman ★★★★★
() автор топика
Ответ на: комментарий от hobbit

Ubuntu 24.04. Версия 6.0.3 был деб-пакет. Сейчас 6.0.4 - pkg.tar.zst. Пакеты отсюда.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 2)

Ещё чего бы очень хотелось, так это списка всех закладок в mcedit. По Ctrl-B может быть?
Так как Search -> Find all добавляет все найденные позиции в закладки, то это было бы вдвойне полезнее. :)


Мелочь: в помощи mcedit только у меня не работает PgDn?

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Мелочь: в помощи mcedit только у меня не работает PgDn?

там проблема не в самом pgdn/pgup а в том что курсор стоит на ссылке и это мешает сделать пропагэйт событию скрола (в хелпах где нет ссылок там PgUp/PgDn - работают) надо фиксануть, это не сложно

angel_il ★★★★★
()
Последнее исправление: angel_il (всего исправлений: 1)
Ответ на: комментарий от dataman

Find all добавляет все найденные позиции в закладки

Поправка: не позиции, а только номера строк. А хотелось бы позиции.


А подхват текущего слова в поиске mcedit по F7 сломался?

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от dataman

Поправка: не позиции, а только номера строк. А хотелось бы позиции.

это уже несколько другое

angel_il ★★★★★
()
Ответ на: комментарий от dataman

А подхват текущего слова в поиске mcedit по F7 сломался?

вроде работало по помеченному кусочку, и сейчас так-же.

angel_il ★★★★★
()
Ответ на: комментарий от dataman

Это и в классическом mcedit. По идее должен работать параметр editbg из секции [editor], но не работает. Поэтому только два пути, скин делать с учетом цвета фона терминала или отключать подсветку синтаксиса (Ctrl+s)

dmitry237 ★★★★★
()
Последнее исправление: dmitry237 (всего исправлений: 1)
Ответ на: комментарий от dmitry237

Почему тогда отсылка к mcedit, а не к mce6?

так то можно

angel_il ★★★★★
()
Ответ на: комментарий от dmitry237

Это и в классическом mcedit. По идее должен работать параметр editbg из секции [editor], но не работает. Поэтому только два пути, скин делать с учетом цвета фона терминала или отключать подсветку синтаксиса (Ctrl+s)

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

angel_il ★★★★★
()
Ответ на: комментарий от angel_il

А за что отвечает editbg? Что-то не получается найти, может день такой? Насыпало кучу майнкрафта.

Может так быть, что он удален и остался в старых скинах, как артефакт прошлого? Не заметил каких-то изменений при смене/установке значения.

dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

А за что отвечает editbg? Что-то не получается найти, может день такой? Насыпало кучу майнкрафта.

Может так быть, что он удален и остался в старых скинах, как артефакт прошлого? Не заметил каких-то изменений при смене/установке значения.

им заполняется фон редактора, чтобы увидеть нужно переключиться в оконный режим, по умолчанию редактор открывается на весь экран. кликнуть в " [↕]" в правом верхнем углу.

ps: прикол, движок лора заменяет этот значок на эмоджи

а если так


  [↕]

angel_il ★★★★★
()
Последнее исправление: angel_il (всего исправлений: 4)

О, а ещё на опеннете заметили, что в новом методе работы с архивами не поддерживается ARJ. Не то, чтобы это был прямо стоппер, но вот прямо этим летом он мне как-то понадобился.

Есть в mc6 какой-то обходной путь, чтобы подключить форматы архивов, несовместимые с текущей libarchive?

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

что в новом методе работы с архивами не поддерживается ARJ

это странное! у меня по идее вот так сделано: через libarchive доступны чтение и запись ZIP, 7z, вариантов TAR и CPIO. Также читаются ISO, XAR, CAB и другие поддерживаемые сборкой libarchive форматы. JAR, WAR и EAR считаются вариантами ZIP. И в реестре внешних архиваторов по умолчанию есть RAR, ARJ, ACE, ARC, ALZ, ZOO, HA, WIM, LHA/LZH, DEB, RPM и установщики Inno Setup.

Но сами утилиты всё равно должны быть установлены. Диалог Archiver settings показывает встроенные и внешние форматы, позволяет их включать и выключать, выбирать встроенный или внешний backend и помечает отсутствующую утилиту символом «!». (я про это в вике писал)

сам диалог выглядит так

╔═════════════════ Archiver settings ═════════════════╗
║  Format  Ext       Pack     Unpack   Tool     On  ║
╟─────────────── Builtin (libarchive) ────────────────╢
║  ZIP    │.zip    │>builtin│ builtin│-        │[x]  │
║  7Z     │.7z     │ both   │ both   │7z       │[x]  *
║  TAR.GZ │.tar.gz │ builtin│ builtin│-        │[x]  │
║  TAR.BZ2│.tar.bz2│ builtin│ builtin│-        │[ ]  │
║  TAR.XZ │.tar.xz │ builtin│ builtin│-        │[ ]  │
║  TAR    │.tar    │ builtin│ builtin│-        │[ ]  │
║  CPIO   │.cpio   │ builtin│ builtin│-        │[ ]  │
║  TAR.ZST│.tar.zst│ -      │ builtin│-        │[ ]  │
║  TAR.LZ │.tar.lz │ -      │ builtin│-        │[ ]  v
╟──────────────── External archivers ─────────────────╢
║  RAR    │.rar    │extern  │extern  │rar       │[x]  │
║  ARJ    │.arj    │extern  │extern  │arj       │[x]  *
║  ACE    │.ace    │-       │extern  │unace !   │[ ]  │
║  ARC    │.arc    │extern  │extern  │arc !     │[ ]  │
║  ALZ    │.alz    │-       │extern  │unalz !   │[ ]  │
║  ZOO    │.zoo    │extern  │extern  │zoo !     │[ ]  │
║  HA     │.ha     │extern  │extern  │ha !      │[ ]  │
║  WIM    │.wim    │-       │extern  │wimlib-ima│[ ]  │
║  LHA    │.lha    │extern  │extern  │lha !     │[ ]  v
╟─────────────────────── Hint ────────────────────────╢
║  Space - change   F4 - tool params   ! - missing    ║
╟─────────────────────────────────────────────────────╢
║                      [< OK >]                       ║
╚═════════════════════════════════════════════════════╝

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

angel_il ★★★★★
()
Последнее исправление: angel_il (всего исправлений: 1)
Ответ на: комментарий от hobbit

а на опеннете есть «заметка про вашего мальчика» ? или это про 6.0.1 ?

angel_il ★★★★★
()
Ответ на: комментарий от dataman

Прокрутка текста стрелками во вьюере стала неудобной.

как поправить не ставить курсор пока мышкой клика не будет?

angel_il ★★★★★
()
Ответ на: комментарий от angel_il

Тогда после клика ничего не изменится.
Может, построчно скроллить по Ctrl-Up/Down?

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от dataman

сделал перевод в режим пометки по Enter или клик мыши

angel_il ★★★★★
()

Какой-то бесполезный форк. Практически всё перечисленное делается настройками обычного mc.

Лучше бы в mcedit раскраску синтаксиса допилили чтобы можно было всякие Intel HEX и прочие подобные текстовые фoрматы раскрашивать.

Stanson ★★★★★
()

А куда надо нажать или что сделать, чтобы при просмотре панели «Git Panel Plugin» отображался список коммитов внутри «/commits»?

Внутри «/branches» список для каждой ветки выводится.

Собирал из git, ставил в «/opt/mc6».

Radjah ★★★★★
()
Ответ на: комментарий от dataman

а можно добавить в настройки панелей что-то типа [ ] Auto refresh panels?

А то приходится жать Ctrl-R после выполнения в mcterm чего-то, что создаёт или удаляет файлы.

Спасибо за [x] Watch directories, ура! :)

dataman ★★★★★
() автор топика
Ответ на: комментарий от angel_il

а раскраска синтаксиса во вьювере ок?

Непонятно, она работает не для всех типов файлов?
И в *.md код:

`что-то`

рендерится как ссылка.

dataman ★★★★★
() автор топика
Ответ на: комментарий от Stanson

Ну покажи, как настройками обычного mc сделать так, чтобы при заходе в запароленный архив mc не вис и не показывал пустое место.

Ответ «запароленные архивы не нужны» не принимается, работа с архивами – стандартная функциональность любого нормального двухпанельного ФМ.

hobbit ★★★★★
()
Ответ на: комментарий от Radjah

А куда надо нажать или что сделать, чтобы при просмотре панели «Git Panel Plugin» отображался список коммитов внутри «/commits»?

в «коммитс» показывает не запушенное, но самому иногда кажется что наверное стоит просто показывать все что лежит в ветке. (надо фиксануть UX)

angel_il ★★★★★
()
Ответ на: комментарий от dataman

Непонятно, она работает не для всех типов файлов?

просмотр Markdown, dbf, pdf делается каждый своим lua-модулем (скриптом) а обычные файлы обычным просмотровщиком. А он уже красит syntax-движком который я вытащил из эдитора. в итоге его (расскраску) теперь можно в любом виджете (пока что mcdiff и mcview). Из плюсов вытаскивания это нормальная обвязка тестами с возможностью рефакторинга. Синтетка показала что есть прирост по скорости работы, но синтетика это всё-таки синтетика.

angel_il ★★★★★
()
Ответ на: комментарий от dataman

Спасибо за [x] Watch directories, ура! :)

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

angel_il ★★★★★
()
Ответ на: комментарий от hobbit

Ну покажи, как настройками обычного mc сделать так, чтобы при заходе в запароленный архив mc не вис и не показывал пустое место.

mc для захода в архив использует скриптики в /usr/libexec/mc/extfs.d/ . Там вообще 2 пальца об асфальт дописать проверку на запароленность архива и запрос пароля если архив запаролен в любом, устраивающем тебя виде.

Просмотр содержимого архива по F3 работает через скриптик /usr/libexec/mc/ext.d/archive.sh , где тоже никаких проблем добавить ввод пароля нет.

И это только один из способов решить эту «проблему».

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Там вообще 2 пальца об асфальт дописать проверку на запароленность архива и запрос пароля если архив запаролен в любом, устраивающем тебя виде.

хах. первое - да, второе - нет.

проверку добавить можно но проблема в том что нет механизма обработки пользовательского ввода постфактум, vfs может получить из вне данные но ты заранее не знаешь что ей нужны эти данные и а про то что нужен пароль пользователь не узнает т.к. vfs об этом не скажет пользователю.

angel_il ★★★★★
()
Последнее исправление: angel_il (всего исправлений: 1)
Ответ на: комментарий от angel_il

проблема в том что нет механизма обработки пользовательского ввода постфактум, vfs может получить из вне данные но ты заранее не знаешь что ей нужны эти данные и а про то что нужен пароль пользователь не узнает т.к. vfs об этом не скажет пользователю.

Мда. Какой-нибудь dbus, например, кому везде насовали? То, что mc зохавывает stdin, stdout и stderr скриптика, вовсе не означает, что спросить у пользователя пароль совершенно невозможно.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

вопрос не в том что что «можно сделать» а в том что «есть фактически», а фактически есть текущая архитектура которая несет определенные ограничения и проблемы.

angel_il ★★★★★
()
Ответ на: комментарий от angel_il

просмотр Markdown, dbf, pdf делается каждый своим lua-модулем

Хочу попробовать написать нативные плагины для просмотра

С чего начать? :)

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

HTML5 на основе lexbor 2.5.0.

так а что с js? современный веб на 80% это spa который генерится на лету. как с ними быть? ташить ноду? )

но чистый отображатель текста вроде не сложно. для этого всё есть. НО…

Проще отдать HTML готовому текстовому браузеру: w3m -dump -cols N, lynx -dump -width N или elinks -dump -dump-width N. Таблицы они держат, резиновые div-ряды у них вытянутся в линейный текст. Для просмотра этого хватает.

Сам скрипт получится строк на 30:

  • образец lua-readelf (https://github.com/ilia-maslakov/mcdev/tree/master/src/lua/scripts/mc/lua-readelf) запускает внешнюю программу через mc.source.process { argv = {…} };
  • в viewer_source.define поставить resize = «rebuild» и передавать viewport.columns в -cols, тогда текст перерисуется под ширину окна;
  • raw_path включит показ исходника по F8;
  • правило в ~/.config/mc6/magic.ini: View=%plugin{lua(lua-html):view}.

Документация: LUA_PLUGINS.md (https://github.com/ilia-maLUA_PLUGINS.md) иLUA_API_REFERENCE.md(https://github.com/ilia-maLUA_API_REFERENCE.md).

angel_il ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.