Skip to content

Latest commit

 

History

History
169 lines (130 loc) · 17.4 KB

LINUX.md

File metadata and controls

169 lines (130 loc) · 17.4 KB

MTN2 в терминале Linux

mtn2-tui – версия MTN2 для текстового терминала Linux. Окна те же, что в графической программе: две панели с вкладками, просмотрщик, редактор, консоль, терминалы, меню, диалоги и справка. Вместо окна программа занимает весь терминал: на экран выводятся только изменившиеся ячейки (TrueColor, широкие символы CJK в две колонки), ввод идёт с клавиатуры и мыши терминала. Работает по SSH, в tmux, в контейнерах и на серверах без X11.

Сборка – BUILDING.md, раздел «Сборка под Linux». Версия с обычным окном SDL2 (mtn2-sdl) описана в разделе «Версия с окном SDL2» ниже.

Требования

Linux x86-64 с glibc 2.34 или новее (Ubuntu 22.04, Debian 12, Fedora 35, RHEL 9 и новее) и libstdc++, libz. Графический стек не нужен: Skia и FireMonkey, на которых построено окно Windows-версии, в Linux-программах не используются (mtn2-tui рисует текстом, mtn2-sdl – через SDL2 и FreeType). Для открытия файлов в графической среде используется xdg-open, для SFTP – клиент sftp.

В программу встроен только английский язык. Остальные языки и справка F1 лежат в папке resource/<язык>/ рядом с программой (она входит в архив и пакет); новый язык добавляется копированием такой папки, см. SDS.md (раздел о локализации).

Установка

Релиз содержит MTN2-<версия>-linux-x64.tar.gz и пакет MTN2-<версия>-linux-x64.deb.

tar xzf MTN2-*-linux-x64.tar.gz && ./mtn2/install.sh    # для себя: ~/.local/opt/mtn2, команда mtn2
sudo ./mtn2/install.sh                                  # для всех: /opt/mtn2, команда mtn2
sudo apt install ./MTN2-*-linux-x64.deb                 # то же пакетом (рекомендует 7zip или p7zip-full и chafa)
./mtn2/install.sh --uninstall                           # удалить

Папку из архива можно и не устанавливать: mtn2/mtn2-tui запускается где лежит.

Запуск

mtn2-tui [параметры] [папка]
Параметр Что делает
папка открывает её новой вкладкой
--no-mouse не просить у терминала события мыши (тогда выделение и копирование – средствами терминала)
--colors=truecolor|256|16 число цветов; по умолчанию – по COLORTERM и TERM (Windows Terminal определяется по WT_SESSION)
--dump [Ш В] нарисовать один экран простым текстом в стандартный вывод и выйти (для проверок без терминала)
--version, --help версия, справка

Выход – F10 или Alt+X. Панели, вкладки и настройки сохраняются при выходе.

Версия с окном SDL2

mtn2-sdl – та же программа в обычном графическом окне: рабочий стол Linux (X11 или Wayland, в Windows – WSLg), шрифт из системы, мышь и колесо, ввод в любой раскладке, буфер обмена рабочего стола. Окна, меню, диалоги, плагины и настройки те же, что у mtn2-tui, и лежат в том же ~/.config/mtn2. Версия пробная; она входит в архив tar.gz и пакет .deb (команда mtn2-sdl рядом с mtn2), а из исходников собирается ключом -Sdl.

Зависимости

Пакет Для чего
libsdl2-2.0-0 окно, события, буфер обмена (обязательно)
libfreetype6 рисование символов (обязательно)
fontconfig, fonts-dejavu-core поиск файла шрифта; нужен хотя бы один моноширинный шрифт
libsdl2-image-2.0-0 картинки PNG, JPEG, GIF, WebP в быстром просмотре; без неё показываются только BMP
sudo apt install libsdl2-2.0-0 libfreetype6 fontconfig fonts-dejavu-core libsdl2-image-2.0-0

Библиотеки подключаются при запуске, а не при сборке: без libsdl2-image программа стартует, а при нехватке остальных пишет, чего не хватает. Проверка: mtn2-sdl --self-check выводит найденные библиотеки, файл шрифта, ресурсы и плагины.

