Skip to content

A tauri-based file explorer (Tauri + Rust + Typescript + React + Tailwind)

Notifications You must be signed in to change notification settings

kotru21/FileManagerTauri

Repository files navigation

File Manager на Tauri

Tauri React TypeScript CI contributions welcome

File manager UI

Десктопный файловый менеджер на Tauri 2.x + React 19.2 + TypeScript, построенный по архитектуре Feature-Sliced Design (FSD).

Возможности

  • 📁 Навигация по файловой системе с историей (назад/вперёд)
  • 🔍 Поиск по имени и содержимому файлов (grep-like)
  • 📋 Операции с файлами: копирование, вырезание, вставка, удаление, переименование
  • 🖱️ Контекстное меню с горячими клавишами
  • 💾 Отображение дисков Windows
  • ⚡ Виртуализация списка для 10,000+ файлов
  • 🎨 Тёмная тема (shadcn/ui стиль)

Frontend

  • React 19.2 + TypeScript 5.9
  • Zustand 5 — UI состояние (выделение, навигация, буфер обмена)
  • TanStack Query 5 — серверное состояние (запросы к файловой системе)
  • TanStack Virtual 3 — виртуализация списков
  • Radix UI — примитивы UI (context-menu, dialog, tooltip)
  • Tailwind CSS 4 — стилизация
  • Lucide React — иконки

Backend

  • Tauri 2.x — десктопный фреймворк
  • tauri-specta — автогенерация TypeScript типов из Rust
  • walkdir — рекурсивный обход директорий
  • chrono — работа с датами

IPC (Tauri): контракты и правила

  • src/shared/api/tauri/bindings.tsавтосгенерированные типы/команды (руками не править).
  • src/shared/api/tauri/client.tstauriClient: единая точка вызова команд (оборачивает Result → throw).
  • src/shared/api/tauri/events.tstauriEvents: типизированные обёртки над событиями.

Для стабильности и единообразия код приложения не должен напрямую импортировать сгенерированные bindings/commands — это дополнительно защищено правилами линтера и архитектурным тестом.

Безопасность и ограничения

  • Приложению требуется полный доступ к файловой системе (без allowlist «разрешённых корней»). Безопасность обеспечивается hardening-логикой команд в backend.
  • Удаление файлов/папок усилено проверками: запрещены опасные цели (например, root/корень диска), для symlink используется поведение «удалить ссылку как ссылку» (не следовать по ней).
  • Генерация миниатюр ограничивает декодирование (лимиты/клампы), использует allowlist расширений; SVG намеренно исключён из backend-генерации миниатюр.
  • CSP и настройки окна задаются в src-tauri/tauri.conf.json.

TODO

  • Расширить Undo на дополнительные операции (например, delete и copy) и определить UX/ограничения (что именно и в каких случаях можно откатывать).

Архитектура FSD

src/
├── app/                    # Точка входа, провайдеры, глобальные стили
├── pages/                  # Страницы приложения
│   └── file-browser/       # Главная страница файлового менеджера
├── widgets/                # Композитные UI блоки
│   ├── file-explorer/      # Виртуализированный список файлов
│   ├── breadcrumbs/        # Хлебные крошки
│   ├── toolbar/            # Панель инструментов
│   ├── sidebar/            # Боковая панель с дисками
│   └── status-bar/         # Статус бар
├── features/               # Бизнес-фичи
│   ├── file-selection/     # Выделение файлов
│   ├── navigation/         # Навигация с историей
│   ├── clipboard/          # Copy/Cut буфер
│   ├── search-content/     # Поиск по имени и содержимому
│   └── context-menu/       # Контекстное меню
├── entities/               # Бизнес-сущности
│   ├── file-entry/         # FileEntry: типы, queries, UI компоненты
│   └── drive/              # DriveInfo UI
└── shared/                 # Переиспользуемый код
    ├── api/tauri/          # tauri-specta bindings
    ├── ui/                 # UI компоненты (Button, Dialog, etc.)
    ├── lib/                # Утилиты (cn, formatBytes, formatDate)
    └── config/             # Константы, горячие клавиши

Установка

Требования

Запуск

# Установка зависимостей
npm install

# Запуск в режиме разработки
npm run tauri dev

# Сборка production
npm run tauri build

IDE Setup

Горячие клавиши

Клавиша Действие
Ctrl+C Копировать
Ctrl+X Вырезать
Ctrl+V Вставить
Delete Удалить
F2 Переименовать
Ctrl+F Поиск
Backspace Наверх
Alt+← Назад
Alt+→ Вперёд
F5 Обновить

Лицензия

MIT

About

A tauri-based file explorer (Tauri + Rust + Typescript + React + Tailwind)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages