An elegant image viewer for macOS, powered by SwiftUI.
- Folder Indexing: Automatically scans and indexes all images in the same folder
- Persistent Permissions: Uses security-scoped bookmarks so you only grant folder access once
- Supported Formats: PNG, JPEG, GIF, WebP
- Sidebar: Thumbnail strip for quick navigation, auto-hides with single image
- Arrow Keys: ←/→/↑/↓ to navigate images
- Cmd + Scroll: Zoom in/out centered at mouse position
- Mouse Drag: Pan around zoomed images
- Click to Reveal: Click image area to show controls, auto-hide after 5s
- Title & Toolbar: Appear on click, auto-hide after 5 seconds; hover toolbar to keep visible
- Image Info Panel (right): Pixel size, file size, format, modification date
- Dark / Light Mode: Full adaptive theme support
- Menu Bar Extra: Quick access from the menu bar
- macOS 15.0 or later
- Swift 6.0+
git clone https://github.com/yourusername/Monet.git
cd Monet
swift runMonet/
├── Sources/Monet/
│ ├── MonetApp.swift # App entry point, scenes, AppDelegate
│ ├── AppState.swift # Global app state
│ ├── ContentView.swift # Main layout, chrome auto-hide logic
│ ├── MenuBarView.swift # Menu bar extra view
│ ├── NavigationIdentifier.swift # Settings navigation
│ ├── Views/
│ │ ├── ImagePreviewView.swift # Image display with keyboard events
│ │ ├── ImageThumbnailView.swift # Single thumbnail
│ │ ├── ThumbnailSidebar.swift # Left thumbnail strip
│ │ ├── ImageInfoPanel.swift # Right info panel (pixels, size, format)
│ │ ├── ToolBarView.swift # Bottom floating toolbar
│ │ └── ZoomableImageView.swift # Zoom & pan image view (AppKit)
│ ├── Settings/
│ │ ├── GeneralSettingsPane.swift
│ │ ├── AboutSettingsPane.swift
│ │ ├── SettingsView.swift
│ │ └── SettingsWindow.swift
│ ├── Permission/
│ │ └── PermissionsManager.swift # File system permissions & bookmarks
│ └── Shared/
│ ├── AppLogger.swift # @AppLog property wrapper
│ ├── Constants.swift # App constants
│ └── Util.swift # ObjectAssociation
├── Tests/
└── Package.swift
- SDWebImageSwiftUI — image loading
- LaunchAtLogin-Modern — launch at login
- SwiftUITooltip — tooltips
| Key | Action |
|---|---|
| ← / → | Previous / Next image |
| ↑ / ↓ | Previous / Next image |
| Cmd + Scroll | Zoom in/out at mouse position |
| Mouse Drag | Pan zoomed image |
GNU General Public License v3.0 - see LICENSE file for details.
