Skip to content
LaexPublic

About

Двухпанельный файловый менеджер в духе DOS Navigator и Far: GPU-отрисовка, ConPTY, SSH, плагины. Delphi

Topics

Resources

Contributing

Security policy

Stars

52 stars

Watchers

2 watching

Forks

Repository files navigation

Modern Terminal Navigator 2 (MTN2)

English | Deutsch | Русский | 中文 | 한국어

Двухпанельный файловый менеджер в духе Necromancer's DOS Navigator и Far Manager со встроенной консолью, терминалами, просмотрщиком и редактором. Интерфейс – текстовый (TUI), но рисуется в обычном GUI-окне: виртуальная сетка символов на холсте Delphi FireMonkey (Skia, с откатом на стандартный холст по --no-skia) с TrueType-шрифтами, Unicode и 32-битным цветом. Китайские, японские и корейские иероглифы занимают две колонки, как в других терминалах.

CI License: MPL-2.0

MTN2: панели с вкладками

Страница проекта · Скачать последнюю версию · Что нового · Частые вопросы · Участие в проекте · Обсуждения · Статья на Хабре

MTN2 сделан для тех, кто привык к DOS Navigator и Far Manager и работает с клавиатуры: системные и сетевые инженеры, разработчики, администраторы. Он не заменяет Far Manager и не конкурирует с Total Commander, это ещё один двухпанельник со своими привычками.

Принципы

  • Без телеметрии и облачных функций. Единственное обращение к сети – проверка новой версии на GitHub (раз в сутки, при запуске); её можно отключить в ≡ → Обновления... (флажок «Проверять обновления при запуске»). Подробнее – в FAQ.
  • Переносимость. Один каталог без установщика и записей в реестр; в переносной версии настройки лежат рядом с MTN2.exe, в обычной – в %APPDATA%\MTN2. Настройки, темы и раскладка клавиш – обычные JSON-файлы.
  • Клавиатура прежде всего. Раскладка клавиш близка к Far Manager, полностью переопределяется; вкладки и терминалы – как в ConEmu.
  • Настоящий терминал. Консоль на ConPTY (cmd, PowerShell, WSL, SSH), а не имитация.
  • Расширяемость. Нативные и WebAssembly-плагины: свои файловые системы, панели, команды, диалоги, подсветка текста.

В статье на Хабре название расшифровано как Modern Turbo Navigator; актуальное название – Modern Terminal Navigator.

Скриншоты

Две панели с вкладками Архив как папка
Панели с вкладками, тема Far Classic Архив открывается как папка
Просмотр Markdown Редактор с подсветкой JSON
Просмотр Markdown с таблицами Редактор, подсветка даёт плагин
Встроенная консоль Тема Dracula
Встроенная консоль (Ctrl+O) Тема Dracula

Возможности

  • Панели: две панели с вкладками, Brief/Full/колоночные режимы, сортировка, быстрый поиск и живой фильтр, выделение по маске, сравнение каталогов, история и избранные папки, длинные пути (> MAX_PATH).
  • Операции с файлами: копирование, перенос и удаление в фоновых заданиях с прогрессом, атрибуты и даты, ссылки, корзина, контрольные суммы, синхронизация каталогов.
  • Консоль и терминалы: командная строка под панелями, настоящий ConPTY (cmd, PowerShell, pwsh, Git Bash, WSL, SSH), ANSI/VT-разбор, альтернативный экран для TUI-программ, рабочие пространства терминалов. Консольные программы, запущенные из панели или командной строки, работают во встроенной консоли, и их вывод остаётся на экране (Ctrl+O).
  • Просмотр и редактирование: встроенные Viewer (текст, hex, потоковое чтение больших файлов), Editor, Quick View (Ctrl+Q), просмотр Markdown, внешние просмотрщик/редактор.
  • Виртуальные ФС: архивы как папки (zip, 7z через 7z.dll), SFTP по SSH, плагинные VFS.
  • Настройка: переопределяемые клавиши (keymap.json), темы из файлов (Far Classic, Norton Commander, Midnight Commander, Total Commander, Gruvbox, Tokyo Night, Dracula, Nord, Solarized, Light, High Contrast и др.; свои – в редакторе тем), меню пользователя (F2), ассоциации файлов, контекстная справка F1.
  • Языки: интерфейс и справка на английском, русском, немецком и китайском (упрощённом); язык выбирается в Настройки → Шрифт / экран... и применяется без перезапуска; при первом запуске берётся язык Windows, если для него есть перевод. Свой язык добавляется папкой resource\<язык>\ рядом с MTN2.exe (locale.json, strings.json, справка в help\); перекомпиляция не нужна. Встроен только английский.
  • Unicode: иероглифы CJK (основная многоязычная плоскость), хирагана, катакана, хангыль и полноширинные формы показываются в консоли, панелях, вкладках и заголовках в две колонки; шрифт подставляется системный.
  • Плагины: нативные DLL и WebAssembly (через Wasmtime) – свои VFS-схемы и панели для них, пункты меню, привязки клавиш, шина сообщений. Протоколы диалогов, оверлеев и строк состояния для плагинов описаны, но пока доступны только самой программе – см. PLUGIN_BOUNDARIES.
  • Обновления: раз в сутки проверка новой версии на GitHub; загрузка (с проверкой SHA-256), установка и перезапуск – только после вопроса пользователю. Меню ≡ → Обновления....

