build: github acik kaynak hazirligi — LICENSE/CI/topluluk dosyalari eklendi, binary'ler takipten cikarildi, README EN, kok dokumanlar docs/'a tasindi
This commit is contained in:
1 parent
cd3f573f57
commit
8972ef7225
35 files changed
+560
-151
No files matched your search
@@ -1,162 +1,113 @@
|
||||
# imajViewer
|
||||
|
||||
Ultra hafif görüntü izleyici. Flutter ile yazıldı — Linux & Windows desteği.
|
||||
[](LICENSE)
|
||||
[](https://github.com/alhan/imajviewer/actions/workflows/build.yml)
|
||||
[](https://github.com/alhan/imajviewer/releases/latest)
|
||||
|
||||
## Özellikler
|
||||
Ultra-lightweight image viewer written in Flutter — Linux & Windows.
|
||||
|
||||
- **Dosya formatları:** PNG, JPEG, JFIF, WebP, BMP, GIF, WBMP
|
||||
- **Pan:** Sol tık + sürükle
|
||||
- **Zoom:** Fare tekerleği (imleç merkezli, rotate modunda viewport merkezli)
|
||||
- **Fill/Fit geçişi:** Sol çift tık
|
||||
- **Contrast ayarı:** Sağ tık + dikey sürükle
|
||||
- **Saturation ayarı:** Ctrl + Sağ tık + dikey sürükle
|
||||
- **Brightness ayarı:** Ctrl+Shift + Sağ tık + dikey sürükle
|
||||
- **Rotate:** Shift + Sağ tık + dikey sürükle (~100px = 90°)
|
||||
- **Reset (tüm efektler):** Sağ çift tık
|
||||
- **Gezinme okları:** Sol/sağ alt köşede, mouse resme girince görünür (hover'da kırmızı)
|
||||
- **Ayarlar (gear):** Title bar'da; klasör sıralaması (zamana/isme göre), yazdırma, kısayollar
|
||||
- **Yazdırma:** Ayarlar penceresinden resmi yazıcıya gönderir (A4, sığdır)
|
||||
- Sürükle-bırak ile resim açma
|
||||
- Pencere boyutu/konumu hatırlama (JSON persistence)
|
||||
- Varsayılan görüntü izleyici olarak ayarlanabilir
|
||||
- Yeni pencere öncekinin yanında açılır (cascade — taşarsa alt satır)
|
||||
- Taskbar gruplama (Linux: `StartupWMClass`, otomatik)
|
||||

|
||||
|
||||
## Linux Kurulum
|
||||
## Features
|
||||
|
||||
**Flutter SDK gerekmez** — `dist/` dizininde hazır .deb paketi gelir.
|
||||
- **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`)
|
||||
|
||||
### .deb paketi ile kurulum (Önerilen)
|
||||
## Install
|
||||
|
||||
### Linux (.deb, recommended)
|
||||
|
||||
No Flutter SDK needed — grab the latest `.deb` from the
|
||||
[Releases page](https://github.com/alhan/imajviewer/releases/latest):
|
||||
|
||||
```bash
|
||||
git clone https://git.softmediadesign.com/git_alhan/imajviewer.git
|
||||
cd imajviewer
|
||||
sudo dpkg -i dist/imajviewer_1.0.0_amd64.deb
|
||||
sudo apt-get install -f # eksik bağımlılıklar varsa
|
||||
sudo dpkg -i imajviewer_*_amd64.deb
|
||||
sudo apt-get install -f # install missing dependencies, if any
|
||||
```
|
||||
|
||||
### install.sh ile kurulum (kaynaktan/build)
|
||||
After install, open an image with `xdg-open <file>` or double-click it.
|
||||
|
||||
```bash
|
||||
git clone https://git.softmediadesign.com/git_alhan/imajviewer.git
|
||||
cd imajviewer
|
||||
./install.sh
|
||||
```
|
||||
### Windows (installer)
|
||||
|
||||
Kurulum sonrası `xdg-open <dosya>` ile açabilir veya dosyaya çift tıklayabilirsiniz.
|
||||
Aynı uygulamanın pencereleri taskbar'da otomatik gruplanır.
|
||||
Download `imajviewer_setup_*.exe` from the
|
||||
[Releases page](https://github.com/alhan/imajviewer/releases/latest) and run it.
|
||||
The installer:
|
||||
|
||||
### Kaldırma
|
||||
- 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)
|
||||
|
||||
```bash
|
||||
rm -rf ~/.local/lib/imajviewer ~/.local/bin/imajviewer \
|
||||
~/.local/share/applications/imajviewer.desktop \
|
||||
~/.local/share/icons/hicolor/64x64/apps/imajviewer.png
|
||||
```
|
||||
### Build from source
|
||||
|
||||
## Windows Kurulum
|
||||
|
||||
### Seçenek 1 — Inno Setup Installer (Önerilen)
|
||||
|
||||
`dist/imajviewer_setup_1.0.0.exe` dosyasını çift tıklayarak kurun. Yönetici yetkisi ister.
|
||||
|
||||
Kurulum şunları yapar:
|
||||
- Program Files altına kurulum
|
||||
- Başlat menüsü kısayolu
|
||||
- İsteğe bağlı masaüstü kısayolu
|
||||
- Kayıt defterine dosya ilişkilendirmeleri (PNG, JPG, JPEG, WebP, BMP, GIF)
|
||||
- Kaldırma desteği (Ayarlar > Uygulamalar)
|
||||
|
||||
### Seçenek 2 — MSIX Paketi
|
||||
|
||||
`build\windows\x64\runner\Release\imajviewer.msix` dosyasını PowerShell ile kurun:
|
||||
|
||||
```powershell
|
||||
Add-AppxPackage -Path "build\windows\x64\runner\Release\imajviewer.msix"
|
||||
```
|
||||
|
||||
> **Not:** MSIX imzalı değildir. Kurulum için Windows Developer Mode açık olmalıdır
|
||||
> (Ayarlar > Geliştiriciler için > Geliştirici Modu).
|
||||
|
||||
### Seçenek 3 — Portable (Kendin Derle)
|
||||
|
||||
| Gereksinim | Açıklama |
|
||||
| Requirement | Notes |
|
||||
|---|---|
|
||||
| [Flutter SDK](https://docs.flutter.dev/get-started/install/windows) | stable channel |
|
||||
| Visual Studio 2022 Build Tools | "Desktop development with C++" iş yükü |
|
||||
| Windows Developer Mode | Ayarlar > Geliştiriciler için > Geliştirici Modu |
|
||||
|
||||
```powershell
|
||||
git clone https://git.softmediadesign.com/git_alhan/imajviewer.git
|
||||
cd imajviewer
|
||||
flutter pub get
|
||||
flutter build windows --release
|
||||
```
|
||||
|
||||
Çıktı: `build\windows\x64\runner\Release\` dizini. `imajviewer.exe` ile birlikte tüm DLL'ler burada — taşınabilir, başka makinelere kopyalanabilir.
|
||||
|
||||
### Installer'ı Yeniden Oluşturma
|
||||
|
||||
```powershell
|
||||
flutter pub get
|
||||
flutter build windows --release
|
||||
"C:\ProgramData\chocolatey\bin\ISCC.exe" windows\installer.iss
|
||||
```
|
||||
|
||||
Çıktı: `dist\imajviewer_setup_1.0.0.exe`
|
||||
|
||||
## Klavye / Fare Kısayolları
|
||||
|
||||
| Etkileşim | Eylem |
|
||||
|---|---|
|
||||
| Sol tık + sürükle | Pan |
|
||||
| Fare tekerleği | Zoom (imleç merkezli) |
|
||||
| Sol çift tık | Fill / Fit geçişi |
|
||||
| Sağ tık + dikey sürükle | Contrast (0.0 – 2.0) |
|
||||
| Ctrl + Sağ tık + dikey sürükle | Saturation (0.0 – 2.0) |
|
||||
| Ctrl+Shift + Sağ tık + dikey sürükle | Brightness (-100 – 100) |
|
||||
| Shift + Sağ tık + dikey sürükle | Rotate (serbest) |
|
||||
| Sağ çift tık | Reset (tüm efektler) |
|
||||
| Sol / Sağ ok | Önceki / sonraki resim |
|
||||
| Ctrl + Q | Pencereyi kapat |
|
||||
| Ctrl + Shift + Q | Tüm pencereleri kapat |
|
||||
|
||||
## CI / Otomatik Build
|
||||
|
||||
Gitea Actions ile Windows build ve Inno Setup installer otomatik oluşturulur:
|
||||
|
||||
- **Trigger:** `main` dalına push
|
||||
- **İş akışı:** `.gitea/workflows/build-windows.yml`
|
||||
- **Çıktı:** `imajviewer.exe` + tüm DLL'ler, `imajviewer_setup_*.exe`
|
||||
- **Tag bazlı release:** `v*` tag'i push'lanırsa Gitea Release oluşturulur (`GITEA_TOKEN` gerekli)
|
||||
|
||||
## Sistem Gereksinimleri — Donanım Hızlandırma (VM önerisi)
|
||||
|
||||
Uygulama yazılımsal render (llvmpipe) altında çalışır, ancak efekt sürüklemesi
|
||||
büyük görsellerde kare atlayabilir. Sanal makinede akıcı kullanım için:
|
||||
|
||||
- **virtio-gpu + VirGL**: QEMU/libvirt'ta `virtio-vga-gl` / `virtio-gpu-gl`
|
||||
(mesa VirGL yoluyla hızlandırılmış GL). `/dev/dri` görünür hale gelir,
|
||||
llvmpipe yerine donanım render'ı kullanılır.
|
||||
- **PCIe Passthrough**: gerçek GPU'nun VM'e bağlanması (en yüksek performans).
|
||||
|
||||
## Geliştirme
|
||||
|
||||
Flutter SDK gereklidir.
|
||||
| [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 # Windows
|
||||
flutter build windows --release # Windows
|
||||
```
|
||||
|
||||
### .deb paketini güncelleme
|
||||
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
|
||||
```
|
||||
|
||||
## Lisans
|
||||
## License
|
||||
|
||||
MIT
|
||||
[MIT](LICENSE)
|
||||
Reference in new issue
Block a user