Форк файлового менеджера, подозрительно похожего на Midnight Commander

от автора

Почему

Просто накопилось достаточно новых фич, которые могли бы кому-то пригодиться, но пропихнуть их в апстрим я не смогу. Так получилось, что сам я уже много лет как отошел от разработки 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-ов. Надо сказать что работа с архимами стала сильно все быстрее минимум на порядок, т.е. теперь их комфортно упаковывать/распаковывать.

Упаковка файлов в архив через arcmc

Упаковка файлов в архив через arcmc

История навигации стала общей для локальной файловой системы и плагинов. Управлять плагинами можно через пользовательское меню и настройки mc.

В Git-панели можно посмотреть список файлов и/или визуально проверить изменения, поместить их в stash и вернуть обратно, т.е. все что есть примерно во всех графических оболочках git-а, но быстрее, если чего то не хватает то уже через сам git.

Работа с 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.

Итого

Основные изменение форка были посвещены:

  1. Переходу к расширяемым панельным плагинам;

  2. Развитию Viewer для структурированных данных, логов и терминальных записей;

  3. Улучшению редактора;

  4. Добавлению встроенной командной оболочки.

Подробнее о возможностях данного релиза можно почитать тут

ссылка на оригинал статьи https://habr.com/ru/articles/1062796/