Downsample used ResizeImagePolicy.exact which forced a 2048×2048 square and stretched non-square images. Switch to ResizeImagePolicy.fit to preserve aspect ratio while still capping both dimensions.
imajViewer
Ultra-lightweight image viewer written in Flutter — Linux & Windows.
Features
- Formats: PNG, JPEG, JFIF, WebP, BMP, GIF, WBMP
- Pan: Left drag
- Zoom: Mouse wheel (cursor-centered; viewport-centered in rotate mode)
- Fill/Fit toggle: Double left click
- Contrast: Right drag + vertical move
- Saturation: Ctrl + Right drag + vertical move
- Brightness: Ctrl+Shift + Right drag + vertical move
- Rotate: Shift + Right drag + vertical move (~100px = 90°)
- Reset (all effects): Double right click
- Navigation arrows: bottom corners, visible on hover
- Settings (gear): sort by time/name, print, shortcut info
- Print: send the image to a printer (A4, fit)
- Drag & drop to open images
- Window size/position memory (JSON persistence)
- Set as default image viewer
- Cascade placement for new windows
- Taskbar grouping (Linux:
StartupWMClass)
Install
Linux (.deb, recommended)
No Flutter SDK needed — grab the latest .deb from the
Releases page:
sudo dpkg -i imajviewer_*_amd64.deb
sudo apt-get install -f # install missing dependencies, if any
After install, open an image with xdg-open <file> or double-click it.
Windows (installer)
Download imajviewer_setup_*.exe from the
Releases page and run it.
The installer:
- Installs to Program Files
- Adds a Start Menu shortcut (optional desktop shortcut)
- Registers file associations (PNG, JPG, JPEG, WebP, BMP, GIF)
- Supports uninstall (Settings > Apps)
Build from source
| Requirement | Notes |
|---|---|
| Flutter SDK | stable channel |
| Linux: GTK dev libs | libgtk-3-dev, ninja-build, clang, cmake |
| Windows: VS 2022 Build Tools | "Desktop development with C++" workload |
flutter pub get
flutter build linux # Linux
flutter build windows --release # Windows
Linux output: build/linux/x64/release/bundle/
Windows output: build\windows\x64\runner\Release\ (portable: copy the whole
folder including imajviewer.exe and all DLLs).
Keyboard & Mouse Shortcuts
| Interaction | Action |
|---|---|
| Left drag | Pan |
| Mouse wheel | Zoom (cursor-centered) |
| Double left click | Fill / Fit toggle |
| Right drag + vertical | Contrast (0.0 – 2.0) |
| Ctrl + Right drag + vertical | Saturation (0.0 – 2.0) |
| Ctrl+Shift + Right drag + vertical | Brightness (-100 – 100) |
| Shift + Right drag + vertical | Rotate (free) |
| Double right click | Reset (all effects) |
| Left / Right arrow | Previous / next image |
| Ctrl + Q | Close window |
| Ctrl + Shift + Q | Close all windows |
CI / Releases
GitHub Actions builds Linux .deb and Windows installer on every push to
main. Pushing a v* tag creates a GitHub Release with both installers as
assets.
Development
flutter pub get
flutter analyze
flutter test
To rebuild the .deb locally:
flutter build linux --release
bash dist/rebuild-deb.sh
License
Languages
Dart
41.9%
C++
20.5%
PowerShell
15.8%
CMake
14.8%
Shell
3.9%
Other
3.1%
