A lightweight, blazing-fast image viewer built with iced 0.14.
Prebuilt binaries are attached to each release, self-contained with no runtime dependencies. The quickest path is cargo-binstall:
cargo binstall scryglass
Or build from source (cargo install scryglass), see Build & Run below
for the optional native features.
Every release ships two downloads per platform, both with all features (video playback on statically linked FFmpeg, AV1/AVIF, and HEIC/HEIF):
- An OS application: a Windows installer (
-setup.exe), a LinuxAppImage, or a macOS.dmg. - A slim archive holding just the binary: a
.zipon Windows, a.tar.gzon Linux and macOS. This is whatcargo binstallfetches.
The macOS app is unsigned, so Gatekeeper blocks the first launch. Either right-click the app and pick Open (macOS 14 and earlier), or open System Settings > Privacy & Security and click Open Anyway (macOS 15 Sequoia removed the right-click path). If it still refuses, clear quarantine from a terminal:
xattr -dr com.apple.quarantine /Applications/scryglass.app
The .dmg is the cleanest macOS install (drag the app out before
launching). The slim .tar.gz suits cargo binstall and scripting.
To make scryglass your default viewer on Windows, install it (the installer puts it at a stable path), then turn on file associations in its Settings and pick it under Settings > Apps > Default apps. This registers every supported image, video, and comic format for the current user, no admin needed.
How you remove scryglass depends on how it was installed:
- Windows installer: run Uninstall scryglass from the Start menu or Settings > Apps. It offers to also delete your settings and thumbnail cache. Choose No to keep them for a reinstall.
- macOS: drag
scryglass.appto the Trash. - Linux AppImage or a portable archive: delete the file or folder.
Apart from the Windows installer's prompt, removal leaves your data in the standard per-user locations, all safe to delete by hand:
| Data | Windows | Linux | macOS |
|---|---|---|---|
Settings (config.toml) |
%APPDATA%\scryglass |
~/.config/scryglass |
~/Library/Application Support/scryglass |
| Thumbnail cache | %LOCALAPPDATA%\scryglass |
~/.cache/scryglass |
~/Library/Caches/scryglass |
The thumbnail cache is the larger of the two and can also be cleared anytime from File → Settings.
- Smooth navigation: every keypress moves immediately, blurred placeholders cover slow loads, and images render as pre-allocated GPU textures
- Built for slow storage: all I/O runs off-thread with cancellation, so stalled reads never freeze the UI
- Smart caching: background prefetch into a byte-budgeted LRU cache, plus persistent disk thumbnails with deleted-file purging, 90-day expiry, and a 512 MB cap
- Archives as folders: browse zip/cbz, tar, 7z/cb7, and rar/cbr directly, including the animations and videos inside
- Animation playback: GIF, APNG, and animated WebP at native frame rate with correct frame compositing
- Video player (
videofeature): in-process FFmpeg decode with audio-synced playback, seeking, volume, looping, and auto-hiding controls - Flexible zoom: six zoom modes, scroll-wheel zoom toward the cursor, drag-to-pan, and a crisp-pixels mode for pixel art
- EXIF aware: orientation applied, embedded thumbnails for instant previews, and an info panel with camera metadata
- File management: recycle-bin delete and in-place rename, with an optional read-only mode
- Native sorting: files order exactly like your file manager, with date and size options
- Comfortable: dark and light themes, a virtualized filmstrip, position slider, context menu, persistent settings,
and a full keyboard map (
?shows it)
| Type | Formats |
|---|---|
| Images | PNG, JPEG, GIF, BMP, WebP, TIFF, ICO, JPEG XL, SVG |
| Animations | GIF, APNG, animated WebP |
| Camera RAW | embedded previews from CR2, CR3, NEF, ARW, DNG, ORF, RW2, RAF, PEF, SRW |
| HEIC/HEIF | heif feature |
| AVIF | video feature (decoded through FFmpeg) |
| Video | MP4, MKV, WebM, MOV, AVI, M4V including AV1 (video feature) |
| Archives | zip, cbz, tar, tar.gz, tgz, 7z, cb7, rar, cbr |
| Input | Action |
|---|---|
→ / D, ← / A |
Next / previous image (hold to scroll) |
Home / End |
First / last image |
Scroll wheel, + / − |
Zoom (toward cursor / center) |
Ctrl+0, double-click |
Reset zoom |
Ctrl+1 |
Zoom to 100% |
| Left-drag | Pan (when zoomed in) |
F / F11 |
Fullscreen |
I |
Info panel |
R / Shift+R |
Rotate view |
Delete, F2 |
Recycle / rename |
Space, J / L, M, ↑ / ↓ |
Video: play/pause, seek, mute, volume |
? |
Shortcut help |
| Right-click | Context menu |
Esc |
Close dialogs / leave fullscreen / dismiss menus |
Requires a current stable Rust toolchain with Rust 2024 edition support. The default feature set is pure Rust except for the optional RAR support, which builds vendored unrar C++ sources.
cargo build # default image/archive viewer
cargo run -- <path> # open a file, folder, or archive
cargo build --no-default-features # smallest dependency surface
cargo test # run tests
Advanced native builds (video, heif, and static FFmpeg/media
linking) are covered in BUILD.md.
Settings persist to config.toml in the platform config directory
(%APPDATA%\scryglass on Windows, ~/.config/scryglass on Linux,
~/Library/Application Support/scryglass on macOS). Unknown keys are
ignored, so configs survive upgrades in both directions. Most settings
are editable in-app via File → Settings.
scryglass follows the Elm Architecture (iced pattern):
App: single source of truth for all stateMessage: enum driving all state transitionsupdate(): handles messages, fires async tasksview(): pure rendering, no side effects
Images are loaded through iced's image::allocate() API, which returns GPU-resident Allocation objects. Holding an
Allocation guarantees the texture renders immediately: no decode delay, no flicker. All I/O (directory scans, decodes,
metadata, config writes) runs off the UI thread, and every load is cancellable the moment you navigate away.
MIT