Сборка и запуск

Сборка идёт из Windows тем же компилятором, что и mtn2-tui:

./src/build-linux.ps1 -Sdl             # -> bin\linux64\mtn2-sdl (вместе с mtn2-tui)

Запуск – ./mtn2-sdl [параметры] [папка] рядом с plugins/ и libwasmtime.so; в WSL с WSLg окно появляется на рабочем столе Windows.

Параметр Что делает
папка открывает её новой вкладкой
--font=ИМЯ семейство шрифта (по умолчанию DejaVu Sans Mono)
--size=N размер шрифта в пикселях
--cols=N, --rows=N размер сетки при открытии окна
--snapshot=файл.png нарисовать один кадр в PNG без окна и выйти (для проверок без рабочего стола)
--self-check проверить библиотеки, шрифт, ресурсы и плагины
--version, --help версия, справка

В окне размер шрифта меняется Ctrl и колесом, Ctrl+Плюс, Ctrl+Минус; Ctrl+0 возвращает исходный.

Что нужно знать

  • Набранный текст берётся из событий текстового ввода, а сочетания с Ctrl и Alt – из физических клавиш, поэтому они работают в любой раскладке. AltGr печатает символы и не включает Alt.
  • Файл, брошенный в окно из файлового менеджера, вставляется в программу как путь.
  • Картинка быстрого просмотра рисуется пикселями поверх сетки и остаётся, пока просмотр открыт.
  • Ошибки запуска и работы записываются в sdl-error.log в каталоге настроек.
  • Пока нет значков оболочки в панелях, ввода через IME и перетаскивания файлов из окна наружу; размер шрифта между запусками не сохраняется.
  • В WSL процессы живут, пока работает дистрибутив: окно, запущенное без открытой консоли WSL, надо стартовать отсоединённо (setsid nohup ./mtn2-sdl &).

Что нужно от терминала

  • UTF-8 и TrueColor (kitty, WezTerm, Alacritty, foot, GNOME Terminal, Konsole, Windows Terminal, iTerm2). В терминалах на 256 цветов программа сама подбирает ближайшие цвета, на 16 цветах (консоль linux) – ближайшие из палитры ANSI.
  • Расширенная клавиатура. При старте программа включает протокол kitty keyboard; терминал, который его знает (kitty, foot, Ghostty, Alacritty 0.13+, WezTerm с enable_kitty_keyboard), передаёт все сочетания, включая Ctrl+Shift+..., Ctrl+; и Ctrl+Tab, а на нелатинской раскладке сочетания работают по клавише, как на Windows. В остальных терминалах запрашивается режим modifyOtherKeys xterm. Если и его нет, часть сочетаний недоступна: команды с Ctrl+Shift вызывайте через меню (F9).
  • Отпускание клавиш терминал не передаёт, поэтому то, что на Windows живёт, пока зажат Ctrl или Alt, здесь завершается само: выбор диска по Ctrl+Left/Right применяется через 0,7 с после последнего нажатия, а быстрый поиск по Alt и список истории Alt+Left/Right закрываются через 1,5 с или любой клавишей без Alt.
  • Мышь: нажатия, перетаскивание и колесо (протокол SGR 1006). Чтобы выделить текст средствами терминала, держите Shift.
  • Буфер обмена: копирование отправляется в терминал последовательностью OSC 52 (её понимают почти все современные терминалы; в tmux включите set -g set-clipboard on). Вставка – обычная вставка терминала (Ctrl+Shift+V), она приходит в программу как «вставка в скобках».
  • Копирование файлов: Ctrl+C и Ctrl+X на панели кладут список файлов в буфер рабочего стола через wl-copy (Wayland) или xclip (X11), поэтому их можно вставить в Nautilus, Dolphin, Thunar и другие файловые менеджеры, а файлы, скопированные там, вставляются в панель по Ctrl+V. Пакеты: wl-clipboard или xclip. Без них (и по SSH без графической среды) список передаётся только внутри программы.

