Monet

May 31, 2026 · View on GitHub

Swift 6.0 SwiftUI macOS 15

Monet Logo

Monet

An image viewer for macOS optimized for mouse users. Built with SwiftUI.

Download on the App Store

Demo

https://github.com/user-attachments/assets/f9faccb3-531e-4000-bc7f-e58fb922e6da

Screenshots

Monet Viewer Monet Settings
Monet App Store

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

Keyboard Shortcuts

KeyAction
← / →Previous / Next image
↑ / ↓Previous / Next image
Cmd + ScrollZoom in/out at mouse position
Mouse DragPan zoomed image

License

GNU General Public License v3.0 — see LICENSE for details.