130 lines
4.3 KiB
Markdown
130 lines
4.3 KiB
Markdown
# imajViewer
|
||
|
||
[](LICENSE)
|
||
|
||
[Releases](https://git.softmediadesign.com/git_alhan/imajviewer/releases)
|
||
|
||
Ultra-lightweight image viewer written in Flutter — Linux & Windows.
|
||
|
||

|
||
|
||
## 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 <file>` 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)
|