Что работает

  • Панели, вкладки и рабочие пространства, быстрый поиск, фильтр, выделение по маске, сравнение каталогов, синхронизация, история и избранные папки.
  • Копирование, перенос, удаление, создание папок и ссылок (символические и жёсткие), контрольные суммы, поиск файлов.
  • Колонка «Attr» показывает права (rwxr-xr-x); скрытыми считаются файлы, имя которых начинается с точки.
  • Команда «Атрибуты» (Ctrl+A) открывает диалог прав: режим в восьмеричной записи (0644, 4755) с подсказкой в виде rw-r--r--, владелец и группа, «Обрабатывать вложенные папки». В план попадают только изменённые поля; смена владельца требует прав root.
  • Диски: точки монтирования из /proc/self/mountinfo; быстрые папки: домашняя, пользовательские каталоги XDG, /, /etc, /usr, /var, /opt, /tmp, /media, /mnt.
  • Корзина по спецификации freedesktop.org: ~/.local/share/Trash (files и info).
  • Просмотрщик, редактор, Quick View, Markdown. Обновление списка при изменении каталога – через inotify.
  • Папка консоли переходит в панель, а команда из командной строки возвращает в панели по завершении (параметр «Всегда возвращаться в панели»): папку оболочки программа читает из /proc, конец команды – по тому, что оболочка снова на переднем плане и вывод стих.
  • Консоль под панелями (Ctrl+O) и терминалы во вкладках работают на настоящем псевдотерминале: bash, zsh, fish, ssh-профили. Оболочки берутся из /etc/shells и $SHELL; Enter на исполняемом файле запускает его в консоли.
  • Архивы zip как папки, SFTP (нужен клиент sftp).
  • Плагины из папки plugins/: библиотеки .so и WebAssembly-модули (нужен libwasmtime.so, он лежит рядом с программой). Плагин mtn.7z открывает 7z, RAR, TAR, ISO и другие архивы как папки и упаковывает в 7z через программу 7-Zip: установите пакет 7zip (команда 7zz) или p7zip-full (команда 7z); без неё плагин сообщает, что архивов не откроет.
  • Картинки (png, jpeg, gif, bmp, webp и другие, что понимает chafa) в быстром просмотре показываются цветными блоками: программа вызывает chafa --format=symbols и выводит результат в ячейки панели. Нужен пакет chafa; без него на месте картинки подсказка. Показываются только локальные файлы; картинки в архивах и на SFTP не просматриваются.
  • Файл, который нечем открыть в окружении без рабочего стола, открывается во встроенном просмотрщике; с рабочим столом (DISPLAY или WAYLAND_DISPLAY) – через xdg-open.

Чего нет

  • Нативные плагины, написанные для Windows (.dll): в Linux работают плагины-библиотеки .so, собранные под Linux.
  • Значки файлов в панелях (в терминале нечем их показать), перетаскивание файлов в другие программы, окна плагинов.
  • Смена шрифта и масштаба (это забота терминала).
  • Атрибуты Windows (скрытый, системный, архивный, дата создания): диалог прав меняет режим, владельца и группу.

Обновление

«Помощь – Проверить обновления» и тихая проверка после запуска работают, как в Windows: берётся пакет MTN2-<версия>-linux-x64.tar.gz последнего релиза, проверяется контрольная сумма, распаковывается рядом с программой и устанавливается. Нужны права на запись в папку программы и tar. После установки программа запускается заново в том же терминале. Версия берётся из файла version рядом с программой.

Права администратора

Если операция (копирование, перенос, удаление, создание папки, сохранение файла) закончилась отказом в доступе, программа предлагает повторить её от администратора. Пароль спрашивается в окне программы и передаётся команде sudo -S -v; сам пароль не хранится, дальше работает кэш sudo, он же решает, когда права истекают (тогда пароль запрашивается снова). Каждая операция – одна команда sudo (rm, mkdir, cp, mv, cat). Нужен установленный sudo и учётная запись, которой он разрешён; под root предложения нет.

Файлы

Настройки лежат в $XDG_CONFIG_HOME/mtn2 (по умолчанию ~/.config/mtn2): session.json, keymap.json, themes/, истории. Ошибки интерфейса, которые не остановили программу, записываются в tui-error.log там же.