Skip to content

Latest commit

 

History

History
103 lines (74 loc) · 4.02 KB

README.md

File metadata and controls

103 lines (74 loc) · 4.02 KB
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, jxl, png, bmp, webp, gif, tiff, qoi, tga
  • Opens camera RAW files (arw, cr2, cr3, dng, nef, raf, rw2 and more) by showing the JPEG the camera stored inside them

Download

Builds for Windows, macOS and Linux are on GitHub Releases. The official build on viewskater.com is the same app with a few extra features.

Or build from source:

cargo run --release --features official

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.

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
Delete (also Cmd+Backspace on macOS) Move the current image to the Trash
Ctrl+W Close images
Ctrl+Q Quit
Scroll wheel Zoom (centered on cursor)
Click + drag Pan
Double-click Reset zoom and pan
I Show or hide the metadata panel
F11 Toggle fullscreen
Escape Exit fullscreen

Caching and memory usage

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.

Contributing

Contributions are accepted under MIT or Apache 2.0 and ship in every build. A few features are behind the official cargo feature. If your PR improves one of them, that change ships only in the official build, though official features may move to the GitHub Releases builds over time. The source is in this repo, so you can build it yourself. Anyone whose PR is merged gets the official build (email viewskater@ggando.me).

License

ViewSkater is licensed under either of

at your option.