A fast, cross-platform image viewer built with Rust and egui. Designed for exploring and comparing large sets of images. Linux, macOS and Windows are supported.
This is the egui port of the original iced version.
- Dynamic image caching with background preloading
- Continuous image rendering via key presses and slider
- Dual pane view for side-by-side image comparison
- Scroll-to-zoom centered on cursor, click-drag to pan
- Fullscreen mode with cursor proximity UI reveal
- Supports jpg, png, bmp, webp, gif, tiff, qoi, tga
Download the pre-built binaries from the releases page, or build locally:
cargo run --releaseTo see debug logs:
RUST_LOG=viewskater_egui=debug cargo run --releaseOn GNOME 46+ (Ubuntu 24.04+), the taskbar icon requires installing a .desktop file and icon:
mkdir -p ~/.local/share/icons/hicolor/256x256/apps
cp assets/icon_256.png ~/.local/share/icons/hicolor/256x256/apps/viewskater-egui.png
gtk-update-icon-cache -f ~/.local/share/icons/hicolor/
cp assets/viewskater-egui.desktop ~/.local/share/applications/For the AppImage, update the Exec= line to point to the AppImage path:
sed -i "s|Exec=.*|Exec=/path/to/viewskater-egui.AppImage %f|" \
~/.local/share/applications/viewskater-egui.desktopDrag and drop an image or a directory of images onto a pane, and navigate through the images using the A / D keys or the slider. Use the mouse wheel to zoom in/out of an image.
In dual-pane mode (Ctrl+2 / Cmd+2), the slider syncs images in both panes by default.
On macOS, use Cmd instead of Ctrl.
| Input | Action |
|---|---|
| A / D or Left / Right arrow | Previous / next image |
| Hold A / D or arrows | Skate mode (continuous scroll) |
| Home / End | First / last image |
| Ctrl+1 / Ctrl+2 | Single / dual pane |
| Ctrl+O | Open file |
| Ctrl+Shift+O | Open folder |
| Ctrl+W | Close images |
| Ctrl+Q | Quit |
| Scroll wheel | Zoom (centered on cursor) |
| Click + drag | Pan |
| Double-click | Reset zoom and pan |
| F11 | Toggle fullscreen |
| Escape | Exit fullscreen |
ViewSkater caches decoded images in RAM for smooth rendering. Both caches are adjustable in Preferences.
| Cache | Purpose | Default | Setting |
|---|---|---|---|
| Sliding window | Preloads neighbors for instant keyboard navigation | 5 images ahead/behind | Cache Size |
| LRU decode | Stores visited images for smooth slider scrubbing | 1024 MB budget | LRU Budget (MB) |
Decoded pixels are much larger than compressed files on disk (e.g. a 10 MB PNG at 3840×2160 becomes ~32 MB as raw RGBA), so higher-resolution images use more cache per entry. Current memory usage is shown in the FPS overlay.
ViewSkater is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.