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)

Ещё вспомнил, что когда-то делал патч для Far3, включающий «плоский режим» отображения директорий по Ctrl-Alt-B. Вроде такой есть и в Total Commander, и в нескольких других ФМ.
Вот тоже бы хотелось в mc6. :)

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

Да, term mode делает вещи :)

Надо будет попробовать прикрутить colorer, там же есть консольная утилита.

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

спасибо за фильтр в редакторе по Alt-S, просто огнище! :)

После всех новых фильтров, захотелось фильтрации вывода и в mcterm. :)

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

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

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

но будет ли какой то выхлоп от такой фичи

Например, показ строк с ошибками компиляции.

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

А, ещё бы в диалоге чекбокс «Inverted filter» для скрытия совпавших строк.

не так быстро как по галочке но

╔═══════════════════════ Search ═══════════════════════╗
║ Enter search string:                                 ║
║ ^(?!.*bugs).*$                                   [^] ║
╟──────────────────────────────────────────────────────╢
║ ( ) Normal                [ ] Case sensitive         ║
║ (*) Regular expression    [ ] Backwards              ║
║ ( ) Hexadecimal           [ ] In selection           ║
║ ( ) Wildcard search       [ ] Whole words            ║
║                           [ ] All charsets           ║
╟──────────────────────────────────────────────────────╢
║     [< OK >] [ Find all ] [ Filter ] [ Cancel ]      ║
╚══════════════════════════════════════════════════════╝

нажатие «Filter» оставит только строки в которых нет слова bugs

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

не так быстро как по галочке но

Тогда, наверное, лучше Inverted matching, чтобы эта опция работала для всех видов поиска.

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

@angel_il, ещё бы добавить в mcterm возможность создания файла по Shift-F4.
И, наверное, в нём не должны работать F4, F5, F6 и F8, и не показывать их в keybar?

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

в следующем релизе

А он скоро намечается? А то я задумал обновить подсветку для современных C/C++. :)

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

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

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

И, может быть, по Ctrl-Shift-L (или Ctrl-Alt-L) очищать весь буфер mcterm, а не только видимую часть?

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

Может быть переименовать проект в mc-ng, как многие проекты делают (zlib-ng, goldendict-ng)?

я думал над этим но не смог понять чем «-ng» лучше «6» есть много проектом которые добавляли «2» есть кто полностью имя менял, кто то «-ng». В добавлении 6 к короткому имени это не криминал с точки зрения GPL, поэтому решил оставить mc6 с отсылкой на mc5 а mc2 уже занято было. «-ng» как по мне на 3 символа длиннее. Короче был вариант думать над именем и не писать код а был вариант писать код а потом вернуться к вопросу. Репо вообще называется mcdev ну типа он на стадии девелоперства а не прода.

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

чем «-ng» лучше «6»

Чтобы не было конфликтов в менеджерах пакетов.
Бинарник, конечно, тоже бы переименовать в mcng или mcn.

mc6

Исходный mc тоже может обновиться до 6 когда-нибудь. ;)

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

Исходный mc тоже может обновиться до 6 когда-нибудь

нет, это исключено )

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

Бинарник, конечно, тоже бы переименовать в mcng или mcn.

или в mc6. Ребята которые делали клиент для s3 вообще не парились назвали его mc )

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

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

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

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

работать F4, F5, F6 и F8

я думаю что идея на них навесить какие то экшены. а скрыть/заблочить текущие да. это скорее фикс а не фича.

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

идея на них навесить какие то экшены

Кстати, а Lua-API сейчас позволяет переопределять стандартные действия?

dataman ★★★★★
() автор топика

А я опять про фильтры. :)
В Far3 есть фильтрация пунктов листбоксов/меню по Ctrl-Alt-F, было очень полезно.

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

Кстати, а Lua-API сейчас позволяет переопределять стандартные действия?

речь про меню? если про сочетания клавиш то точно - да.

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

так в mc просто печатаешь буквы и оно фильтрует

Проверил в User menu (в нём, понятно, почему нет: символы могут быть хоткеями) и Directory hotlist — не фильтрует.


А в Far3 этот фильтр поддерживает ещё и стандартные шаблоны, насколько я помню.
А, нет, пока не поддерживает. Я когда-то делал патч переключения режима по Ctrl-Alt-M, но так и не прислал его ещё в фаровском Мантисе.

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

