Features · Screenshots · Getting Started · Architecture · Archive Support · Roadmap
⚠️ Under active development. APIs and UI may change without notice.
MiMiNavigator is a dual-panel file manager inspired by Total Commander and Norton Commander, reimagined with native macOS technologies. It combines the efficiency of classic two-panel navigation with modern SwiftUI, Swift concurrency (actors, async/await), and macOS 26 liquid-glass design language.
Why another file manager?
- Finder lacks dual-panel workflow → MiMiNavigator gives you two panels side by side
- Total Commander doesn't exist on macOS → MiMiNavigator brings TC-style menus and hotkeys
- Built as a SwiftUI showcase → clean architecture, strict concurrency, modular packages
![]() |
| Dual-panel interface with Finder-style table, sortable columns, and glass menu bar |
![]() |
![]() |
| Drag & drop with confirmation dialog | Context menus and file operations |
| Feature | Description |
|---|---|
| Dual Panels | Two independent file panels with synchronized operations |
| Finder-Style Table | Sortable columns: Name, Size, Date, Permissions, Owner, Type |
| Drag & Drop | Between panels and into directories, with HIG confirmation dialog |
| Find Files | Advanced search: by name (wildcards), content, size, date — with archive search |
| Archive VFS | Open archives as virtual directories, navigate inside, auto-repack on exit |
| Parent Directory | ... entry pinned to top of every panel, archive-aware navigation |
| Navigation History | Per-panel history with quick-jump popover |
| Breadcrumb Nav | Click-to-navigate path bar |
| Favorites Sidebar | Quick access to bookmarked locations (FavoritesKit package) |
| Real-time Updates | Automatic refresh on file system changes |
| Key | Action | Key | Action |
|---|---|---|---|
↑ ↓ |
Navigate | Tab |
Switch panels |
Enter |
Open | ⌘R |
Refresh |
F5 |
Copy to other panel | ⌘. |
Toggle hidden files |
⌘O |
Open / Get Info | ⌘W |
Close window |
Eight menu categories matching Total Commander conventions: Files (F6 Rename, Pack/Unpack, Compare) · Mark (Select/Deselect groups) · Commands (Terminal, CD Tree) · Net (FTP) · Show (View modes, Hidden files) · Configuration · Start (Tabs) · Help.
- macOS 26 Liquid-Glass menu bar with ultra-thin material, gradient borders, and multi-layered shadows
- Pixel-perfect Retina rendering via
backingScaleFactor - Sticky column headers, zebra-striped rows, animated toolbar buttons
- Hidden files shown in bluish-gray, symlinks labeled as "Alias"
MiMiNavigator can browse archives as virtual directories. Double-click opens the archive, .. exits with automatic repacking if files were modified.
50+ formats supported:
| Category | Formats |
|---|---|
| Standard | zip 7z rar tar |
| Compressed TAR | tar.gz tar.bz2 tar.xz tar.zst tar.lz4 tar.lzo tar.lz tar.lzma |
| Packages | deb rpm cab cpio xar |
| macOS | dmg pkg |
| Java/Android | jar war ear aar apk |
| Disk Images | iso img vhd vmdk |
| Legacy | arj lha lzh ace sit sitx Z |
Extraction chain: /usr/bin/unzip → /usr/bin/tar (libarchive) → 7z (fallback). Install 7z for full format support: brew install p7zip.
- macOS 15.0+ (Apple Silicon or Intel)
- Xcode 16+ with Swift 6.2
- Optional:
brew install swiftlint swift-format p7zip
git clone https://github.com/senatov/MiMiNavigator.git
cd MiMiNavigator
open MiMiNavigator.xcodeproj
# ⌘R to build and runOr via command line:
xcodebuild -scheme MiMiNavigator -configuration Debug \
-destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO buildMiMiNavigator/
├── Gui/Sources/
│ ├── App/ # Entry point, FileScanner, logging
│ ├── States/ # AppState (@Observable), DualDirectoryScanner (actor)
│ ├── FilePanel/ # FilePanelView, FileRow, table components
│ ├── Archive/ # ArchiveManager (actor), Extractor, Repacker, FormatDetector
│ ├── FindFiles/ # Search UI, ViewModel, Coordinator
│ │ └── Engine/ # FindFilesEngine (actor), NameMatcher, ContentSearcher, ArchiveSearcher
│ ├── ContextMenu/ # Context menus, dialogs, file operations, batch manager
│ ├── DuoPanel/ # Dual-panel layout, PanelDividerView
│ ├── DragDrop/ # Transferable, DragPreview, confirmation dialog
│ ├── Menus/ # TC-style glass menu bar
│ ├── BreadCrumbNav/ # Breadcrumb path bar with navigation
│ ├── HotKeys/ # Customizable keyboard shortcuts
│ ├── History/ # Navigation history popover
│ ├── Favorite/ # Favorites sidebar adapter (FavoritesKit bridge)
│ ├── Primitives/ # ParentDirectoryEntry, shared types
│ └── Config/ # DesignTokens, UserPreferences
├── Packages/
│ └── FavoritesKit/ # Reusable favorites module (.dylib)
└── Gui/Docs/ # Architecture docs, screenshots
| Pattern | Usage |
|---|---|
@Observable + @MainActor |
AppState — global app state, panels, archive states |
actor |
DualDirectoryScanner — thread-safe file scanning |
actor |
ArchiveManager — session lifecycle, dirty tracking, extraction, repacking |
AsyncStream |
FindFilesEngine — streaming search results with cancellation |
| Security-Scoped Bookmarks | Persistent file access in sandboxed mode |
| Swift Package (dynamic) | FavoritesKit — extracted as reusable .dylib |
Uses SwiftyBeaver with tags: [FindEngine] [ArchiveSearcher] [Extractor] [Repacker] [FormatDetector] [SELECT-FLOW] [NAV] [DOUBLE-CLICK]
Log file: ~/Library/Logs/MiMiNavigator.log
- Dual-panel navigation with breadcrumbs
- Finder-style sortable table (Name, Size, Date, Permissions, Owner)
- Drag & drop with HIG confirmation
- TC-style menu system (8 categories)
- macOS 26 liquid-glass UI
- Navigation history per panel
- File copy (F5), Open/Get Info (⌘O)
- Hidden files toggle with persistence
- Security-scoped bookmarks
- FavoritesKit Swift Package
- Archive virtual filesystem (50+ formats)
- Find Files with archive search
- Parent directory navigation (
..) - Multi-selection, batch operations
- Column width persistence
- Hotkey customization
- Terminal integration at current path
- Custom themes and color schemes
- Three-panel layout option
- Tabbed interface
- FTP/SFTP connectivity
- Cloud storage (iCloud, Dropbox)
- Network filesystem (SMB)
- Advanced file comparison
- Batch rename
- Plugin system
- App Store release
Contributions welcome! This is a learning project — if you see mistakes or have suggestions, please open an issue or PR.
I openly acknowledge using AI assistants for architecture discussions and code review. This README was crafted with care for both humans and crawlers.
MIT — Iakov Senatov
Made with ❤️ for macOS · Building the future of file management, one commit at a time


