ViewSkater

April 5, 2026 · View on GitHub

Alt text

ViewSkater

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.

Features

  • 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

Installation

Download the pre-built binaries from the releases page, or build locally:

cargo run --release

To see debug logs:

RUST_LOG=viewskater_egui=debug cargo run --release

Linux icon setup

On 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.desktop

Usage

Drag 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.

Shortcuts

On macOS, use Cmd instead of Ctrl.

InputAction
A / D or Left / Right arrowPrevious / next image
Hold A / D or arrowsSkate mode (continuous scroll)
Home / EndFirst / last image
Ctrl+1 / Ctrl+2Single / dual pane
Ctrl+OOpen file
Ctrl+Shift+OOpen folder
Ctrl+WClose images
Ctrl+QQuit
Scroll wheelZoom (centered on cursor)
Click + dragPan
Double-clickReset zoom and pan
F11Toggle fullscreen
EscapeExit fullscreen

Caching and memory usage

ViewSkater caches decoded images in RAM for smooth rendering. Both caches are adjustable in Preferences.

CachePurposeDefaultSetting
Sliding windowPreloads neighbors for instant keyboard navigation5 images ahead/behindCache Size
LRU decodeStores visited images for smooth slider scrubbing1024 MB budgetLRU 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.

License

ViewSkater is licensed under either of

at your option.