Skip to content

About

Dual-panel file manager for macOS — SwiftUI + Swift 6.4 concurrency. Total Commander meets Finder.

Topics

Resources

Contributing

Security policy

Stars

13 stars

Watchers

1 watching

Forks

Latest commit

 

History

2,061 Commits

Folders and files

Repository files navigation


MiMiNavigator
MiMiNavigator

A native dual-panel file manager for macOS 26+

macOS 26+ Swift 6.2 AGPL-3.0 Release v0.9.9.8.6

What it does · Screenshots · Install · Compare & sync · Build · Changelog


MiMiNavigator brings the practical two-panel workflow of Total Commander and Norton Commander to macOS. It keeps the source and destination visible, remembers your tabs and views, and handles everyday file work without a pile of Finder windows.

It is free, open source, built with SwiftUI, signed, and notarized.

Under active development. Features and interface details may still change.

The menu bar icon is checked after startup and when the application becomes active. If its window geometry remains invalid, MiMiNavigator attempts one recreation per launch. [MenuBar] logs record the delayed checks and any unresolved layout failure.

What it does

Two-panel file work

Browse two locations side by side and copy, move, rename, organize, or inspect files with the keyboard or mouse. Tabs, paths, history, selections, and List, Preview, or Tree views remain available between sessions. Bottom tabs now read as attached folder sheets, while the Commander action bar keeps light native typography and crisp press feedback. Preview temporarily occupies the inactive file panel and follows the selection in the working panel; its context menu can move it to the other side. Text previews retain their search query between sessions, build a temporary in-memory index for the current file, highlight every live match, distinguish the active result, and provide previous/next navigation with an N-of-M counter. Known formats choose Quick Look, text, or binary display automatically, while remembered extension rules are editable in Settings → Preview. Preview and Settings searches ignore capitalization and whitespace; Settings indexes individual option names and opens the matching section.

File operations report concise animated messages in the active window. The Pre-Release rivet opens a scrollable, numbered history of the 32 most recent notices, including timestamps and available source and destination paths; this history survives application restarts and follows the colors selected in Settings.

Error banners offer an explicit Report action. MiMiNavigator prepares a short comment describing the error and circumstances, removes common personal identifiers and secrets, and lets the user review and edit it. The app then copies the comment and opens and fills the Blogger comment form in Safari; if browser automation is unavailable, the copied text can be pasted manually. Only the user can click Publish.

Breadcrumbs emphasize the current folder. Hovering expands a segment to its full name with a spring animation, extra spacing, and a raised glass button surface; neighboring segments move aside. Right-click a local or mounted-folder segment to copy its path, open it in the other panel or a new tab, or browse its subfolders in an on-demand chooser. These additional navigation actions are not offered inside virtual archives or protocol-based remote paths.

Thumbnail mode fits each complete image proportionally within the selected size, including upscaling small images. Selection outlines follow the image with a small inset instead of filling wide empty cells. Long filenames are shortened in the middle and expand into complete multiline labels when selected.

Explicitly invoking an auxiliary window again replaces its previous presentation, including a hidden or minimized instance, with fresh content for the current action. This applies to search, multi-rename, archive creation, history, favorites, settings, connection and network windows, toolbar customization, media information, About, and Feedback. Saved window geometry is retained; clicking the main window does not trigger this replacement.

In List view, right-click a column header to choose Name, Date Modified, Size, Kind, Permissions, Owner, Count, Created, Last Open, Added, Group, Version, Comments, and Tags. The optional Finder columns read local metadata: Last Open uses Spotlight's last-used date, Version and Comments use Finder metadata, and Tags use Finder labels. A blank optional value means macOS has no value for that file. Columns can be sorted, and newly enabled columns fit their content automatically. Remote entries show only metadata their server provides.

Find and clean safely

Search by name, content, size, or date, including inside archives. Focused presets help find large forgotten files, empty folders, and recognizable leftovers from removed applications. Results remain actionable, so several items can be reviewed and processed together.

