-
Notifications
You must be signed in to change notification settings - Fork 8
Home ru
Версия 6.0.4 основана на GNU Midnight Commander 4.8.33. Что принес каждый выпуск, перечислено на странице Releases.
Сборка, тестирование и участие в разработке: Coding style, QA testing - о Docker-песочнице, в которой проверяются панельные плагины, и Local build check - о локальном прогоне сборки CI.
Архитектура Lua-расширений описана на странице Доменная модель Lua.
Форк растет за пределами ядра. Содержимое панели может предоставляться динамически загружаемым плагином, а не только локальной файловой системой; скрипты добираются до редактора, панелей, просмотрщика и интерфейса через версионированный ABI, причем сам Lua живет в плагине, а не в ядре; а команды выполняет встроенный терминал вместо прежнего subshell.
Вместе с этим поставляются плагины для архивов, Git, Docker, Kubernetes, MongoDB, S3, FTP, SFTP, Samba и другие. Возможности редактора и просмотрщика файлов также значительно расширены.

Пакеты для Debian, Ubuntu, Fedora, Arch и macOS приложены к каждому
релизу. Для Ubuntu есть PPA
ppa:il-smind/mc6, для macOS - тап Homebrew:
brew install blue-panels/tap/mc6Программа ставится как mc6 рядом с системным mc и держит собственные
каталоги: ~/.config/mc6, ~/.local/share/mc6 и ~/.cache/mc6. При первом
запуске в каждый новый каталог копируется соответствующий каталог mc, а
исходный остается нетронутым.
Плагинная панель работает аналогично обычной файловой панели: поддерживает навигацию, просмотр файлов и стандартные операции через F4, F5 и F6.
Плагины могут добавлять:
- собственные источники данных;
- пункты в меню панелей и меню выбора диска;
- настройки и справку;
- загрузку и сохранение файлов;
- историю переходов внутри плагина.
Плагин также может передать другому плагину открытый поток с произвольным
доступом, а magic.ini направляет файл тому плагину, который его понимает.
Именно это позволяет открыть архив на удаленной машине, не скачивая его целиком.
Пользовательские плагины загружаются из ~/.local/lib/mc6/panel-plugins.

Поддержка Lua - это плагин, работающий через ABI ядра, поэтому язык не встроен в mc. Скрипт может читать и менять документы редактора транзакциями, давать панели и файловые операции, поставлять просмотрщику генерируемое содержимое, строить диалоги и целые экраны из родных виджетов, запускать процессы и обрабатывать события.
Скрипты включаются и выключаются в диалоге Manage Plugins, а API описан на страницах Lua plugins и Lua API reference. Часть просмотрщиков, описанных ниже, сама написана на Lua.
Плагин mcstruct показывает двоичный файл деревом именованных полей по текстовому описанию формата (def-файлы STL5), синхронно с шестнадцатеричной полосой, и правит поля на месте. См. руководство mcstruct: запуск, клавиши, язык описаний, готовые def-файлы, настройки и скин.
Плагин arcmc позволяет открывать архивы прямо в панели. Он заменил встроенные файловые системы tar и cpio, которых в ядре больше нет.
Полное описание клавиш, настройки внешних архиваторов, extfs-помощников и добавления форматов без пересборки mc - в руководстве arcmc.
Поддерживаются:
- просмотр архивов и вложенных архивов;
- добавление и удаление файлов;
- создание ZIP, 7z, TAR и CPIO;
- настройки сжатия;
- пароли и шифрование для форматов, которые это умеют;
- массовое извлечение;
- показ хода работы, скорости и оставшегося времени;
- отмена длительных операций.
При извлечении проверяются абсолютные пути и компоненты .., поэтому содержимое архива не может выйти за пределы выбранного каталога.

В mcview появился древовидный режим для:
- PNG/JPEG;
- JSON;
- YAML;
- XML;
- HTML.
Он доступен и в полноэкранном просмотрщике, и в Quick View.
В древовидном режиме можно разворачивать и сворачивать узлы, задавать глубину раскрытия, искать по всей структуре и копировать путь к выбранному элементу в формате, похожем на jq.
Параметр mcview_structured_auto открывает поддерживаемые файлы в структурированном режиме автоматически.

