Аналог Finder для macOS, написанный на SwiftUI. Современный файловый менеджер с встроенным терминалом и удобной навигацией.
Версия: 0.1.0
- Просмотр файлов и папок — табличное отображение содержимого директорий
- Навигация — кнопки "Назад", "Вперед" и "Вверх" для удобного перемещения по истории
- Ввод пути — поле ввода с автодополнением путей к директориям
- Хлебные крошки — визуальное отображение текущего пути
- Сортировка — сортировка файлов по имени, размеру, дате модификации
- Открытие файлов — двойной клик или Enter для открытия файлов в системе
- Переименование — переименование файлов и папок
- Создание — создание новых файлов и директорий
- Удаление — удаление файлов и папок
- Копирование — копирование имени файла, пути или полного пути в буфер обмена
- Перетаскивание — drag & drop для перемещения файлов между директориями
- Контекстное меню — правый клик для доступа к операциям с файлами
- Встроенный терминал — интегрированный терминал на базе SwiftTerm для работы в текущей директории
- Множественные окна — поддержка нескольких окон с разными директориями
- Командная строка — запуск приложения с указанием пути через аргументы командной строки
- URL-схема — поддержка кастомной URL-схемы
vuender://для открытия директорий
- macOS 26.0 или выше
- Swift 6.2 или выше
- Xcode (для сборки)
- Клонируйте репозиторий:
git clone <repository-url>
cd vuender- Соберите проект:
swift build- Запустите приложение:
swift run vuenderДля сборки .dmg:
chmod +x build-dmg.sh # один раз
./build-dmg.shСкрипт соберёт релизную версию, создаст минимальный .app‑bundle и сгенерирует .dmg в корне репозитория с именем:
Vuender-<VERSION>.dmg
где VERSION берётся из Sources/vuender/Core/AppVersion.swift.
swift run vuender /path/to/directoryДля повторного использования существующего окна:
swift run vuender --reuse /path/to/directorySources/vuender/
├── App.swift # Точка входа приложения
├── AppDelegate.swift # Обработка событий приложения и URL-схем
├── Core/
│ ├── FileBrowserViewModel.swift # ViewModel для управления состоянием браузера
│ └── FileItem.swift # Модель файла/папки
├── Services/
│ ├── FileManagerService.swift # Сервис для работы с файловой системой
│ ├── PathAutocompleteService.swift # Сервис автодополнения путей
│ └── WindowManager.swift # Управление окнами приложения
└── Views/
├── ContentView.swift # Главное представление
├── Content/
│ ├── FileNameInputView.swift # Ввод имени файла
│ ├── FileNameView.swift # Отображение имени файла
│ └── FileRenameView.swift # Переименование файла
├── FileBrowser/
│ ├── FileBrowserView.swift # Основной вид браузера
│ ├── FileTableView.swift # Табличное представление файлов
│ ├── FileContextMenu.swift # Контекстное меню
│ ├── EmptyAreaContextMenu.swift # Контекстное меню пустой области
│ ├── EmptyStateView.swift # Пустое состояние
│ ├── LoadingView.swift # Индикатор загрузки
│ ├── TableRowView.swift # Представление строки таблицы
│ ├── KeyPressHandler.swift # Обработка нажатий клавиш
│ └── FileItemPasteboardWriter.swift # Поддержка drag & drop
├── Header/
│ ├── NavigationBar.swift # Панель навигации
│ ├── NavigationBackButton.swift # Кнопка "Назад"
│ ├── NavigationForwardButton.swift # Кнопка "Вперед"
│ ├── NavigationUpButton.swift # Кнопка "Вверх"
│ ├── PathInputView.swift # Поле ввода пути
│ ├── PathAutocompleteView.swift # Автодополнение пути
│ ├── PathBreadcrumbView.swift # Хлебные крошки
│ └── PathDisplay.swift # Отображение пути
└── Footer/
├── FooterView.swift # Нижняя панель
├── TerminalPanelView.swift # Панель терминала
├── SwiftTermView.swift # Интеграция SwiftTerm
└── ResizableDivider.swift # Разделитель с изменяемым размером
Центральный компонент управления состоянием:
- Управление текущей директорией
- История навигации (вперед/назад)
- Загрузка и сортировка файлов
- Операции с файлами (создание, удаление, переименование)
- Обработка drag & drop
Сервис для работы с файловой системой:
- Получение содержимого директорий
- Создание файлов и папок
- Переименование и удаление
- Перемещение файлов
- Открытие файлов в системе
- Открытие терминала в указанной директории
Сервис автодополнения путей:
- Автодополнение при вводе пути
- Поддержка абсолютных и относительных путей
- Поддержка
~для домашней директории - Валидация путей
Управление окнами приложения:
- Регистрация и отслеживание окон
- Открытие новых окон с указанными путями
- Повторное использование существующих окон
- Обработка закрытия окон
Enter— открыть файл/папкуBackspace— перейти в родительскую директориюCmd+O— открыть файлCmd+N— создать новый файлCmd+Shift+N— создать новую папкуDelete— удалить выбранный файлCmd+C— копировать файлCmd+V— вставить файлCmd+R— переименовать файл
Приложение поддерживает кастомную URL-схему vuender://:
vuender://open/path/to/directory
Это позволяет открывать директории из других приложений или через командную строку.
- SwiftTerm — библиотека для работы с терминалом
Проект использует Swift Package Manager. Основные зависимости указаны в Package.swift.
Приложение следует архитектуре MVVM:
- Model —
FileItemи другие модели данных - View — SwiftUI представления в папке
Views/ - ViewModel —
FileBrowserViewModelдля управления состоянием
- Новые операции с файлами — добавьте методы в
FileManagerServiceи вызовите их изFileBrowserViewModel - Новые представления — создайте SwiftUI View в соответствующей папке
Views/ - Новые сервисы — добавьте в папку
Services/и используйте паттерн Singleton при необходимости
MIT
AI-generated product. 90+% of the code is generated by AI.