A modern image viewer for macOS with native animated GIF, APNG, and WebP playback. Built with SwiftUI — zero external dependencies.
- 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 (animated), APNG (animated), WebP (animated)
- Animation Playback: Frame-accurate playback with loop support, zoom/pan during animation
- Thumbnail Sidebar: Quick navigation strip, auto-hides when only one image is open
- Rotate: 90° left/right rotation — display-only for animated formats, lossless file-based for static images
- Delete: Move to Trash with confirmation dialog
- Print: Print current image via standard macOS print panel
- Copy: Copy image path or image data to clipboard via context menu
- Zoom: Cmd + scroll wheel (centered at mouse), pinch-to-zoom trackpad gesture, toolbar zoom buttons
- Actual Size / Fit to Window: One-click reset
- Pan: Mouse drag on zoomed images
- ← / → / ↑ / ↓: Navigate between images
- Backspace / Forward Delete: Delete current image
- Cmd + O: Open folder or image file
- Cmd + P: Print current image
- Cmd + ,: Open Settings
- Click to Reveal: Click image area to toggle chrome visibility, auto-hide after 5 seconds
- Bottom Toolbar: Scale, navigation, rotation, info panel toggle, delete — auto-hides with chrome
- Image Info Panel (right): Pixel dimensions, file size, format, modification date
- Navigation Arrows: Left/right edge overlays for quick browsing
- Dark / Light Mode: Full adaptive theme support
- Yearly Support: Annual subscription with full access to all current and future professional features
- Lifetime Support: One-time purchase, permanent access to all features forever
- Professional features like RAW camera format support are planned for future releases
- macOS 15.0 or later
- Swift 6.2+
git clone https://github.com/wflixu/iMonet.git
cd iMonet
swift runFor a Release .app bundle:
xcodebuild -scheme iMonet -configuration Release -derivedDataPath build -destination "platform=macOS,arch=arm64" ARCHS=arm64 ENABLE_HARDENED_RUNTIME=YES buildiMonet/
├── Sources/
│ ├── iMonetApp.swift # App entry point, scenes, AppDelegate
│ ├── AppState.swift # Global app state
│ ├── ContentView.swift # Main layout, chrome auto-hide, rotation, delete
│ ├── NavigationIdentifier.swift # Settings navigation identifiers
│ ├── Animator/
│ │ └── ImageAnimator.swift # Animated GIF/APNG/WebP frame decoder
│ ├── Views/
│ │ ├── ImagePreviewView.swift # Image loading, keyboard events, context menu
│ │ ├── ImageThumbnailView.swift # Individual thumbnail rendering
│ │ ├── ThumbnailSidebar.swift # Left thumbnail strip
│ │ ├── ImageInfoPanel.swift # Right info panel (pixels, size, format, date)
│ │ ├── ToolbarView.swift # Bottom floating toolbar
│ │ └── ZoomableImageView.swift # Zoom & pan image view (AppKit NSView)
│ ├── Settings/
│ │ ├── GeneralSettingsPane.swift # General preferences
│ │ ├── AboutSettingsPane.swift # About & purchase
│ │ ├── SettingsView.swift # Settings container
│ │ └── SettingsWindow.swift # Settings window scene
│ ├── Store/
│ │ ├── StoreManager.swift # StoreKit integration
│ │ ├── PurchasePromptView.swift # Purchase prompt UI
│ │ └── UsageTracker.swift # Launch tracking & prompt scheduling
│ ├── Permission/
│ │ └── PermissionsManager.swift # Security-scoped bookmark management
│ └── Shared/
│ ├── AppLogger.swift # @AppLog property wrapper
│ ├── Constants.swift # App constants, format lists
│ └── Util.swift # ObjectAssociation helper
├── Tests/
│ └── iMonetTests/
├── assets/ # README screenshots & logo
├── specs/ # Design documents
└── Package.swift
None — iMonet uses only Apple frameworks (SwiftUI, AppKit, ImageIO, StoreKit). Zero external dependencies.
GNU General Public License v3.0 — see LICENSE for details.