PNG, JPEG и другие растровые изображения открываются прямо в просмотрщике.
Картинку рисует Chafa символами и цветами
терминала, при изменении размера окна она перерисовывается под просмотрщик.
Так обрабатывается любой файл с MIME-типом image/*; правило лежит в
magic.ini и меняется пользователем.
Рисует Lua-обработчик lua-chafa, ему нужен бинарник chafa. F8 переключает
между картинкой и байтами файла.
Там, где терминал умеет sixel, обработчик lua-sixel показывает настоящую
картинку вместо символов - и в просмотрщике, и в терминале. Над ней печатается
короткое описание изображения, а i переключает на полные свойства.

Тот же механизм дает файлу читаемый вид:
- двоичные файлы ELF разбирает
readelf: заголовки, секции, сегменты и динамические данные; - классы Java декомпилирует Procyon;
- таблицы dBase, FoxPro и Clipper открываются постранично, со структурой, карточкой записи и выбором кодировки.
F8 в каждом случае переключает между генерируемым видом и байтами файла.
Просмотрщик умеет работать с командами, которые не заканчивают вывод, например:
docker logs -f
journalctl -fДанные читаются без блокировки интерфейса и обновляются по мере поступления.
Фильтр предлагает:
- обычный поиск;
- регулярные выражения;
- учет регистра;
- поиск целого слова;
- выбор кодировки;
- предварительную проверку выражения.
Фильтр применяется к текущему источнику данных и показывает только совпадающие строки, не создавая второй файл и отдельный процесс.

Параметры получения журнала меняются прямо в просмотрщике, не закрывая его и не возвращаясь в панель. Можно задать число загружаемых записей, временной интервал, чтение журнала предыдущего запуска контейнера и режим постоянного обновления.
Полученные данные можно передать внешней команде для преобразования или форматирования. Это доступно и для журналов Docker, в диалоге Container logs source, и для журналов Kubernetes, в диалоге Pod logs source.
Без дополнительной обработки структурированные журналы, например записи Serilog в JSON, читать неудобно:

В диалоге источника задаются параметры получения журнала и команда обработки в поле Pipe through:

После обработки данные показываются в более читаемом виде:

В mcview появилась поддержка цветов ANSI и режим воспроизведения терминала.
Поддерживаются обычные и яркие цвета, палитра из 256 цветов, True Color, жирный и подчеркнутый текст, курсив и инверсия.
Терминальный режим обрабатывает управляющие последовательности позиционирования, очистки экрана и областей прокрутки. Это позволяет смотреть записи script(1) и сохраненный вывод полноэкранных программ.
Режимы None, SGR и Term переключаются клавишей F9. Отрисовку цветов ANSI включает и выключает Shift+F9.
Компонент mcterm выполняет команды прямо в файловом менеджере и заменил
прежний subshell: набранная в командной строке команда уходит уже запущенной
там оболочке, а сама строка показывает ее настоящее приглашение, цвета и
курсор. Терминал переключается по Ctrl+O, стартует в каталоге активной панели
и следует за ней, отслеживая приглашение, выполняемую команду, код возврата и
каталог через OSC 133 и OSC 7.
Он держит ограниченную историю вывода: PgUp/PgDn, Shift со стрелками,
Home, End и колесо мыши листают ее, а набор текста возвращает к живому
выводу. Вывод можно выделить мышью или Shift со стрелками и скопировать по
Ctrl+Insert; Alt+Shift+S оставляет только строки с выделенным текстом, а
Alt+S снимает такой фильтр. Ctrl+L уводит экран в историю, Ctrl+Alt+L
очищает и историю тоже. Длинные строки переносятся, а при смене ширины окна
история переукладывается заново.
Пока терминал занимает весь экран, у него своя строка функциональных клавиш; в руководстве описано, какие клавиши достаются mc, а какие программе внутри.
Эмуляция терминала выполняется собственным движком просмотрщика, без внешней библиотеки.
У редактора есть собственный фреймворк плагинов. Плагин может регистрировать действия, добавлять пункты в меню редактора и обрабатывать клавиши.
Плагины включаются и выключаются для каждого пользователя в диалоге Manage Plugins, оттуда же открываются настройки выбранного плагина.
С редактором поставляются три плагина:
- проверка орфографии;
- поддержка etags;
- навигатор ctags.
Проверка орфографии и поддержка etags вынесены из ядра редактора в плагины. Навигатор ctags новый: он переходит к определениям и объявлениям, ищет символы и файлы, находит ссылки, показывает члены, дополняет символы и хранит историю переходов. Индексы ведутся по репозиториям и пересобираются из плагина.
Пользовательские плагины загружаются из ~/.local/lib/mc6/editor-plugins.
Редактор сам рисует символы псевдографики. Меню Drawing включает одинарные или двойные линии, Shift+стрелки рисуют от курсора, тем же меню рисование выключается.
Каждая ячейка пересчитывается по сходящимся в ней линиям, поэтому углы, тройники и пересечения получаются сами, а одинарная линия поверх двойной дает смешанный знак. При включенной замене (Insert) текст в ячейках набирается, не сдвигая рамку.
Это Lua-скрипт редактора draw-table, поставляется в lua/scripts/editor/draw-table.

В диалоге поиска (F7) появилось действие Filter: оно прячет все строки, не
подходящие под образец, с учетом типа поиска, регистра, целого слова и
кодировки из того же диалога. Номера строк остаются исходными, а скрытые
участки отмечаются на полосе состояния строк. Alt+S снимает фильтр или
возвращает последний, а Alt+Shift+S фильтрует по выделению или по слову под
курсором, без диалога.
Кроме того, диалог поиска открывается с уже подставленным выделенным текстом.
mcedit умеет сворачивать многострочные блоки по скобкам {}, [] и ().
Сворачивание доступно:
- через индикатор на полосе редактора;
- через меню Command;
- по
Alt+Shift+F.
Команда работает по выделенной области или определяет ближайший охватывающий блок относительно курсора.

Alt+Shift+U открывает список операций отмены и повтора.
Для каждой группы показаны строка, тип операции, число символов и фрагмент измененного содержимого. Из списка можно перейти к любой доступной точке истории.
Alt+Shift+M открывает список записанных макросов.
Для выбранного макроса можно посмотреть последовательность действий, выполнить его, удалить или открыть соответствующее определение в mc.macros.
Если файл не сохраняется из-за нехватки прав, редактор предлагает повторить операцию через sudo -S tee.
Неудачная попытка не закрывает редактор и не теряет текущий буфер.
Добавлено кэширование позиций символов внутри длинных строк. Это уменьшает задержки при перемещении, выделении и перерисовке журналов, файлов CSV и минифицированных данных.
Плагин Git показывает коммиты, ветки и измененные файлы. Для сравнения используется встроенный просмотрщик различий.
Репозитории сохраняются в избранное. При выборе измененного файла вторая панель переходит к соответствующему файлу в рабочем каталоге.

Плагин Docker дает доступ к:
- контейнерам;
- файлам контейнеров;
- образам;
- томам;
- сетям;
- монтированиям;
- выполнению команд;
- журналам.
Поддерживаются локальный профиль и профили по SSH. Для журналов настраиваются число строк, временной диапазон, предыдущий запуск и режим непрерывного чтения.
В комплекте идет скрипт форматирования журналов .NET и Serilog.

Плагин Kubernetes работает через kubectl и позволяет смотреть поды, узлы, сервисы и рабочие нагрузки.
Доступны контексты, пространства имен, describe, YAML, exec, удаление ресурсов и просмотр журналов.
Плагин позволяет просматривать подключения, базы, коллекции и документы.
Поддерживаются фильтрация, проекция, сортировка, ограничение числа результатов, постраничное чтение больших коллекций и правка документов.
Плагин S3 умеет загружать, скачивать и удалять объекты, создавать корзины, показывать метаданные и передавать объекты в просмотрщик потоком.
Работает с совместимыми хранилищами, включая MinIO, Ceph и Cloudflare R2.
Плагин SQLite открывает базу данных панелью таблиц, столбцов и строк. Только для чтения.
Плагин FTP поддерживает FTP и FTPS, активный и пассивный режим, прокси, keepalive и выбор версии IP.
Плагин SFTP поддерживает аутентификацию по паролю и по ключу, сжатие, показ хода работы и потоковую передачу файлов.
Плагин Samba дает доступ к серверам SMB и общим ресурсам.
Пользователь может создавать свои режимы отображения панели и выбирать набор и ширину столбцов.
Alt+Shift+S фильтрует панель по мере набора образца: Quick Search и Quick
Filter делят общий образец, а Ctrl+G снимает фильтр. Alt+C спрашивает
каталог в мини-статусе панели, а не в диалоге, и предлагает дополнение
каталогов над строкой ввода.
Параметр permission_colors красит каждый бит прав своим цветом, как это
делает eza, а знак типа файла сохраняет цвет строки.
Добавлены три отдельных диалога.
Key Bindings меняет привязки клавиш и находит конфликты между ними, привязки сгруппированы по областям во вкладки.

Learn Keys распознает модификаторы, поэтому Ctrl, Alt и Shift снимаются вместе с основной клавишей.

Key Sniffer показывает escape-последовательность, которую терминал шлет для клавиши, вместе с сочетанием, назначенным действием и кодом клавиши.

Настройки терминала хранятся в:
~/.config/mc6/term/<TERM>
В список также входят:
- отрисовка Markdown в просмотрщике;
- прямоугольное выделение столбцом в редакторе;
- внутренняя реализация просмотрщика различий вместо отдельного процесса
mcdiff; - список найденных файлов со временем, размером и правами, а совпадения одного файла собраны под записью, которая раскрывается в сами строки;
- фильтрация истории по мере набора;
- копирование и вставка между строками ввода и редактором;
- использование Procyon для декомпиляции классов Java;
- быстрая горизонтальная прокрутка очень длинных строк;
- исправление просмотра DOCX, PPTX и XLSX;
- сохранение расширений временных файлов, создаваемых плагинами.
Форк развивается по пяти направлениям:
- Расширяемые панельные плагины и API, позволяющий им передавать данные друг другу.
- Скрипты на Lua, где сам язык - плагин, а не часть ядра.
- Просмотрщик структурированных данных, двоичных форматов, журналов и терминальных записей.
- Редактор: плагины, рисование, сворачивание, фильтрация, история.
- Встроенный терминал вместо subshell.