Поддерживаются Windows x64 (графическая программа) и Linux x86-64: mtn2-tui занимает весь текстовый терминал, в нём те же панели, просмотрщик, редактор, консоль и плагины, он работает по SSH и в tmux (см. docs/LINUX.md). Пробная графическая версия для Linux (mtn2-sdl) показывает те же окна в обычном окне SDL2: системный шрифт, мышь и колесо, ввод в любой раскладке, буфер обмена рабочего стола, картинки в быстром просмотре. Она работает на X11 и Wayland (в Windows – через WSLg), входит в готовые пакеты tar.gz и .deb, из исходников собирается ключом -Sdl. Нужны libSDL2 и libfreetype, для картинок PNG и JPEG – libSDL2_image: зависимости, параметры и запуск описаны в docs/LINUX.md, раздел «Версия с окном SDL2». Сборка под macOS – в планах.

Установка

Готовые сборки – на странице Releases:

  • MTN2-<версия>-win64.zip – настройки и история хранятся в %APPDATA%\MTN2;
  • MTN2-<версия>-win64-portable.zip – переносная версия: всё хранится рядом с MTN2.exe;
  • MTN2-<версия>-linux-x64.tar.gz и MTN2-<версия>-linux-x64.deb – версия для Linux: mtn2-tui (внутри окна терминала, работает по SSH) и пробная графическая mtn2-sdl (окно SDL2, нужны libSDL2 и libfreetype): установка, зависимости и параметры – в docs/LINUX.md.

Windows: архив достаточно распаковать в любую папку и запустить MTN2.exe. Дальше программа обновляется сама (меню ≡ → Обновления...). В комплект входит 7z.dll из 7-Zip (GNU LGPL; тексты лицензий – в plugins\mtn.7z\license.txt, подробности – в THIRD-PARTY.md): с ней открываются архивы 7z и другие форматы 7-Zip. Её можно заменить своей x64-версией в plugins\mtn.7z\; zip открывается и без неё.

Linux: tar xzf MTN2-*-linux-x64.tar.gz && ./mtn2/install.sh (для всех пользователей – с sudo) или sudo apt install ./MTN2-*-linux-x64.deb. После установки mtn2 запускает версию для терминала, mtn2-sdl – окно SDL2. Папку из архива можно и не устанавливать: mtn2/mtn2-tui и mtn2/mtn2-sdl запускаются там, где лежат.

Dev-сборки

Пре-релизные (dev) сборки публикуются после каждого изменения в main в отдельном репозитории Laex/MTN2-dev. Чтобы получать их автоматически, откройте ≡ → Обновления... и включите флажок dev-канала; вернуться на стабильные релизы можно, сняв его. Dev-сборки содержат свежие изменения и могут быть менее стабильными.

Сборка

Нужны RAD Studio 13 (Delphi, Studio\37.0) и Windows x64; для WASM-плагина mtn.ws – Rust. Версия для Linux собирается из Windows компилятором dcclinux64, тесты для неё запускаются в WSL.

./src/build.ps1 -Config Release -Platform Win64   # bin\win64\MTN2.exe + bin\win64\plugins\
./src/tests/run-tests.ps1                          # регрессионные тесты (DUnitX)
./src/build-linux.ps1                              # bin\linux64\mtn2-tui
./src/tests/run-tests-linux.ps1                    # те же тесты в WSL

Запуск: bin\win64\MTN2.exe [--no-skia] [--fps] [путь]. Подробности – в docs/BUILDING.md.

Структура репозитория

Путь Содержимое
src/Core ядро: панели, VFS, консоль, редактор, диалоги, плагинный хост
src/Platform платформенный слой: Windows и Posix с одноимёнными модулями
src/Hosts оболочки: Ansi – версия для текстового терминала
src/Forms, src/dialogs, src/Assets/themes главная форма, JSON-диалоги, корневая тема
src/plugins встроенные плагины (mtn.7z, mtn.tmp, mtn.ws, WASM-демо)
src/tests регрессионные тесты DUnitX по группам и раннер run-tests.ps1
src/tools DialogDesigner, ExportDialogJson, группа проектов Group.groupproj, служебные скрипты
bin/win64, bin/linux64 результат сборки по платформам
bin/win64/resource языковые пакеты (строки интерфейса и справка F1: en/ru/de/zh) и поставляемые темы (themes/), поставляются вместе с программой
docs документация разработчика, скриншоты (docs/images)

Документация

  • FAQ.md – частые вопросы: сеть и приватность, SmartScreen, масштаб экрана, темы, плагины.
  • CONTRIBUTING.md – как сообщить об ошибке, предложить идею, собрать проект и отправить изменение.
  • SDS.md – полная спецификация: концепция, структуры данных, API, дорожная карта.
  • ARCHITECTURE.md – слои, потоки данных и инварианты.
  • BUILDING.md – сборка, тесты, CI/CD.
  • LINUX.md – версии для Linux (терминал и окно SDL2): установка, параметры, зависимости.
  • THEMES.md – формат файла темы и роли цветов.
  • HELP.md – исходный текст справки пользователя одним файлом.
  • Плагинные контракты: PLUGIN_BOUNDARIES, PANEL, DIALOG, INPUT, OVERLAY, STATUS, TEXTAREA, TOOLBAR, UI_PRIMITIVES.

Как создавался проект

При разработке MTN2 использовались ИИ-ассистенты, в том числе собственной разработки. С их помощью созданы:

  • предпроектная документация – спецификация (SDS.md), обзор архитектуры, описания протоколов плагинов в docs/;
  • отслеживание дорожной карты и планов работ;
  • большинство комментариев в коде;
  • регрессионные тесты на DUnitX (src/tests);
  • выходная текстовая документация: справка F1 (bin/win64/resource/<язык>/help), CHANGELOG.md, описания выпусков.

Лицензия

Mozilla Public License 2.0.

About

Двухпанельный файловый менеджер в духе DOS Navigator и Far: GPU-отрисовка, ConPTY, SSH, плагины. Delphi

Topics

Resources

Contributing

Security policy

Stars

52 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages