A fast image viewer for browsing large collections of images.
See the codeThis repo is in maintenance mode and new features will be added to the egui version. If you rely on something in the iced version that it lacks, please open an issue at: https://github.com/ggand0/viewskater-egui/issues
ViewSkater is a fast, cross-platform image viewer written in Rust & Iced. It aims to alleviate the challenges of exploring and comparing numerous images. Linux, macOS and Windows are currently supported.
Download the latest builds from the egui version releases. Builds of this iced version are on the releases page, or build it locally:
cargo run
To see debug logs while running, set the RUST_LOG environment variable:
RUST_LOG=viewskater=debug cargo run
To build a full release binary for packaging or distribution:
cargo build --release
Building with optional features:
# Build with COCO annotation support
cargo build --release --features coco
# Build with selection feature
cargo build --release --features selection
# Build with JPEG 2000 support
cargo build --release --features jp2
# Build with multiple features
cargo build --release --features coco,selection,jp2
See docs/bundling.md for full packaging instructions.
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.png
gtk-update-icon-cache -f ~/.local/share/icons/hicolor/
cp resources/linux/viewskater.desktop ~/.local/share/applications/
Edit the Exec= line in the installed .desktop file to point to your binary:
sed -i "s|Exec=.*|Exec=/path/to/viewskater %f|" \
~/.local/share/applications/viewskater.desktop
For the AppImage, use the AppImage path instead:
sed -i "s|Exec=.*|Exec=/path/to/ViewSkater.AppImage %f|" \
~/.local/share/applications/viewskater.desktop
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 UI. Use the mouse wheel to zoom in/out of an image.
In dual-pane mode (Ctrl + 2), the slider syncs images in both panes by default. You can switch to per-pane sliders by selecting the "Controls -> Controls -> Toggle Slider" menu item or pressing the Space bar.
COCO Annotations (when built with --features coco):
Drag and drop a COCO-format JSON annotation file onto the app. The app will automatically search for the image directory in common locations:
images/, img/, val2017/, or train2017/ subdirectoriesIf the image directory is not found automatically, a folder picker will prompt you to select the image directory manually.
Image Selection (when built with --features selection):
Mark images for dataset curation while browsing. Press S to mark an image as selected (green badge), X to exclude it (red badge), or U to clear the mark. Export your selections to JSON using Cmd+E (macOS) or Ctrl+E (Windows/Linux). Selection states are automatically saved and persist across sessions.
| Action | macOS Shortcut | Windows/Linux Shortcut |
|---|---|---|
| Show previous / next image | Left / Right or A / D | Left / Right or A / D |
| Continuous scroll ("skate" mode) | Shift + Left / Right or Shift + A / D | Shift + Left / Right or Shift + A / D |
| Jump to first / last image | Cmd + Left / Right | Ctrl + Left / Right |
| Toggle UI (slider + footer) | Tab | Tab |
| Toggle single / dual slider | Space | Space |
| Select Pane 1 / 2 (Dual slider) | 1 / 2 | 1 / 2 |
| Open folder in Pane 1 / 2 | Alt + 1 / 2 | Alt + 1 / 2 |
| Open file in Pane 1 / 2 | Shift + Alt + 1 / 2 | Shift + Alt + 1 / 2 |
| Open file (Single pane) | Cmd + O | Ctrl + O |
| Open folder (Single pane) | Cmd + Shift + O | Ctrl + Shift + O |
| Toggle single / dual pane mode | Cmd + 1 / 2 | Ctrl + 1 / 2 |
| Toggle fullscreen mode | F11 | F11 |
| Close all panes | Cmd + W | Ctrl + W |
| Exit | Cmd + Q | Ctrl + Q |
These issues were opened here and transferred to the egui repository on 2026-09-11. The old links redirect.
| Here | Now | Title |
|---|---|---|
| #92 | viewskater-egui#36 | Image deletion |
| #86 | viewskater-egui#37 | Dragging the image outside the app |
| #78 | viewskater-egui#38 | Intel Mac support |
| #73 | viewskater-egui#39 | Performance drops over NFS with 1.6k images |
| #40 | viewskater-egui#40 | Tool window with image properties |
| #25 | viewskater-egui#41 | Package manager distribution |
| #7 | viewskater-egui#42 | WASM support example |
ViewSkater's slider UI was inspired by the open-source project emulsion.
ViewSkater is licensed under either of
at your option.
Rust
99.4%
A fast image viewer for browsing large collections of images.
See the codeThis repo is in maintenance mode and new features will be added to the egui version. If you rely on something in the iced version that it lacks, please open an issue at: https://github.com/ggand0/viewskater-egui/issues
ViewSkater is a fast, cross-platform image viewer written in Rust & Iced. It aims to alleviate the challenges of exploring and comparing numerous images. Linux, macOS and Windows are currently supported.
Download the latest builds from the egui version releases. Builds of this iced version are on the releases page, or build it locally:
cargo run
To see debug logs while running, set the RUST_LOG environment variable:
RUST_LOG=viewskater=debug cargo run
To build a full release binary for packaging or distribution:
cargo build --release
Building with optional features:
# Build with COCO annotation support
cargo build --release --features coco
# Build with selection feature
cargo build --release --features selection
# Build with JPEG 2000 support
cargo build --release --features jp2
# Build with multiple features
cargo build --release --features coco,selection,jp2
See docs/bundling.md for full packaging instructions.
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.png
gtk-update-icon-cache -f ~/.local/share/icons/hicolor/
cp resources/linux/viewskater.desktop ~/.local/share/applications/
Edit the Exec= line in the installed .desktop file to point to your binary:
sed -i "s|Exec=.*|Exec=/path/to/viewskater %f|" \
~/.local/share/applications/viewskater.desktop
For the AppImage, use the AppImage path instead:
sed -i "s|Exec=.*|Exec=/path/to/ViewSkater.AppImage %f|" \
~/.local/share/applications/viewskater.desktop
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 UI. Use the mouse wheel to zoom in/out of an image.
In dual-pane mode (Ctrl + 2), the slider syncs images in both panes by default. You can switch to per-pane sliders by selecting the "Controls -> Controls -> Toggle Slider" menu item or pressing the Space bar.
COCO Annotations (when built with --features coco):
Drag and drop a COCO-format JSON annotation file onto the app. The app will automatically search for the image directory in common locations:
images/, img/, val2017/, or train2017/ subdirectoriesIf the image directory is not found automatically, a folder picker will prompt you to select the image directory manually.
Image Selection (when built with --features selection):
Mark images for dataset curation while browsing. Press S to mark an image as selected (green badge), X to exclude it (red badge), or U to clear the mark. Export your selections to JSON using Cmd+E (macOS) or Ctrl+E (Windows/Linux). Selection states are automatically saved and persist across sessions.
| Action | macOS Shortcut | Windows/Linux Shortcut |
|---|---|---|
| Show previous / next image | Left / Right or A / D | Left / Right or A / D |
| Continuous scroll ("skate" mode) | Shift + Left / Right or Shift + A / D | Shift + Left / Right or Shift + A / D |
| Jump to first / last image | Cmd + Left / Right | Ctrl + Left / Right |
| Toggle UI (slider + footer) | Tab | Tab |
| Toggle single / dual slider | Space | Space |
| Select Pane 1 / 2 (Dual slider) | 1 / 2 | 1 / 2 |
| Open folder in Pane 1 / 2 | Alt + 1 / 2 | Alt + 1 / 2 |
| Open file in Pane 1 / 2 | Shift + Alt + 1 / 2 | Shift + Alt + 1 / 2 |
| Open file (Single pane) | Cmd + O | Ctrl + O |
| Open folder (Single pane) | Cmd + Shift + O | Ctrl + Shift + O |
| Toggle single / dual pane mode | Cmd + 1 / 2 | Ctrl + 1 / 2 |
| Toggle fullscreen mode | F11 | F11 |
| Close all panes | Cmd + W | Ctrl + W |
| Exit | Cmd + Q | Ctrl + Q |
These issues were opened here and transferred to the egui repository on 2026-09-11. The old links redirect.
| Here | Now | Title |
|---|---|---|
| #92 | viewskater-egui#36 | Image deletion |
| #86 | viewskater-egui#37 | Dragging the image outside the app |
| #78 | viewskater-egui#38 | Intel Mac support |
| #73 | viewskater-egui#39 | Performance drops over NFS with 1.6k images |
| #40 | viewskater-egui#40 | Tool window with image properties |
| #25 | viewskater-egui#41 | Package manager distribution |
| #7 | viewskater-egui#42 | WASM support example |
ViewSkater's slider UI was inspired by the open-source project emulsion.
ViewSkater is licensed under either of
at your option.
Rust
99.4%