Огромное спасибо, стало намного лучше!
Хотя бывает и так https://postimg.cc/56gBFHBc, но может уже и не стоит с этим возиться.


Ого! mcstruct — 🔥!


В mcterm в keybar теперь «2Copy», хотя при нажатии вызывается меню.
И F4 c F8 ещё выдают диалоги с ошибкой.

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

Хотя бывает и так https://postimg.cc/56gBFHBc,

это в ранелях или когда они скрыты?

В mcterm в keybar теперь «2Copy», хотя при нажатии вызывается меню.

И F4 c F8 ещё выдают диалоги с ошибкой

погоняю в докере, а что за дистр?

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

но может уже и не стоит с этим возиться

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

--- /usr/share/mc/skins/xoria256.ini	2025-01-23 15:00:23.000000000 +0300
+++ xoria256-user.ini	2026-08-29 02:08:27.741888998 +0300
@@ -13,7 +13,7 @@
 
 
 [skin]
-    description = Xoria256
+    description = Xoria256-user
     256colors = true
 
 [Lines]
@@ -59,7 +59,12 @@
     #commandhistory =
     #commandlinemark = black;lightgray
 
-    shadow = color239;black
+    #shadow = color239;color324
+    #permread = yellow;color324
+    #permwrite = brightred;color324
+    #permexec = brightgreen;color324
+    #permspecial = brightmagenta;color324
+    #permnone = gray;color324
 
 [dialog]
     _default_ = black;color250
@@ -76,7 +81,7 @@
     errdtitle = yellow;red;bold
 
 [filehighlight]
-    directory = ;;bold
+    directory = blue;;bold
     executable = color114
     symlink = color180
     hardlink =
yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 2)
Ответ на: комментарий от angel_il

это в ранелях или когда они скрыты?

Шаги:

  1. Панели открыты
  2. Ctrl-O
  3. Жму Alt-Q («Clear Scrollback and Reset») в Wezterm
  4. Ctrl-O

а что за дистр?

Devuan/Ceres и Wezterm-nightly.

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

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

 errdtitle = yellow;red;bold

… hardlink =

кстати может, я тогда попробую разные скины, я тестил только дефолтный и свой darkfar скин

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

попробую разные скины

Забыл написать: на скриншоте — tokyo-night-16M.

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

Что-то у меня тоже с открытием архивов проблема. Версию в /etc/mc6/mc/mc.ext.ini надо бы бампнуть :)

я бы сначала глянул mc -F | grep «mc-panel-arcmc.so» а потом посмотрел что в magic.ini

# Plugin file-operation associations.
#
# This file is an overlay for plugin actions. It never replaces mc.ext.ini:
# when no rule here matches, Midnight Commander follows its normal extension
# and panel-plugin handling.
#
# A user may add rules in ~/.config/mc6/magic.ini. Native values use
# %plugin{plugin-id:operation}; runtime packages use
# %plugin{runtime-id(package-id):operation}, for example:
#
# [archive]
# Regex=\\.(tar|tar\\.gz|tgz|zip|7z)$
# Open=%plugin{arcmc:open}

# вот это важно
[arcmc.archive]
Regex=\\.(tar|tar\\.gz|tgz|tar\\.bz2|tbz2|tar\\.xz|txz|tar\\.zst|tzst|zip|jar|war|ear|7z|cpio)$
RegexIgnoreCase=true
Open=%plugin{arcmc:open}
View=%plugin{arcmc:view}

[sqlite.database]
Type=^SQLite 3\\.x database
Open=%plugin{sqlite:open}
View=%plugin{sqlite:view}

[sqlite.database-name]
Regex=\\.(sqlite|sqlite3|sqlitedb)$
RegexIgnoreCase=true
Open=%plugin{sqlite:open}
View=%plugin{sqlite:view}

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

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

Ага, вижу:

mc6 -F 
Домашний каталог: /home/yars
Корневой каталог профиля: /home/yars/.mc6

[Системные данные]
    Каталог с файлами настроек: /etc/mc6/mc/
    Каталог с файлами данных: /usr/share/mc6/mc/
    Скрипты обработки файлов по расширению: /usr/lib/mc6/mc/ext.d/
    Модули и скрипты ВФС: /usr/lib/mc6/mc/
	extfs.d:        /usr/lib/mc6/mc/extfs.d/
    Panel plugins: /usr/lib/mc6/panel-plugins
                   (directory not found)
    Editor plugins: /usr/lib/mc6/editor-plugins
                   (directory not found)
    Runtime plugins: /usr/lib/mc/runtime-plugins
                   mc-lua.so
    Lua scripts:      /usr/share/mc6/mc/lua/scripts
    Lua modules:      /usr/share/mc6/mc/lua/lib

