An elegant image viewer for macOS, powered by SwiftUI.
- Folder Access: Request folder access on startup to browse your images
- Auto-Indexing: Automatically scans and indexes all supported image formats
- Supported Formats: PNG, JPEG, GIF, WebP
- Arrow Keys: Navigate through images with arrow keys (←/→/↑/↓)
- Quick Switch: Browse all images without touching the mouse
- Command + Scroll: Zoom in/out centered on mouse position
- Mouse Drag: Pan around zoomed images
- Zoom Range: Supports 0.1x to 10x zoom levels
- Info Bar (top): Shows current zoom level and file name
- Navigation Panel (left): Thumbnail strip for quick navigation
- Toolbar (bottom): Image counter and navigation controls
- macOS 15.0 or later
- Xcode 16.0 or later
- Swift 6.0+
# Clone the repository
git clone https://github.com/yourusername/Monet.git
cd Monet
# Generate Xcode project (requires xcodegen)
brew install xcodegen
xcodegen generate
# Open in Xcode
open Monet.xcodeproj
# Or build from command line
xcodebuild -project Monet.xcodeproj -scheme Monet buildMonet/
├── Sources/
│ └── Monet/
│ ├── MonetApp.swift # App entry point
│ ├── AppState.swift # Global app state
│ ├── LayoutView.swift # Main layout view
│ ├── ZoomableImageView.swift # Zoomable image view
│ ├── Views/
│ │ ├── ToolBarView.swift # Bottom toolbar
│ │ ├── InfoBarView.swift # Top info bar
│ │ └── NavigationFloatView.swift # Left navigation panel
│ ├── Models/
│ │ └── ViewState.swift # Image transformation state
│ ├── Permission/
│ │ └── PermissionsManager.swift # File system permissions
│ ├── Settings/
│ │ ├── GeneralSettingsPane.swift
│ │ └── AboutSettingsPane.swift
│ ├── Shared/
│ │ ├── AppLogger.swift # Logging utilities
│ │ ├── Constants.swift
│ │ └── Util.swift
│ ├── Assets.xcassets/ # App resources
│ ├── Info.plist # App configuration
│ └── Monet.entitlements # Sandbox entitlements
├── Tests/
│ └── MonetTests/
├── project.yml # XcodeGen project spec
└── Monet.xcodeproj/ # Generated Xcode project
Monet is built with:
- SwiftUI for the user interface
- SDWebImageSwiftUI for image loading
- LaunchAtLogin for login item management
- SwiftUI-Tooltip for tooltips
| Key | Action |
|---|---|
| ← / → | Previous / Next image |
| ↑ / ↓ | Previous / Next image |
| Cmd + Scroll | Zoom in/out |
| Mouse Drag | Pan zoomed image |
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.