GitHub - micha42-dot/uxzView: üxzView is an image viewer for Windows 10/11, Linux and macOS, built with C++20 and Qt 6. Inspired by IrfanView and nomacs.

GitHub

4 min read Original article ↗

üxzView is an image viewer for Windows 10/11, Linux and macOS, built with C++20 and Qt 6. Inspired by IrfanView and nomacs.

Currently in development. Prebuilt packages currently target Windows x64 only. You can also build üxzView from source for Linux and macOS; native builds on those platforms still need validation.

Features

  • Fast folder browsing, keyboard navigation and image caching.
  • Fullscreen viewing with mouse navigation, slideshows and zoom into a selected area.
  • Optional fullscreen information in any corner: resolution, DPI, file size and selected metadata.
  • Optional, centered thumbnail strip with 1–5 previous and next images.
  • Search for editing commands directly from the toolbar.
  • Resize, adjust crop selections freely or with preset/custom aspect ratios, rotate, flip, adjust colors and automatic correction.
  • Text overlays with live preview and a single-pixel color picker.
  • Visual batch processing with reusable profiles, watermarks and conversion reports.
  • Ratings, color labels, metadata search and duplicate detection.
  • System trash and undo/redo for image edits.
  • Configurable screenshots and keyboard shortcuts.
  • JPEG, PNG, WebP, TIFF, GIF, APNG, PSD composite images, SVG, RAW and additional plugin-provided formats.
  • Multi-page PDF reading with page navigation and image export.
  • Built-in jpegli JPEG export and a configurable default save format.
  • Configurable handling of unreadable files: skip, show a named error or continue with a black display.
  • Multi-page images, animation playback, 16-bit image data and ICC/EXIF/IPTC/XMP support where supported by the format.
  • ZIP/CBZ image collections through the optional archive format plugin.
  • Offline QR/barcode reading and text recognition from the image or a right-clicked selection, with removable tools and OCR languages.
  • Separate image-format and function extensions, with configurable storage folders.
  • Optional portable mode for settings, profiles, ratings and extensions beside the app.
  • German, English, Korean, Japanese and French interface options.

Format support, test coverage and remaining limitations: project status, format compatibility and quality checks.

Program files and downloads use the ASCII name uxzView. Existing settings and portable profiles retain their IxView storage identifiers for compatibility.

Portable mode

Portable mode is available under Options → Settings → Save and takes effect after restarting. Existing user data is copied on first activation and retained in its original location. Move portable.mode, IxView-data and tools together with the app. Details.

Build from source

Requirements: C/C++ compilers with C++20 support, CMake 3.24+, Qt 6.8+ (including Qt PDF for PDF reading) and libjpeg-turbo. The Windows SDK bootstrap installs the project's pinned dependencies locally. CMake fetches the pinned jpegli/Highway source archives automatically and verifies their SHA-256 hashes; these are built into the app. No additional runtime installation is needed.

Windows

With Python 3.14+ installed, run from the project folder:

python scripts/bootstrap_sdk.py
python scripts/build_tool_packs.py
./scripts/build.ps1 -Test
python scripts/deploy.py

Deployment also builds smaller HEIF/AVIF libraries and a local-file metadata library from pinned sources. Their source archives are downloaded once and cached locally.

Linux and macOS

Install Qt and the dependencies listed in the platform build guide, then run:

bash scripts/build.sh -DCMAKE_PREFIX_PATH=/path/to/Qt

The guide includes commands for Ubuntu and macOS, optional dependencies and native installation. The shared source code and build workflows are prepared for all three systems; successful native Linux/macOS runs are still outstanding.

Recognition tools

The Windows package includes QR/barcode reading (ZXing-C++) and text recognition (Tesseract), with English, German, French, Japanese and Korean OCR. Tools live in tools beside the application and run only when invoked. You can remove individual tools/languages or change their folder under Options → Manage extensions → Function extensions. They work on the whole image or a selection and leave image pixels unchanged. Reinstallation and source builds: function extensions.

Use üxzView as your default image viewer

Windows 10/11

Run register-windows.bat in the portable application folder. It finds uxzView.exe beside it automatically. If you keep the script elsewhere, edit the IXVIEW_EXE path inside it.

üxzView will be registered for your user in Open with and Settings → Apps → Default apps. Choose üxzView there for the image types you want. Windows requires you to make that final choice yourself.

For a registry file you can inspect or import manually:

./register-windows.ps1 -ExecutablePath 'C:\Apps\üxzView\uxzView.exe' -GenerateOnly -RegFilePath './uxzView.reg'

Run unregister-windows.bat to remove üxzView's registration. If you move the application folder, register its new location again. No administrator rights are needed. Registration details.

Linux

Install üxzView and its desktop entry using the build guide. Your file manager's Open with menu can then select üxzView. To set common defaults from a terminal:

xdg-mime default org.ixview.IxView.desktop image/jpeg image/png image/webp image/gif image/tiff image/bmp

macOS

Place the built uxzView.app in Applications and open it once. In Finder, select an image → Get Info → Open with → üxzView → Change All. Repeat for each image type you want to associate.

Development: contributing, architecture, tests and maintenance, stabilization review and remaining work.

License

GPL-3.0-or-later. See LICENSE. Third-party libraries keep their own licenses; Windows packages include license texts and corresponding source information.