A modern, native macOS file manager written in pure C using the microui immediate-mode UI library and SDL3. Designed as a Finder replacement with first-class SSH/SFTP, dual-pane navigation, tabbed browsing, and a built-in terminal emulator.
Early development. The core file browser is functional with both list and grid
views, real image thumbnails, and animated light/dark themes. SSH integration,
the terminal, and most file operations are still on the roadmap — see
FEATURES.md for the full status.
- Native macOS window powered by SDL3 + microui
- Light & Dark themes (auto-detected from system, toggle with
⌘J) - Sidebar with Favorites and Devices, full keyboard navigation
- Tabbed browsing (
⌘Tnew tab,⌘Wclose tab) - Clickable breadcrumb path bar
- Back / Forward / Up shortcuts (
⌘[,⌘],⌘↑) - List view with vector file-type icons
- Grid view with real image thumbnails (PNG / JPG / GIF / WebP / HEIC)
- Sort by name / size / date
- Toggle hidden files (
⌘⇧.) - Move-to-Trash via
NSFileManager(⌘⌫) - FSEvents-driven auto-refresh on directory changes
- Persistent settings at
~/.config/safifiles/config.json
- macOS 13 or newer (Ventura+)
- Xcode Command Line Tools
- CMake 3.25+
- Homebrew packages:
libssh,libarchive
# Install dependencies
brew install libssh libarchive cmake
# Configure (also fetches SDL3 + microui via FetchContent)
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
# Symlink compile_commands.json for Zed / clangd
ln -sf build/compile_commands.json compile_commands.json
# Build
cmake --build build -j$(sysctl -n hw.ncpu)
# Run
./build/SafiFiles| Action | Shortcut |
|---|---|
| New tab | ⌘T |
| Close tab | ⌘W |
| Back / Forward | ⌘[ / ⌘] |
| Parent directory | ⌘↑ |
| Refresh | ⌘R |
| Toggle hidden files | ⌘⇧. |
| Toggle light/dark theme | ⌘J |
| Move to Trash | ⌘⌫ |
| Delete permanently | ⌘⇧⌫ |
| Open file / folder | ⌘↩ |
- Pure C11 for the core (≈8000 LOC, growing)
- Objective-C for thin macOS bridges (FSEvents, NSFileManager, NSWorkspace)
- microui — ~1100 LOC immediate-mode UI library
- SDL3 — windowing, input, hardware-accelerated 2D rendering
- stb_truetype — UI font rendering
- stb_image — image thumbnail loading
- libssh — SSH/SFTP (linked, integration in progress)
- libarchive — archive support (linked, integration pending)
See FEATURES.md for the comprehensive list of working,
broken, and missing features.
Next priorities:
- Fix search input + right-click context menu
- Add multi-select, cut/copy/paste, new folder
- SSH/SFTP browsing with
~/.ssh/configparsing - Built-in terminal emulator (local + SSH)
- Quick Look and the preview panel