sys: Added readme file

This commit is contained in:
Black_Raven committed 2026-06-02 11:46:28 +03:00
1 parent cd60bace64
commit 3e868c184a
2 files changed
+181

No files matched your search

+181
View File
@@ -0,0 +1,181 @@
# Rclone UI Manager
Кроссплатформенный графический интерфейс для [rclone](https://rclone.org/), написанный на Rust с использованием [egui](https://github.com/emilk/egui). Приложение предоставляет удобный способ управления облачными хранилищами (Google Drive, Dropbox, S3 и др.) и локальными файлами, поддерживает копирование, перемещение, удаление и синхронизацию с отображением хода выполнения операций.
![Скриншот Rclone UI Manager](assets/screenshot.png)
## Возможности
- **Автоматическая установка rclone** – обнаруживает системный rclone или загружает последнюю версию автоматически.
- **Управление удалёнными хранилищами (remotes)** – просмотр, проверка и использование всех настроенных в rclone подключений.
- **Локальный файловый менеджер** – навигация по локальной файловой системе, выбор папок назначения.
- **Основные файловые операции**:
- Копирование / Перемещение / Удаление нескольких файлов или папок.
- Рекурсивная обработка директорий.
- **Фоновые задачи** – асинхронные операции с индикаторами прогресса и статусом выполнения.
- **История навигации** – кнопки «Назад» / «Вперёд» для быстрого перемещения.
- **Пользовательские шрифты** – поддержка Sans.otf и NotoColorEmoji.ttf для улучшенного внешнего вида (опционально).
- **Кроссплатформенность** – работает на Windows, macOS и Linux.
## Системные требования
- **Rust** (при сборке из исходников) – стабильный инструментарий.
- **Cargo** – входит в состав Rust.
- **Операционная система** – Windows 10/11, macOS 10.15+ или современный дистрибутив Linux.
- **rclone** – не требуется, приложение загрузит его при необходимости.
## Установка
### Готовые сборки (пока не предоставляются)
В будущих релизах могут быть добавлены исполняемые файлы. Пока что собирайте из исходников.
### Сборка из исходников
1. Клонируйте репозиторий:
```bash
git clone https://github.com/yourusername/rclone-ui-manager.git
cd rclone-ui-manager
```
2. (Опционально) Поместите пользовательские шрифты в папку `assets/fonts/`:
- `Sans.otf`
- `NotoColorEmoji.ttf`
3. Соберите и запустите:
```bash
cargo run --release
```
Первый запуск может занять некоторое время из-за компиляции зависимостей. Исполняемый файл появится в `target/release/rclone-ui-manager` (или `rclone-ui-manager.exe` на Windows).
### Зависимости для Linux
На Linux могут потребоваться следующие системные библиотеки:
```bash
# Ubuntu / Debian
sudo apt install libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libwayland-dev pkg-config
# Fedora
sudo dnf install libX11-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel wayland-devel pkgconf
```
## Использование
1. Запустите приложение.
2. На левой боковой панели отобразится список ваших rclone remote (если они есть). Если remotes не настроены, используйте командную строку rclone для их добавления – в будущих версиях появится графический интерфейс для настройки.
3. Нажмите на имя remote, чтобы просмотреть его содержимое.
4. Выберите файлы/папки, щёлкая по их иконке (📁 или 📄). Можно выбирать несколько элементов.
5. После выбора внизу появятся кнопки: **Копировать**, **Переместить**, **Удалить**.
6. Для копирования/перемещения укажите путь назначения:
- **Облако** – введите путь в формате rclone (например, `gdrive:/backup`).
- **ПК** – выберите локальную папку через встроенный файловый браузер или введите путь вручную.
7. Нажмите **Начать** – операция запустится в фоне. Прогресс отображается на правой панели.
### Навигация
- **⬅ / ➡** – переход назад / вперёд по истории.
- **🔄** – обновить текущую директорию.
- **📁 .. (Вверх)** – подняться на уровень выше.
### Обработка ошибок
Сообщения об ошибках появляются во всплывающих окнах. Активные задачи перечислены на правой панели. Вы можете закрыть приложение, пока операции выполняются (они запускаются в отдельных потоках).
## Конфигурация
Приложение хранит настройки в стандартной пользовательской папке данных:
- Windows: `%APPDATA%\rclone-ui\`
- macOS: `~/Library/Application Support/rclone-ui/`
- Linux: `~/.local/share/rclone-ui/`
Сейчас в `AppSettings` хранятся только некоторые параметры (показ скрытых файлов, ограничение скорости). В будущих версиях они будут доступны через интерфейс.
## Разработка
### Структура проекта
```
src/
├── main.rs # Точка входа, загрузка шрифтов
├── ui.rs # Состояние UI и типы
├── ui/
│ ├── app.rs # Реализация egui::App
│ └── rcloneui.rs # Логика UI, фоновые задачи
├── operations/
│ ├── files.rs # Обёртка над rclone lsjson
│ ├── sync.rs # copy/move/delete/purge
│ ├── remotes.rs # list/get/create/update/delete remotes
│ ├── local_fs.rs # Чтение локальных директорий
│ ├── fileinfo.rs # Вспомогательные методы FileInfo
│ └── ... # info, search, check
└── rclone_install/
├── mod.rs # Определение RcloneApp
└── rclone_install_real.rs # Обнаружение и загрузка rclone
```
### Добавление новых функций
- **Новые операции с remotes** – расширяйте `operations/remotes.rs`.
- **Дополнительные команды файловых операций** – реализуйте в `operations/sync.rs` и вызывайте из `RcloneUI`.
- **Новые панели UI** – используйте `egui::SidePanel`, `CentralPanel` или `Window`.
### Тестирование
Запуск всех тестов:
```bash
cargo test
```
Некоторые тесты помечены как `ignore` (например, реальная загрузка rclone) – запустите их командой `cargo test -- --ignored`.
## Устранение неполадок
### «Rclone not found» / ошибка установки
- Проверьте интернет-соединение – приложение скачивает rclone с GitHub.
- На Linux убедитесь, что установлен `unzip` (хотя crate `zip` не требует его, но для ручной проверки может понадобиться).
- При работе через корпоративный прокси установите переменные окружения `HTTP_PROXY` и `HTTPS_PROXY`.
### Отсутствие шрифтов
Приложение нормально работает со стандартными системными шрифтами. Поместите файлы шрифтов в `assets/fonts/`, чтобы изменить внешний вид.
### Ошибки компиляции на Linux
Установите все необходимые пакеты для разработки X11 (см. раздел «Зависимости для Linux»).
### Приложение не показывает локальные директории на Windows
Локальный браузер по умолчанию открывает `C:\`. Чтобы перейти на другой диск, введите путь вручную (например, `D:\`) в поле назначения.
## Планы на будущее
- [ ] Графическая настройка remote (создание/изменение).
- [ ] Предварительный просмотр синхронизации (dry-run со списком файлов).
- [ ] Ползунок ограничения скорости.
- [ ] Поиск файлов по имени/пути.
- [ ] Поддержка фильтров rclone (`--include`, `--exclude`).
- [ ] Отображение информации о ёмкости хранилища (rclone about).
- [ ] Переключение светлой/тёмной темы.
## Лицензия
Проект лицензируется на условиях **MIT License** или **Apache License 2.0** на ваш выбор. Файл `LICENSE` будет добавлен позднее.
## Участие в разработке
Приветствуются любые вклады! Пожалуйста, создавайте issue или pull request. Соблюдайте существующий стиль кода и по возможности добавляйте тесты.
## Благодарности
- [rclone](https://rclone.org/) – основа всех операций с хранилищами.
- [egui](https://github.com/emilk/egui) – библиотека для мгновенного GUI.
- [tokio](https://tokio.rs/) – асинхронная среда выполнения для загрузки rclone.
- [dirs](https://crates.io/crates/dirs) – кросс-платформенное определение директорий.
---
**Наслаждайтесь удобным управлением вашими облачными файлами!**