MiMiNavigator uses the appropriate recoverable deletion path whenever one is available. Local files go to the macOS Trash, while File Provider locations such as OneDrive use Finder-compatible recycling so the provider can move items to its remote recycle bin. Protocol-based remote servers that do not expose a trash facility may delete items directly after the normal MiMiNavigator confirmation.

Batch rename and archives

Rename groups of files with masks, counters, replacements, case conversion, and a live conflict preview. Archives behave like virtual folders: browse them, search them, copy files in or out, and let MiMiNavigator repack modified archives when the session ends.

More than 50 formats are supported, including ZIP, RAR, 7Z, TAR, DMG, PKG, ISO, Java/Android packages, disk images, and legacy formats. ZIP and TAR-family archives use macOS tools; extended format support is available through unar and sevenzip.

Remote, cloud, and media

Open SFTP and FTP servers in a panel, discover SMB and AFP shares on the local network, and use cloud drives mounted by macOS or their provider applications. New files and folders can be created directly in writable local, SFTP, FTP, and SMB locations. Google Drive and Dropbox can also publish selected items and create shareable links.

File icons appear before optional archive-header and file-type inspection runs in the background. ZIP uses the cabinet-style archive artwork, DMG uses a dedicated installable disk-image symbol, and clamp, package, and encrypted families retain their own artwork; encryption overrides the format-specific icon. Icon inspection skips CloudStorage, iCloud Drive, and dataless placeholders to avoid downloading cloud files merely to choose an icon; these items retain their standard icons.

System document and application icons are normalized once into a Retina row-sized bitmap, removing excessive transparent padding before the result enters the bounded in-memory icon cache. This keeps 16-point list icons visually consistent without recurring rendering or database I/O.

Dragging files from an archive root onto Parent always resolves to the real directory containing the archive, never its private extraction directory. Copy exports the file there; Move also removes it from the extracted archive contents and marks the archive dirty so the normal repack confirmation appears on exit.

Archive dirty tracking canonicalizes macOS firmlink paths such as /var and /private/var, and the filesystem snapshot treats removed entries as modifications. Moving an item out of an archive therefore remains detectable even after its temporary source no longer exists.

ArchiveKit owns archive sessions and extracts every archive, including nested archives, into a separate /tmp/MiMiNavigator_archives/<UUID> directory. Closing or repacking a level removes its UUID directory directly without using Trash; nested navigation restores the enclosing archive session.

Media files can be previewed, inspected, and converted from the same workflow. Optional tools such as FFmpeg and gifski extend the available conversion formats. When FFmpeg is installed, the icon grid and Preview pane can show still frames for WebM, MKV, AVI, FLV, WMV, and TS videos that lack a system Quick Look thumbnail.

Conversion rejects an output that aliases the source (including symbolic and hard links) and serializes operations to protect progress and cancellation state. Lottie/TGS subprocesses run asynchronously with continuously drained output. Diagnostic logs record process IDs, arguments, duration, exit status, bounded error-output tails, and 30-second running checkpoints. Memory checkpoints include window counts; a background main-queue probe records responsiveness delays and recovery without treating them as confirmed deadlocks.

The top toolbar places a live, in-process resource monitor immediately beside the central Pre-Release badge. Memory and thread histories use independent lightweight samplers and timers, with default refresh intervals of 5 and 10 seconds. The compact SwiftUI sparkline is adapted from the MIT-licensed Hop system monitor. Both graphs can be independently hidden and their intervals changed under Settings → General → Toolbar graphs; both are enabled by default.

If GIF size reduction fails or is cancelled, the already converted GIF is restored. If a conflicting file prevents restoration, the recovery copy is retained and its exact path is recorded in the diagnostic log.

Comparison and synchronization

File comparison, directory comparison, and synchronization are large specialist tasks—not small checkboxes in a file manager. MiMiNavigator deliberately delegates them to mature, well-established applications instead of pretending to replace those tools.

Choose your preferred application in Settings → Diff Tool. MiMiNavigator can hand selected files or directories to tools such as:

  • KDiff3 — recommended free option for files and directories
  • IntelliJ IDEA — file and directory comparison
  • FileMerge / opendiff — available with Xcode or Xcode Command Line Tools

