Skip to content

wflixu/Monet

Repository files navigation

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

imonet-play-compressed.mp4

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

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.

About

Mouse-first macOS image viewer. Zoom follows your cursor — no more zooming off-target.

Topics

Resources

License

Stars

Watchers

Forks

Contributors