Monet
May 31, 2026 · View on GitHub
Monet
An image viewer for macOS optimized for mouse users. Built with SwiftUI.
Demo
https://github.com/user-attachments/assets/f9faccb3-531e-4000-bc7f-e58fb922e6da
Screenshots
![]() |
![]() |
Features
Image Browsing
- 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
Mouse & Keyboard
- 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
Floating UI
- 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
Requirements
- macOS 15.0 or later
- Swift 6.0+
Build & Run
git clone https://github.com/wflixu/Monet.git
cd Monet
swift run
For a Release .app bundle:
xcodebuild -scheme Monet -configuration Release -derivedDataPath build -destination "platform=macOS,arch=arm64" ARCHS=arm64 ENABLE_HARDENED_RUNTIME=YES build
Project Structure
Monet/
├── Sources/Monet/
│ ├── MonetApp.swift # App entry point, scenes, AppDelegate
│ ├── AppState.swift # Global app state
│ ├── ContentView.swift # Main layout, chrome auto-hide logic
│ ├── NavigationIdentifier.swift # Settings navigation
│ ├── Views/
│ │ ├── ImagePreviewView.swift # Image display with keyboard events
│ │ ├── ImageThumbnailView.swift
│ │ ├── 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
│ └── Shared/
│ ├── AppLogger.swift # @AppLog property wrapper
│ ├── Constants.swift
│ └── Util.swift # ObjectAssociation
├── Tests/
└── Package.swift
Dependencies
- SwiftUITooltip — tooltips
Keyboard Shortcuts
| Key | Action |
|---|---|
| ← / → | Previous / Next image |
| ↑ / ↓ | Previous / Next image |
| Cmd + Scroll | Zoom in/out at mouse position |
| Mouse Drag | Pan zoomed image |
License
GNU General Public License v3.0 — see LICENSE for details.