The External Tool Doctor detects supported tools and explains what is missing. Synchronization can be connected to the specialized application you already know and trust.

Screenshots

MiMiNavigator dual-panel workspace with persistent file lists
Two-panel file management with persistent tabs, paths, sorting, and file metadata
MiMiNavigator advanced Find Files interface and search results
Advanced Find Files criteria, safe cleanup templates, archive search, and actionable results
MiMiNavigator external tools diagnostics settings
Built-in diagnostics for optional archive, media, search, and conversion tools
MiMiNavigator network neighborhood and saved server editor
Network discovery alongside reusable SFTP, FTP, SMB, and AFP connection profiles
MiMiNavigator media metadata, preview, and conversion presets
Media metadata, inline preview, and video, audio, image, or GIF conversion presets

Install

The current DMG is signed and notarized by Apple. No App Store account or subscription is required. On a fresh Mac, the first launch installs Homebrew and MiMiNavigator's command-line tools; this needs an internet connection and an administrator password.

  1. Download MiMiNavigator v0.9.9.8.6.
  2. Open the DMG and drag MiMiNavigator to Applications.
  3. Launch it from Applications.

Browse all releases

First-launch command-line setup

MiMiNavigator automatically installs missing command-line dependencies on first launch. It downloads the official signed Homebrew package for Apple Silicon, checks its macOS installation signature, and installs it in Terminal. macOS may ask permission to control Terminal and request an administrator password. MiMiNavigator waits until installation finishes before continuing to its permission onboarding. If installation stops, check Terminal and use Retry installation in MiMiNavigator.

The setup installs Git; unar and sevenzip for archives; ffmpeg (including ffprobe) and gifski for media; sshpass for password-based SSH; and pipx plus python-lottie for Lottie/TGS conversion. Already available tools are kept. The macOS built-in ZIP, TAR, search, SSH, networking, and file tools need no separate installation. Basic browsing can run without these third-party tools, but the first-launch setup prepares the complete feature set.

GUI Git clients (Fork, GitHub Desktop, Sourcetree, Tower, and Sublime Merge) and comparison apps are chosen separately in Settings; they are not installed automatically. For later tool checks or repair, use Settings → External Tools. Developers can refresh the recommended tool set with:

zsh Scripts/update_external_tools.zsh

More detail is available in the focused documentation:

Cloud storage

Cloud drives mounted under ~/Library/CloudStorage appear automatically. This includes iCloud Drive and desktop clients for Google Drive, Dropbox, OneDrive, Proton Drive, and other providers that expose a normal filesystem location. rclone mounts are available through /Volumes.

MiMiNavigator remains a filesystem browser. Its narrow Google Drive and Dropbox integrations publish selected items and create sharing links; the providers' own applications remain responsible for storage and synchronization.

Keyboard workflow

MiMiNavigator uses a Total Commander/Norton Commander shortcut layout by default. Globally reserved macOS combinations remain unassigned, and attempts to record them show a warning without changing the current shortcut. Function keys are displayed as F2, F4, and so on even when the physical keyboard requires Fn. See Keyboard shortcuts.

Build from source

MiMiNavigator downloads the compiled MiMiKits libraries through Swift Package Manager. Contributors do not need access to their private implementation sources. See Binary package distribution for the supported platform and maintainer workflow.

The notarized release script uses a fresh temporary build and DMG staging directory for each run. It preserves open Xcode sessions, existing DerivedData, and shared SwiftPM caches. If a cached package is missing a pinned Git object, the resolver quarantines only that package checkout and downloads it again. Build artifacts remain available at the paths printed in the release log for verification and later cleanup.

Requirements:

  • macOS 26+ on Apple Silicon
  • Current Xcode with Swift 6.2
git clone https://github.com/senatov/MiMiNavigator.git
cd MiMiNavigator
zsh Scripts/stamp_version.zsh
open MiMiNavigator.xcodeproj

Press ⌘R in Xcode, or build from the command line:

