Add keyboard multi-select workflow and project description doc
This commit is contained in:
parent
deeb261b89
commit
3d1c572e16
4 changed files with 458 additions and 120 deletions
128
docs/project-description.md
Normal file
128
docs/project-description.md
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
# vcom: описание проекта и реализованного функционала
|
||||
|
||||
`vcom` — терминальный файловый менеджер в стиле Midnight Commander, написанный на Go на базе Bubble Tea.
|
||||
|
||||
## 1. Основная концепция
|
||||
|
||||
Приложение работает в двухпанельном режиме:
|
||||
- левая файловая панель,
|
||||
- правая файловая панель.
|
||||
|
||||
Активная панель управляется с клавиатуры и мыши, неактивная сохраняет своё состояние (путь, позицию курсора).
|
||||
|
||||
## 2. Реализованные режимы интерфейса
|
||||
|
||||
- Двухпанельный браузер директорий.
|
||||
- Режим Info/Preview (`i`): неактивная панель временно заменяется превью выбранного элемента из активной панели.
|
||||
- Режим выделения текста в превью (`Ctrl+t`) для текстовых файлов.
|
||||
- Модальные окна (подтверждения, прогресс операций, help, уведомления).
|
||||
|
||||
## 3. Навигация и просмотр
|
||||
|
||||
- Перемещение по списку: `j/k`, `Up/Down`, `PgUp/PgDn`.
|
||||
- Переключение активной панели: `Tab`, `h`, `l`.
|
||||
- Вход в директорию: `Enter` / `Right`.
|
||||
- Переход в родительскую директорию: `Backspace` / `Left`.
|
||||
- Обновление панелей: `r`.
|
||||
- Внешний просмотр файла: `F3` (`$PAGER` при наличии).
|
||||
- Внешнее редактирование файла: `F4` (`$VISUAL/$EDITOR` или fallback-редакторы).
|
||||
|
||||
## 4. Операции с файлами и директориями
|
||||
|
||||
- `F5` — копирование.
|
||||
- `F6` — перемещение.
|
||||
- `F7` — создание директории.
|
||||
- `F8` — удаление.
|
||||
|
||||
Операции copy/move реализованы с:
|
||||
- предварительным диалогом подтверждения,
|
||||
- подсчётом объёма и количества файлов,
|
||||
- прогрессом по байтам и по количеству файлов,
|
||||
- возможностью отправить операцию в фон (`b`),
|
||||
- уведомлением о завершении фоновой операции.
|
||||
|
||||
Подтверждение overwrite учитывается для существующих целей.
|
||||
|
||||
## 5. Мультивыделение
|
||||
|
||||
Реализовано выделение элементов с клавиатуры:
|
||||
- `Shift+Up/Shift+Down` (а также `Shift+K/Shift+J`) добавляют/снимают выделение на текущем проходе.
|
||||
- Повторный проход по уже выделенному элементу снимает его выделение (toggle).
|
||||
- `Esc` очищает выделение активной панели.
|
||||
|
||||
Если есть выделенные элементы, `F5/F6/F8` применяются ко всему выделенному набору.
|
||||
Если выделения нет — операция применяется к текущему элементу под курсором.
|
||||
|
||||
## 6. Работа мыши
|
||||
|
||||
- ЛКМ: выбор элемента и активация панели.
|
||||
- Двойной ЛКМ: открытие элемента.
|
||||
- ПКМ: переключение режима Info/Preview для выбранного элемента.
|
||||
- Колесо мыши: прокрутка списка; в preview-области — прокрутка содержимого превью.
|
||||
|
||||
## 7. Help-окно
|
||||
|
||||
`F1` или `?` открывает справку по управлению.
|
||||
|
||||
Особенности help:
|
||||
- логические блоки (Navigation, View and Panels, Dialogs and Transfers, Mouse),
|
||||
- цветовое оформление заголовков и элементов на основе активной темы,
|
||||
- закрытие по `F1`, `?`, `Esc`, `Enter`, `q`.
|
||||
|
||||
## 8. Модальные окна и закрытие
|
||||
|
||||
Во всех модальных окнах поддержано закрытие по `q`.
|
||||
|
||||
Поведение в прогрессе copy/move:
|
||||
- `q` не прерывает операцию,
|
||||
- окно закрывается,
|
||||
- операция продолжается в фоне.
|
||||
|
||||
## 9. Визуальные доработки
|
||||
|
||||
- Убрана верхняя title-строка приложения.
|
||||
- Убраны текстовые лейблы `LEFT/RIGHT` в заголовках панелей.
|
||||
- Убрана строка `CONTENT` в preview-панели.
|
||||
- Путь активной панели сделан жирным и в цвете `TextFile` текущей темы.
|
||||
- Подсветка курсора отображается только в активной панели.
|
||||
- Выделенные (marked) элементы подсвечиваются цветом `Danger` темы по всей строке.
|
||||
|
||||
## 10. Конфигурация
|
||||
|
||||
Поддерживается TOML-конфиг (`vcom.toml`), включая:
|
||||
- стартовые директории,
|
||||
- визуальные параметры UI,
|
||||
- набор и видимость колонок,
|
||||
- сортировку,
|
||||
- поведение превью,
|
||||
- поведение подтверждений и операций.
|
||||
|
||||
## 11. Технологический стек
|
||||
|
||||
- Go
|
||||
- Bubble Tea (`github.com/charmbracelet/bubbletea`)
|
||||
- Bubbles
|
||||
- Lip Gloss
|
||||
- TOML (`pelletier/go-toml/v2`)
|
||||
|
||||
## 12. Сборка и запуск
|
||||
|
||||
Локально:
|
||||
|
||||
```bash
|
||||
go run ./cmd/vcom
|
||||
```
|
||||
|
||||
Сборка бинаря:
|
||||
|
||||
```bash
|
||||
go build -o vcom ./cmd/vcom
|
||||
```
|
||||
|
||||
Nix:
|
||||
|
||||
```bash
|
||||
nix run .
|
||||
```
|
||||
|
||||
Для запуска тегов из GitHub-репозитория рекомендуется использовать версии с `v0.1.1` и выше.
|
||||
Loading…
Add table
Add a link
Reference in a new issue