A high-performance, frameless reference viewer for macOS (and Linux/Windows). Built with Tauri v2 + Svelte + TypeScript + Rust.
- Frameless UI: The window is the image.
- Always on Top: Floats above other windows by default (Toggle via Context Menu).
- Smart Resizing: Automatically resizes the window to fit the dropped image (Max 80% of screen size).
- Optimized Loading: Uses Rust for instant file analysis, handling 4K/8K images efficiently.
- Interactive Mode:
- Toggle with
Ctrl+I(orCmd+I) or via Context Menu. - On: Drag window, Resize edges, Zoom, Load images.
- Off: Click-through (conceptually), locked from accidental changes.
- Toggle with
- Zooming:
- Scroll Mouse Wheel to Zoom In/Out.
- Use
+/-keys to Zoom.
- Context Menu: Right-click to access:
- Interactive: Toggle interactive mode.
- Opacity: Adjust transparency (25% - 100%).
- Always on Top: Toggle pinning.
- Close: Quit the app.
- Cross-Platform Architecture: Designed with a
WindowControllertrait to handle platform-specific window constraints (e.g., aspect ratio locking on macOS).
- Rust: Install Rust
- Node.js: Install Node.js
You need to install system dependencies for Tauri:
sudo apt-get install libwebkit2gtk-4.1-dev \ build-essential \ curl \ wget \ file \ libssl-dev \ libgtk-3-dev \ libayatana-appindicator3-dev \ librsvg2-devInstall dependencies:
npm install
Run in development mode:
npm run tauri dev
npm run tauri buildWindow Resizing:
- macOS: Uses
cocoaandobjccrates to strictly lock the window's aspect ratio at the OS level. - Linux/Windows: Falls back to "Internal Letterboxing". The window resizes to the image initially, but if forced to a different ratio, the image centers itself within the transparent window.
- macOS: Uses
Frontend:
- Located in
src/. - Uses Svelte for high-performance DOM updates without virtual DOM overhead.
- Located in