zsh Scripts/stamp_version.zsh
xcodebuild -scheme MiMiNavigator -configuration Debug \
  -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO build

Advanced Find Files includes Large stale files, App leftovers, Empty old folders, Old downloads (older than six months), and Recently modified (last seven days) templates. Criteria checkboxes under the templates enable or disable item type, recursion, system exclusions, deletability, size, age, modification date, and template-specific filters. Compact dropdowns offer ages of 1, 3, or 6 months and 1 or 2 years, and minimum sizes of 50, 100, 250, or 500 MB and 1 GB (inclusive). Choosing a size clears the upper limit; custom criteria are available on the Manual tab. Search in is a shared directory-only field above Search and Advanced. The folder picker excludes files, typed file paths are rejected, and a selected file no longer replaces the panel directory. Search tabs share the main panel tab surface, and search actions and selected templates use the common toolbar button style. Advanced search has Templates and Manual subtabs, each showing only its own controls; switching retains each editor’s values for the current window. Results columns fit their contents and window width automatically, with an Autofit button for refitting after manual resizing. Selected truncated names and locations expose the same glass indicator as the main panels to reveal the full text. Results start in a compact bottom pane with a draggable divider. Results Window opens the same live results and selection in an independent resizable window; closing the search window also closes this results window. selecting a template again restores its defaults. Results are candidates for review, not automatic deletion recommendations.

Architecture

MiMiNavigator is a native SwiftUI application using Swift 6.2 strict concurrency. The code is organized around a small set of product areas:

GUI/Sources/
├── App and state
├── Panels, tabs, navigation, and selection
├── File operations and context menus
├── Find Files and Multi-Rename
├── Archives and media tools
├── Remote servers, network, and cloud sharing
├── Settings, hotkeys, and external tools
└── Diagnostics and persistence

Packages/
├── ArchiveKit and CacheKit
├── FavoritesKit and RenameKit
├── FileModelKit and ScannerKit
└── LogKit and NetworkKit

Actors isolate scanning, archive sessions, search, and persistent cache work. Observable main-actor state drives the interface. Reusable implementation lives in FileModelKit, ScannerKit, ArchiveKit, FindFilesKit, NetworkKit, MediaMetadataKit, ExternalToolsKit, CacheKit, FavoritesKit, RenameKit, and LogKit. GRDB/SQLite provides a bounded persistent cache for directory sizes and validated file hashes.

For implementation details, start with CONTRIBUTING.md, the documents in GUI/Docs, and the source-level AGENTS.md guidelines.

Roadmap

MiMiNavigator is concentrating on file-manager work where a native two-panel interface adds real value:

  • saved workspaces and a command bar
  • Git status and improved Finder integration
  • duplicate search and safer cleanup assistance
  • direct WebDAV, S3, and B2 access
  • CloudKit synchronization for non-secret application settings

Comparison and synchronization are intentionally not roadmap promises. They remain integrations with dedicated external tools configured through Settings.

Contributing

Contributions are welcome. Fork the repository, read CONTRIBUTING.md, build locally, and open a pull request with a clear description and screenshots for interface changes.

Useful contribution areas include tests, localization, performance, previews, themes, remote backends, and improvements to existing workflows. The full release history lives in CHANGELOG.md, so this README stays focused on what the application is and how to use it.

Credits

MiMiNavigator builds on excellent open-source work, including SwiftyBeaver, GRDB.swift, Citadel, SwiftNIO, Swift Crypto, BigInt, FFmpeg, gifski, 7-Zip, and unar. The complete version, source, and license inventory is maintained in Third-Party Notices.

MiMiNavigator is developed by Iakov Senatov — Diplom-Ingenieur (Chemical Process Engineering), with 35 years of programming experience.

License

AGPL-3.0 with an additional permission for MiMiKits — Iakov Senatov

LinkedIn GitHub

About

Dual-panel file manager for macOS — SwiftUI + Swift 6.4 concurrency. Total Commander meets Finder.

Topics

Resources

Contributing

Security policy

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages