Мой блог
Modern Turbo Navigator 2: двухпанельный файловый менеджер на Delphi и Skia
Знаете это царапающее чувство, когда в современной операционной системе открываешь привычный файловый менеджер, а он задумчиво ждет пару секунд перед отображением каталога или сетевого диска? Именно стремление избавиться от подобных задержек и создать идеальный инструмент «без отрыва рук от клавиатуры» подтолкнуло меня к разработке собственного проекта — Modern Turbo Navigator 2 (MTN2). Из NDN с любовью — так можно охарактеризовать эту попытку объединить классическую эстетику текстовых интерфейсов с возможностями современных графических конвейеров.






Информационный шум вокруг уверяет, что десктопные интерфейсы давно застряли в браузерных движках, а облачные хранилища заменили локальные диски. Но на практике, когда нужно за полминуты навести порядок в каталогах, сравнить контрольные суммы или быстро править конфигурационные файлы, инженеры по-прежнему инстинктивно тянутся к двухпанельной компоновке. Оценивая эволюцию таких утилит, как DOS Navigator, FAR Manager или Total Commander, я понял: оптимального баланса скорости, клавиатурной эргономики и визуального комфорта проще добиться, написав инструмент самостоятельно с учетом собственных привычек.

Выбор архитектуры и технологий
Первая версия утилиты создавалась на Rust в связке с crossterm и ratatui, однако разработка быстро уперлась в жесткие ограничения стандартной системной консоли Windows. Дискретные знакоместа, проблемы с масштабированием шрифтов колесом мыши, отсутствие нормальных системных значков рядом с именами файлов и периодическая потеря сложных комбинаций вроде Ctrl+Alt+Ins сделали дальнейшее развитие тупиковым. Использование тяжелых решений вроде Electron с его сотнями мегабайт памяти для простой навигации по дискам также отметалось сразу.
Единственным правильным решением оказалось создание собственного графического окна с отрисовкой виртуальной символьной сетки силами GPU. В качестве рабочей среды был выбран Object Pascal в среде Delphi со связкой FireMonkey и библиотеки Skia. Высокая скорость компилятора, монолитный бинарник без внешних сред исполнения и глубокое знание платформы позволили получить мгновенный холодный старт и минимальное потребление оперативной памяти.

Рабочее пространство MTN2 спроектировано как двухпанельный менеджер с поддержкой вкладок, системных иконок, цветовой подсветки и быстрого просмотра содержимого файлов на соседней панели.
Организация интерфейса опирается на компактные записи (record) вместо тяжелых классов, размещая всю сетку экрана в едином непрерывном блоке памяти. Композитор окон обрабатывает матрицу видимых символов с учетом теней и Z-порядка, а движок Skia выполняет аппаратный рендеринг.
Встроенный терминал и эргономика
Особое внимание уделено интеграции с командной оболочкой. Встроенный эмулятор работает напрямую через Windows Pseudo Console API (ConPTY), поддерживая xterm 24-bit TrueColor, вывод PowerShell и плавную отрисовку градиентов без мерцания и задержек.
Управление построено на базе проверенной раскладки FAR Manager, благодаря чему основные действия выполняются вслепую, без необходимости тянутся к мыши. Для работы с документацией встроен контекстный просмотрщик Markdown, поддерживающий заголовки, списки, ссылки, подсветку блоков кода и псевдографическое оформление таблиц.

Безопасность и целостность данных подкрепляются встроенными диалогами для расчета контрольных сумм, где тщательно прорисованы тени, псевдографические рамки интерфейса и элементы управления.
Производительность и дальнейшее развитие
Системные замеры показывают отличные результаты: в состоянии покоя интерфейс потребляет 0 кадров в секунду, не нагружая GPU впустую, а сборка кадра через Skia занимает в среднем всего около 3.4 миллисекунды. Потребление оперативной памяти при старте составляет около 20.9 МБ, а в активной сессии с десятком вкладок не превышает 41 МБ. Проект не требует инсталлятора, не засоряет системный реестр и легко переводится в портативный режим с помощью файла-маркера.

На текущем этапе альфа-версия MTN2 уже закрывает подавляющее большинство ежедневных задач: от работы с архивами как с обычными папками и быстрого поиска до пакетных операций и запуска пользовательских сценариев. В планах — портирование терминального слоя под Linux и macOS, расширение поддержки плагинов и дальнейшая оптимизация кодовой базы.

