Почему
Просто накопилось достаточно новых фич, которые могли бы кому-то пригодиться, но пропихнуть их в апстрим я не смогу. Так получилось, что сам я уже много лет как отошел от разработки mc в виду личных проблем связанных с моими родителями, но кое что недоделанное оставалось. Большой респект ребятам — Андрею и Юре кто продолжаешь тащить апстрим, они большие молодцы и все кто им помогает.
Важно: я пока не нашел времени и сил подготовить скрипты сборки пакетов для разных дистрибутивов и не придумал название для форка (GPL позволяет использовать старое название, но с указанием что это форк и даты отпочковывания)
Ещё важно, что я публикую этот текст с единственной целью — найти тех, кто поможет выявить проблемы при использовании форка на других платформах и дистрибутивах. Сам я пользуюсь на Ubuntu.
Теперь без промедления к делу…
В форке Midnight Commander с амбициозным номером версии v6.0.1 появилось несколько крупных нововведений:
-
новый фреймворк панельных плагинов
-
дополнительные возможности редактора и просмотрщика
-
встроенный терминал (что?! да)
-
много плагинов для работы с Docker, Kubernetes, MongoDB, S3, Samba (зачем самба?!).
Новый фреймворк панельных плагинов
Панели mc (да, руки до нового имени пока не дошли) теперь могут получать содержимое из подключаемых плагинов. Поэтому можно отображать не только файлы и каталоги, но вообще любые типы данных и сущностей: контейнеры, репозитории, службы, базы данных и объекты удалённых хранилищ.
Устаревшие модули, такие как ftpfs и sftpfs — удалены. Вместо них теперь используются соответствующие плагины.
Вместе с релизом поставляются 12 новых плагинов, среди которых:
-
arcmc — плагин для работа с архивами как в FAR-овском ArcLite;
-
Samba — ну понятно;
-
SFTP/FTP/FPTS — сделал сразу все три, чтобы два раза не вставать;
-
Git — всегда ходел сделать но руки не доходили (клода не было);
-
Kubernetes;
-
Docker;
-
MongoDB;
-
S3.
Панельные плагины поддерживают передачу файлов: копирование, перемещение и сохранение — тут все стандартно.
Примерно так можно упаковать файл в любой формат архива, доступный через libarchive. Попутно вылечилось умирание mc при обзоре больших tar-архивов или запароленных rar-ов. Надо сказать что работа с архимами стала сильно все быстрее минимум на порядок, т.е. теперь их комфортно упаковывать/распаковывать.
История навигации стала общей для локальной файловой системы и плагинов. Управлять плагинами можно через пользовательское меню и настройки mc.
В Git-панели можно посмотреть список файлов и/или визуально проверить изменения, поместить их в stash и вернуть обратно, т.е. все что есть примерно во всех графических оболочках git-а, но быстрее, если чего то не хватает то уже через сам git.
Изменения в редакторе
В mcedit появилось сворачивание кода. Блоки, ограниченные фигурными скобками, можно свернуть, а доступные для свертки области отмечаются в области номеров строк (та которая по alt-n).
Добавлен браузер истории Undo/Redo (такой же как везде).
Для макросов редактора появился Macro explorer, который позволяет просматривать записанные макросы и управлять ими.
Кроме того, редактор получил возможность сохранять файлы через sudo, если при открытии у пользователя не было прав на запись.
Заметно ускорена работа с очень длинными (несколько мегабайт каждая) строками. Это касается навигации и отрисовки логов, CSV-файлов, минифицированного кода и других данных, в которых одна строка может занимать значительный объём.
Также улучшена подсветка обычного текста который имеет тип unknown, подсвечиваются числа, строки в кавычках и т.п.
Изменения в просмотрщике
В mcview появился режим структурированного дерева для JSON, YAML, XML. Вместо обычного текста содержимое файла можно просматривать в виде раскрывающейся структуры. Иногда это очень удобно (МНЕ!).
Для анализа логов добавлен интерактивный фильтр в стиле grep. Он позволяет фильтровать отображаемое содержимое непосредственно во время просмотра, используя простой фильтр или рекексп.
Ещё одно изменение — воспроизведение файлов с ANSI-кодами в режиме виртуального терминального экрана. Благодаря этому записи, созданные, например, с помощью script(1), отображаются не как поток байтов с управляющими последовательностями, а в более читаемом виде.
Появился и базовый режим отображения Markdown.
Встроенный терминал mcterm
Для избавления от древней проблемы с сабщелом была добавлена новая – mcterm — встроенный PTY-терминал. mcterm позволяет запустить интерактивную оболочку внутри виджета файлового менеджера, это позволяет скрывать показывать панели по отдельности.
Эмуляция терминала выполняется собственным движком. Единственное условие — наличие openpty(), которое доступно в стандартной библиотеке Linux-систем. По умолчанию mcterm включён, а отключить его при сборке можно флагом --disable-mcterm.
Плагины Docker и Kubernetes
Docker-панель группирует контейнеры по Compose-проектам и позволяет просматривать их логи и информацию о контейнерах. Для логов можно задавать режим выборки, включая tail, head и непрерывное чтение в режиме follow, что в целом удобно.
Kubernetes-плагин позволяет работать с pod-ами, сервисами и дескрипторами, просматривать логи и выполнять команды через exec.
Плагины MongoDB и S3 (не знаю, почему они рядом)
Браузер MongoDB позволяет просматривать в бд коллекции и документы. Документы, конечно же можно, не только смотреть, но и редактировать.
Плагин S3 предоставляет доступ к бакетам и объектам S3-совместимых хранилищ. Для работы с сетью используется libcurl, поддерживается подпись запросов AWS Signature Version 4.
Итого
Основные изменение форка были посвещены:
-
Переходу к расширяемым панельным плагинам;
-
Развитию Viewer для структурированных данных, логов и терминальных записей;
-
Улучшению редактора;
-
Добавлению встроенной командной оболочки.
Подробнее о возможностях данного релиза можно почитать тут
ссылка на оригинал статьи https://habr.com/ru/articles/1062796/