# imajViewer [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [Releases](https://git.softmediadesign.com/git_alhan/imajviewer/releases) Ultra-lightweight image viewer written in Flutter — Linux & Windows. ![imajViewer](imajviewer.png) ## Features - **Formats:** PNG, JPEG, JFIF, WebP, BMP, GIF, WBMP - **Pan:** Left drag - **Zoom:** Mouse wheel — 10% per step, cursor-centered (viewport-centered in rotate mode); hold `Ctrl` for fine zoom (1% per step) - **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°) - **Flip horizontally:** `Ctrl+R` — mirrors the view and clears the active effects (same reset as double right click); press `Ctrl+R` again to undo. Also matches the physical R key position, so keymaps that report the R key as a different character still work - **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) - **Save visible area:** title bar save icon or `Ctrl+S` — the on-screen region is written at original resolution as JPEG (quality 95) next to the source file (`photo.jpg` → `photo_143025.jpg`); active effects (contrast/saturation/brightness), rotation and horizontal flip are baked into the output; if that name already exists, nothing is written and a warning is shown - 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](https://git.softmediadesign.com/git_alhan/imajviewer/releases): ```bash sudo dpkg -i imajviewer_*_amd64.deb sudo apt-get install -f # install missing dependencies, if any ``` After install, open an image with `xdg-open ` or double-click it. ### Windows (installer) Download `imajviewer_setup_*.exe` from the [Releases page](https://git.softmediadesign.com/git_alhan/imajviewer/releases) 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](https://docs.flutter.dev/get-started/install) | stable channel | | Linux: GTK dev libs | `libgtk-3-dev`, `ninja-build`, `clang`, `cmake` | | Windows: VS 2022 Build Tools | "Desktop development with C++" workload | ```bash 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, 10% per step) | | Ctrl + Mouse wheel | Fine zoom (1% per step) | | 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) | | Ctrl + R | Flip horizontally (clears effects; press again to undo) | | Double right click | Reset (all effects) | | Left / Right arrow | Previous / next image | | Ctrl + O | Open file | | Ctrl + S | Save visible area (JPEG 95, original resolution) | | Esc | Exit fullscreen | | Ctrl + Q | Close window | | Ctrl + Shift + Q | Close all windows | ## Releases Installers are published on the [Gitea Releases page](https://git.softmediadesign.com/git_alhan/imajviewer/releases): - Linux `.deb` — `flutter build linux --release` + `bash dist/rebuild-deb.sh` - Windows installer — on a Windows machine: `.\build-windows.ps1` (Flutter + VS 2022 Build Tools + Inno Setup 6) ## Development ```bash flutter pub get flutter analyze flutter test ``` To rebuild the `.deb` locally: ```bash flutter build linux --release bash dist/rebuild-deb.sh ``` ## License [MIT](LICENSE)