WinUI 3 应用不能用 dotnet run 启动,需在 Visual Studio 里按 F5 并做 MSIX 打包;从源码构建需装 Visual Studio 2022 及 .NET Desktop、WinUI 3 工作负载;崩溃上报默认开启,可在设置里关闭。
SpanFinder
LumiBearStudioGPL-3.0活跃维护Windows 上的 macOS Finder 风格文件管理器,用 Miller Columns 多栏浏览,支持多标签、分屏、键盘操作和 FTP/SFTP 远程访问。
macOS Finder-style Miller Columns file explorer for Windows — multi-tab, split view, 10 themes, keyboard-first, FTP/SFTP
winget install 9P7NJ351X9TL --source msstoreREADME 未说明硬件要求;从构建说明看是 WinUI 3 桌面应用,需 Windows 与 x64 平台。
Windows 上的 macOS Finder 式分栏文件管理器,解决深层目录来回跳转的痛点
Windows 上的 macOS Finder 风格文件管理器,用 Miller Columns 多栏浏览,支持多标签、分屏、键盘操作和 FTP/SFTP 远程访问。
核心能力
- 用 Miller Columns 分栏逐级展示目录层级
- 多标签支持拖出成窗、重新停靠与会话恢复
- 双窗格分屏,两侧可各用不同视图模式
- 空格键 Quick Look 预览图片视频代码 PDF 等
- 支持 FTP/FTPS/SFTP 远程连接并保存凭据
容易踩的坑
- v2.0.8最新正式版2026-10-12 · 2026-10-12 07:29 UTC
Clipboard
Pasting a copied file into a file dialog works (#71). After copying a file in SPAN, pasting into the File name box of a Windows file dialog — including a browser's "Choose file" upload dialog — produced the path twice with the opening quote missing, and Enter failed with "The file name is not valid". SPAN put the path on the clipboard as text as well as the file itself, and the dialog pasted both. Copy and Cut now put only the file on the clipboard, as File Explorer does, so the dialog receives
"path"and Enter selects the file.This also means that pasting into a text editor after Ctrl+C no longer pastes the path. Use Copy as path for that.
Copy as path — Ctrl+Shift+C. Copies the full path of every selected item as text, in the same format as File Explorer: each path in double quotes, one per line. It can be reassigned in Settings → Shortcuts; if you had already assigned Ctrl+Shift+C to another command, that assignment is kept. The context-menu Copy path keeps its unquoted format and now copies every selected item, not only the one you right-clicked. Items inside a ZIP are copied as
D:\archive.zip\folder\file.txtinstead of an internalarchive://address. The address bar now accepts a path wrapped in quotes.Context-menu Copy and Cut behave like Ctrl+C and Ctrl+X. They used a separate code path with two more faults besides the file dialog problem: files copied from the context menu disappeared from the clipboard when SPAN was closed, and right after a context-menu Copy or Cut, SPAN mistook its own clipboard write for another app's and reset its own state — cut items lost their dimmed look at once.
A slow copy no longer overwrites a newer one. Copying an entry from a large ZIP, or thousands of files, takes a moment. If you copied something else in the meantime, the slower copy could finish last and replace it, so pasting brought back the earlier items. The most recent copy now always wins.
Photos
Previous/next works in Windows Photos (#72). An image opened from SPAN showed only that one image in Photos; the arrow keys did nothing. Opening the same image from File Explorer works because Explorer hands Photos its folder view along with the file. SPAN now passes the same information, so ← and → move through the folder in the order SPAN shows it — by name, date modified, size or type, ascending or descending. This applies to images on local and removable drives when Photos is the default app; other files open as before.
Downloaded images work too, without the "Is this file from a trusted source?" prompt that Photos shows when it is opened through its
ms-photos:link.Default file manager
Turning off the default file manager no longer breaks folder opening in other apps. Turning the option off left empty registry keys behind. They hid Windows' own Open command for folders, so apps that open a folder with an explicit Open command failed. Turning it off now removes those keys. If you turned it off with an earlier version, Settings → Default file manager shows a Repair folder association card that removes them (one UAC prompt).
The note under the setting said uninstalling SPAN restores File Explorer automatically. It does not — turn the option off before uninstalling. The note now says so.
Startup and command line
Running
spanfinderwith no arguments no longer opens the WindowsApps folder. Win+R →spanfinderopened the folder SPAN is installed in, withspanfinder.exeselected.spanfinder --new-windownow opens a new window instead of only bringing the existing one to the front.Folders opened while SPAN is starting are no longer lost. With SPAN as the default file manager and SPAN closed, opening two folders in quick succession opened only the first.
New
--select <path>argument opens the parent folder with that item selected, whether the item is a file or a folder. - v2.0.72026-09-28 · 2026-09-28 08:07 UTC
查看更新说明
Preview
More files open in the preview (#69). Nine file types already had syntax highlighting written for them but never reached the preview:
.php,.jsx,.tsx,.hpp,.psm1,.vb,.fs,.fsxand.svg. They now open, highlighted. Nearly 80 more common code and config formats open as plain text — Ruby, Lua, Kotlin, Swift, Dart, Vue, Svelte, SCSS, Terraform, Protocol Buffers, GraphQL,.srt/.vttsubtitles, patches and more.Files are recognized by what they contain, not only by extension. A file with no extension (
Makefile,LICENSE) or with an extension SPAN does not know is checked by reading its first 4 KB; if that is text, it is shown as text..dat,.bak,.tmp,.cache,.dband similar extensions that can hold either text or binary data are shown as text when they are text, and otherwise behave as before.Only local files are read for this. Files on network shares and optical drives, cloud-only files and symbolic links are not opened to check them, so selecting one never waits on a server or starts a download.
Text in legacy encodings displays correctly. A file saved without a byte-order mark in a pre-Unicode encoding — Korean CP949, Simplified Chinese GBK, Japanese Shift-JIS — was decoded as UTF-8 and came out full of
�. SPAN now checks whether the file is valid UTF-8 and, if not, reads it with the Windows code page for non-Unicode programs. Subtitles and logs from older tools are readable again. A file in a code page other than this PC's (a GBK file on a Korean system) still cannot be told apart.Files another program is writing to can be previewed. An active log file showed an empty pane: the preview opened files in a mode that fails while another program has them open for writing.
Syntax highlighting
Highlighting can no longer freeze the window (#36). The one-second safety limit added for #36 never took effect in released builds: crash-reporting startup created a regular expression first, which fixed the limit at "none" before SPAN could set it. It is now set before anything else runs. A file with an unclosed
/** … */comment — where each additional line made the stall about four times longer — now falls back to plain text in about a second.The background check that is meant to catch such files before highlighting starts looked only at the first match of each rule, so a closed comment at the top of the file (a license header) let the file through. It now checks every match.
Filter and search
Wildcard patterns with several
*stay fast. A filter or search such as*a*b*cused a matcher whose cost rises steeply with each wildcard; a pathological pattern like*a*a*a*a*a*a*btook 770 ms on a single 60-character name. Those patterns now use a matcher that runs in linear time. Simpler patterns (*.txt,report*, a pasted file name) keep the matcher they had before.Thumbnails
Clip Studio Paint thumbnails are more robust (#56). SPAN now goes straight to the embedded preview in a
.clipfile, using the location recorded in the file header, instead of walking every chunk to find it. One unreadable chunk along the way used to cost the whole thumbnail. The old walk remains as a fallback for files whose header is damaged. - v2.0.62026-09-08 · 2026-09-08 23:12 UTC
查看更新说明
Thumbnails
Photoshop files now show thumbnails. Photoshop does not install a thumbnail handler on Windows, so File Explorer cannot draw a
.psdeither — there is nothing for the shell to call. SPAN now reads the preview image Photoshop writes inside the file, so.psdthumbnails appear whether or not Photoshop is installed.Only the file header and its resource block are read, so a 60 MB PSD costs no more than a small one. Checked against files saved by Photoshop CS6 through 2026, and against PSDs exported by Clip Studio Paint.
A failed preview no longer means no thumbnail. When SPAN cannot extract the embedded preview from a
.clipor.psd, it now falls back to the Windows shell instead of stopping there. Before, a machine with a working codec installed still ended up with an empty icon.Folders that looked empty
Folders carrying the system attribute were left out of listings. Naver MYBOX mounts a virtual drive whose top-level folders all carry that attribute, so the entire drive appeared empty (#68). Ordinary folders were affected too —
C:\ProgramData\MicrosoftandC:\Windows\Fontsamong them.The system attribute on a folder is not a request to hide it. It is what enables a custom icon and display name for that folder, and File Explorer always shows such folders. SPAN now follows the same rule: only the hidden attribute hides an item.
Present since v1.6.3.
- v2.0.42026-08-31 · 2026-08-31 06:03 UTC
查看更新说明
Windows
New windows never appeared. Ctrl+N — and the taskbar Jump List's "New window" — created a window that had a taskbar button and keyboard focus but was never drawn. Clicking its taskbar entry only flashed. A new window is cloaked while it is being built so you never see the default WinUI size, and the code meant to reveal it afterwards could never run. Present since v1.2.13.0.
A new window also no longer lands exactly on top of the one you opened it from — it is offset, and sized to match.
"New window" in the taskbar Jump List. Right-click SPAN Finder on the taskbar and pick New window.
File watching
Two defects in how folder changes are handled. Both affected local folders, not just network shares.
- A watcher error could blank the listing you were looking at. .NET reports "events overflowed but the watcher is still alive" and "the watcher is dead" through the same event, and the two were not told apart. A change notification was also fired when re-creating the watcher had already failed — so a folder that had gone away could empty the view instead of leaving it alone.
- A failed reload was read as "the folder is empty", which collapsed the columns to its right and moved focus back to the parent. A single transient error lost your place.
Watcher re-creation is now capped per path, so a file server that does not support change notifications cannot spin.
Network shares still need F5. The reasoning is in #67.
- v2.0.32026-08-31 · 2026-08-31 01:04 UTC
查看更新说明
Archives
SPAN Finder can now extract
.7z,.rar,.tar,.tar.gz,.tar.bz2,.tar.xz,.tgz,.gz,.bz2,.xzand.cab— right-click an archive and choose Extract Here or Extract To. Previously only.zipcould be extracted. (#66)You can also get files out of a ZIP without extracting the whole thing (#64):
- Copy an entry and paste it anywhere, including into File Explorer
- Drag an entry out of the archive column into another folder or another app
- Folders work too — dragging one out brings its whole subtree
- Preview now works for files inside a ZIP; selecting a text file used to show nothing
.zipextraction deliberately still uses the existing engine. It reports progress and responds to Cancel every 1 MB inside a file, isolates per-entry failures, and supports pause — none of which the new engine can match yet. Splitting them means new-format support cannot regress ZIP.Double-clicking a non-ZIP archive no longer opens an empty column. Browsing inside an archive is still ZIP-only, and entering a
.7zused to show an empty listing that read as "this archive is empty".ZIP fixes
Three long-standing defects surfaced while testing the above:
- Korean filenames were mangled. Archives made by Bandizip or Windows Explorer store CP949 filenames without the Unicode flag. .NET decoded those as UTF-8, producing unrecoverable replacement characters. Entry names are now decoded per entry.
- Corrupted archives extracted silently. CRC32 was never verified, so a bit-rotted or partially-downloaded archive reported success. Corrupted entries are now detected and reported.
- Alternate data stream injection. An entry named
installer.exe:Zone.Identifierpassed the path-traversal check and was written as a hidden NTFS stream. Now rejected.
Network
Browsing a server root works. Typing
\\server— or opening it from the sidebar — now lists the server's shares. Windows does not expose\\serveras a directory, which is why\\server\shareworked while\\serverdid not. Unreachable hosts fail in a few seconds with a retry option instead of hanging. (#67)\\wsl.localhostopens inside SPAN. It used to launch Windows File Explorer even with SPAN set as the default file manager: when the address bar could not resolve a path it fell back to a shell execute, and UNC paths went there too. SPAN now lists your WSL distributions itself.Network shares still do not refresh on their own; press F5. That needs the watcher's error handling reworked first, and is tracked separately.
Notes
SPAN Finder now bundles a native archive engine built from OtterZip.
- This build's
otterzip_ffi.dllis built from OtterZip v1.2.3.0, commit5cb9053374c5e88484b508af61bf16b3040ed7a1. - The engine links UnRAR (© Alexander Roshal), used to extract RAR archives only. SPAN Finder never creates RAR archives. Because the UnRAR licence is not GPL-compatible,
LICENSE.mdnow carries an explicit UnRAR Exception, following the approach 7-Zip uses. SeeLICENSE.mdandOpenSourceLicenses.md. - The archive engine is x64 only. Other architectures fall back to the previous ZIP-only behaviour.
Full changelog: https://github.com/LumiBearStudio/SpanFinder/compare/v1.8.0...v2.0.3
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

Navigate folder hierarchies the way they were meant to be navigated. Click a folder, its contents appear in the next column. You always see where you are, where you came from, and where you're going — all at once. No more clicking back and forth.
Why SPAN Finder?
| Windows Explorer | SPAN Finder | |
|---|---|---|
| Miller Columns | No | Yes — hierarchical multi-column navigation |
| Multi-Tab | Windows 11 only (basic) | Full tabs with tear-off, re-docking, duplication, session restore |
| Split View | No | Dual-pane with independent view modes |
| Preview Panel | Basic | 10+ file types — images, video, audio, code, hex, fonts, PDF |
| Keyboard Navigation | Limited | 150+ features, 30+ shortcuts, type-ahead search, full keyboard-first design |
| Batch Rename | No | Regex, prefix/suffix, sequential numbering |
| Undo/Redo | Limited | Full operation history (configurable depth) |
| Custom Themes | No | 10 themes — Dracula, Tokyo Night, Catppuccin, Gruvbox, Nord, and more |
| Git Integration | No | Branch, status, commits at a glance |
| Remote Connections | No | FTP, FTPS, SFTP with saved credentials |
| Workspaces | No | Save & restore named tab layouts instantly |
| Cloud Status | Basic overlay | Real-time sync badges (OneDrive, iCloud, Dropbox) |
| Startup Speed | Slow on large directories | Async loading with cancellation — zero lag |
Features
Miller Columns — See Everything at Once
Navigate deep folder hierarchies without losing context. Each column represents one level — click a folder and its contents appear in the next column. You always see where you are and where you came from.
- Draggable column separators for custom widths
- Auto-equalize columns (Ctrl+Shift+=) or auto-fit to content (Ctrl+Shift+-)
- Smooth horizontal scrolling to keep the active column visible
Four View Modes
- Miller Columns (Ctrl+1) — Hierarchical navigation, SPAN Finder's signature
- Details (Ctrl+2) — Sortable table with name, date, type, size columns
- List (Ctrl+3) — Dense multi-column layout for scanning large directories
- Icons (Ctrl+4) — Grid view with 4 size options up to 256x256 thumbnails

Multi-Tab with Full Session Restore
- Open unlimited tabs, each with its own path, view mode, and history
- Tab tear-off & re-docking: Drag a tab out to create a new window, drag it back to re-dock — Chrome-style ghost tab indicator and semi-transparent window feedback
- Tab duplication: Clone a tab with its exact path and settings
- Session auto-save: Close the app, reopen it — every tab exactly where you left it
Split View — True Dual-Pane
- Side-by-side file browsing with independent navigation per pane
- Each pane can use a different view mode (Miller left, Details right)
- Separate preview panels for each pane
- Drag files between panes for copy/move operations

Preview Panel — Know Before You Open

Press Space for Quick Look (macOS Finder style):
- Arrow key & Space navigation: Browse files without closing Quick Look
- Window size persistence: Quick Look remembers its last size
- Images: JPEG, PNG, GIF, BMP, WebP, TIFF with resolution and metadata
- Video: MP4, MKV, AVI, MOV, WEBM with playback controls
- Audio: MP3, AAC, M4A with artist, album, duration info
- Text & Code: 30+ extensions with syntax display
- PDF: First page preview
- Fonts: Glyph samples with metadata
- Hex Binary: Raw byte view for developers
- Folders: Size, item count, creation date
- File hash: SHA256 checksum display with one-click copy (opt-in via Settings)
Keyboard-First Design
30+ keyboard shortcuts for users who keep their hands on the keyboard:
| Shortcut | Action |
|---|---|
| Arrow Keys | Navigate columns and items |
| Enter | Open folder or execute file |
| Space | Toggle preview panel |
| Ctrl+L / Alt+D | Edit address bar |
| Ctrl+F | Search |
| Ctrl+C / X / V | Copy / Cut / Paste |
| Ctrl+Z / Y | Undo / Redo |
| Ctrl+Shift+N | New folder |
| F2 | Rename (batch rename if multi-select) |
| Ctrl+T / W | New tab / Close tab |
| Ctrl+Tab / Ctrl+Shift+Tab | Cycle tabs forward / backward |
| Ctrl+1-4 | Switch view mode |
| Ctrl+Shift+E | Toggle split view |
| F6 | Switch split view pane |
| Ctrl+Shift+S | Save workspace |
| Ctrl+Shift+W | Open workspace palette |
| Ctrl+Shift+H | Toggle file extensions |
| Shift+F10 | Full native shell context menu |
| Delete | Move to Recycle Bin |
Themes & Customization

- 10 Themes: Light, Dark, Dracula, Tokyo Night, Catppuccin, Gruvbox, Solarized, Nord, One Dark, Monokai
- 6-Level Row Height and 6-Level Font/Icon Size — independent controls
- 10 Font Options: Segoe UI Variable, Consolas, Cascadia Code/Mono, D2Coding, JetBrains Mono, Fira Code, and more — with CJK fallback font chain
- 3 Icon Packs: Remix Icon, Phosphor Icons, Tabler Icons
- 9 Languages: English, Korean, Japanese, Chinese (Simplified/Traditional), German, Spanish, French, Portuguese
Developer Tools

- Git status badges: Modified, Added, Deleted, Untracked per file
- Hex dump viewer: First 512 bytes in hex + ASCII
- Terminal integration: Ctrl+` opens terminal at current path
- Remote connections: FTP/FTPS/SFTP with encrypted credential storage
Cloud Storage Integration
- Sync status badges: Cloud-only, Synced, Pending Upload, Syncing
- OneDrive, iCloud, Dropbox detection out of the box
- Smart thumbnails: Uses cached previews — never triggers unwanted downloads
Smart Search
- Structured queries:
type:image,size:>100MB,date:today,ext:.pdf - Type-ahead: Start typing in any column to filter instantly
- Background processing: Search never freezes the UI
Recycle Bin Integration (v1.1.1.0)
- Dedicated Recycle Bin tab — browse, restore, or permanently delete items
- Empty Recycle Bin button in toolbar
- Full Miller / Details / List / Icon view support for binned items
Power User Enhancements (v1.1.2.0)
- Middle-click to open in new tab: Works on folders, drives, and sidebar favorites
- Tab context menu "Move to New Window": Tear off any tab via right-click
- Recent locations AutoSuggest: Address bar shows recently visited folders on focus
- Localized folder navigation: Type "Downloads", "文書", "바탕화면" etc. in any language — 100+ OS display names resolved via Known Folder cache
- Virtual folder navigation: Type "Control Panel", "This PC", "Network" (10 languages) to navigate shell namespaces
- Shell command execution: Type
cmd,powershell,calc,notepadin the address bar to launch directly - Run as Administrator: Right-click
.exe/.msi/.bat/.cmdfor a UAC-elevated launch option - Shift+F10: Force full native shell context menu regardless of selection
- Status bar selection size: Shows "3 selected (15.2 MB)" aggregate for multi-select
- Virtual file paste: Paste files from RDP remote sessions and Outlook attachments (Ctrl+V)
- Drive context menu: Format and Disk Cleanup actions for drives
- Background context menu: Undo and Folder Properties in empty-area right-click menu
Workspace — Save & Restore Tab Layouts (v1.2.1.0)
- Save current tabs: Right-click any tab → "Save tab layout..." or press Ctrl+Shift+S
- Restore instantly: Click the workspace button in the sidebar or press Ctrl+Shift+W
- Manage workspaces: Restore, rename, or delete saved layouts from the workspace menu
- Perfect for switching between work contexts — "Development", "Photo Editing", "Documents"
Tab Drag & Drop UX (v1.2.13.0)

- Chrome-style ghost tab: Visual indicator shows exactly where a dragged tab will land
- Semi-transparent dock feedback: Target window becomes translucent during re-docking
- Tear-off visual effects: Opacity and lift animation when dragging a tab out (disabled for single-tab windows)
- Stable tab widths: Chrome-style fixed-width tabs that don't resize to folder name length
Performance
Engineered for speed. Tested with 14,000+ items per folder.
- Async I/O everywhere — nothing blocks the UI thread
- Batch property updates with minimal overhead
- Debounced selection prevents redundant work during rapid navigation
- Per-tab caching — instant tab switching, no re-rendering
- Concurrent thumbnail loading with SemaphoreSlim throttling
System Requirements
| OS | Windows 10 version 1903+ / Windows 11 |
| Architecture | x64, ARM64 |
| Runtime | Windows App SDK 1.8 (.NET 8) |
| Recommended | Windows 11 for Mica backdrop |
Build from Source
# Prerequisites: Visual Studio 2022 with .NET Desktop + WinUI 3 workloads
# Clone
git clone https://github.com/LumiBearStudio/SpanFinder.git
cd SpanFinder
# Build
dotnet build src/Span/Span/Span.csproj -p:Platform=x64
# Run unit tests
dotnet test src/Span/Span.Tests/Span.Tests.csproj -p:Platform=x64
Note: WinUI 3 apps cannot be launched via
dotnet run. Use Visual Studio F5 (MSIX packaging required).
Contributing
Found a bug? Have a feature request? Open an issue — all feedback welcome.
See CONTRIBUTING.md for build setup, coding conventions, and PR guidelines.
Support the Project
If SPAN Finder makes your file management better, consider:
- Sponsor on GitHub — buy me a coffee, a hamburger, or a steak
- Star this repo to help others discover it
- Share with colleagues who miss macOS Finder on Windows
- Report bugs — every issue report makes SPAN Finder more stable
- Download from Microsoft Store — Store reviews help visibility
Privacy & Telemetry
SPAN Finder uses Sentry for crash reporting only — and you can turn it off.
- What we collect: Exception type, stack trace, OS version, app version
- What we DON'T collect: File names, folder paths, browsing history, personal information
- No usage analytics, no tracking, no ads
- All file paths in crash reports are automatically scrubbed before sending
SendDefaultPii = false— no IP addresses or user identifiers- Opt-out: Settings > Advanced > "Crash Reporting" toggle to disable completely
- Source code is open — verify yourself in
CrashReportingService.cs
See Privacy Policy for full details.
License
This project is licensed under the GNU General Public License v3.0.
Microsoft Store Exception: The copyright holder (LumiBear Studio) may distribute official binaries through the Microsoft Store under its terms, without those terms being considered "additional restrictions" under GPL v3 Section 7. This exception applies only to the official distribution and does not extend to third-party forks.
Trademark: The "SPAN Finder" name and official logo are trademarks of LumiBear Studio. Forks must use a different name and logo. See LICENSE.md for full trademark policy.