[Пользовательские данные]
    Каталог с файлами настроек: /home/yars/.mc6/.config/mc6/
    Каталог с файлами данных: /home/yars/.mc6/.local/share/mc6/
	skins:          /home/yars/.mc6/.local/share/mc6/skins/
	extfs.d:        /home/yars/.mc6/.local/share/mc6/extfs.d/
	mcedit macros:  /home/yars/.mc6/.local/share/mc6/mc.macros
	mcedit external macros: /home/yars/.mc6/.local/share/mc6/mcedit/macros.d/macro.*
    Lua scripts:      /home/yars/.local/share/mc6/lua/scripts/
    Lua modules:      /home/yars/.local/share/mc6/lua/lib/
    Legacy Lua scripts: /home/yars/.config/mc/lua/scripts/
    Legacy Lua modules: /home/yars/.config/mc/lua/lib/
    Каталог с кэшируемыми данными: /home/yars/.mc6/.cache/mc6/
    Panel plugins: /home/yars/.local/lib/mc6/panel-plugins
                   (directory not found)
    Editor plugins: /home/yars/.local/lib/mc6/editor-plugins
                   (directory not found)
yars068 ★★★★★
()
Ответ на: комментарий от yars068
ошибка: не удалось завершить транзакцию (конфликтующие файлы)
mc6-plugins-git: /usr/lib/mc/runtime-plugins/mc-lua.so exists in filesystem (owned by mc6-git)
Обнаружены ошибки, пакеты не обновлены.
 -> ошибка установки: [/tmp/mc6-plugins-git-6.0.3.305.g6dc6657cf-1-x86_64.pkg.tar.zst] - exit status 1

Корень проблемы в этом.

UPD. Установил с --overwrite. [Resoved, fixed] :)

Должен ли mc-lua.so идти в пакете с самим mc, или его место в пакете с плагинами?

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

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

angel_il ★★★★★
()

@yars068 удалил комментарий:

А вот над клавиатурными комбинациями придётся плотно посидеть.
…

А я нашёл в новом диалоге настройки кнопкосочетаний:

  • [ Terminal ]
  • [ Edit term file ]
dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Ага, я потом тоже нашёл эти же настройки, плюс можно правкой конфигов всё настроить, потому и удалил. Но да, посидеть придётся хорошо – добиться неконфликтующих настроек будет не так-то просто :)

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

есть, там нет ограничений что именно баш, я докере проверял что работает одинаково в bash/zsh/fish, но dash и sh они сильно ограниченные по возможностям и там не все работает.

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

Kitty terminal. Запускаю mc6 в zsh (Oh My Zsh). Жму Ctrl+O.
echo $SHELL выдает /bin/zsh.
Ctrl+R не работает. Поиск по истории, путем ввода части команды и нажатия стрелки вверх - не работает.
История по стрелке вверх дает только то, что вводилось именно в этой сессии в mc6. При этом history выдает полный набор истории zsh.

Странно как-то. Вот и я задал вопрос - как вообще выключить встроенный терминал и остаться на zsh?

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

Вот и я задал вопрос - как вообще выключить встроенный терминал и остаться на zsh?

без синхронизации переходов по cd в шеле и в обратную сторону после изменения пути в панелях?

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

Ctrl+R не работает. Поиск по истории, путем ввода части команды и нажатия стрелки вверх - не работает.История по стрелке вверх дает только то, что вводилось именно в этой сессии в mc6. При этом history выдает полный набор истории zsh.

на самом деле работает но бажно. и вот что там происходит на самом деле: сейчас ctrl+R доходит до zle но не видно реальной индикации процесса (криво обрабатываю ответ zsh), и это баг рендеринга, такие же проблемы я полечил в баш/fish, теперь придется и в zsh тоже. Если получится минимальными правками то я напишу.

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

И еще: в Gentoo версия 6.0.3 не собирается с флагом mongo, скорее всего из-за старой библиотеки dev-libs/mongo-c-driver-1.24.4-r1, но в репах gentoo и guru эта версия единственная.

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