114 lines
3.4 KiB
Markdown
114 lines
3.4 KiB
Markdown
# imajViewer
|
||
|
||
[](LICENSE)
|
||
[](https://github.com/alhan/imajviewer/actions/workflows/build.yml)
|
||
[](https://github.com/alhan/imajviewer/releases/latest)
|
||
|
||
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](https://github.com/alhan/imajviewer/releases/latest):
|
||
|
||
```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://github.com/alhan/imajviewer/releases/latest) 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) |
|
||
| 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
|
||
|
||
```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)
|