{"id":13441629,"url":"https://github.com/nomacs/nomacs","last_synced_at":"2025-12-28T20:51:45.040Z","repository":{"id":40407117,"uuid":"12585625","full_name":"nomacs/nomacs","owner":"nomacs","description":"nomacs is a free image viewer for windows, linux, and mac systems.","archived":false,"fork":false,"pushed_at":"2025-05-06T13:34:56.000Z","size":88223,"stargazers_count":2292,"open_issues_count":400,"forks_count":164,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-05-06T13:38:28.306Z","etag":null,"topics":["avif","image-viewer","jpeg-xl","jpegxl","nomacs","opencv","photo-editor","picture-viewer"],"latest_commit_sha":null,"homepage":"https://nomacs.org/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nomacs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-09-04T08:18:41.000Z","updated_at":"2025-05-06T13:35:02.000Z","dependencies_parsed_at":"2023-12-18T23:05:51.673Z","dependency_job_id":"a37ab628-ecd0-4fd9-a559-c7da61ba4f08","html_url":"https://github.com/nomacs/nomacs","commit_stats":{"total_commits":3566,"total_committers":82,"mean_commits":43.48780487804878,"dds":0.3757711721817162,"last_synced_commit":"a9c5f81c26c2bffa9fd557cba9c3cd052e8310f8"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomacs%2Fnomacs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomacs%2Fnomacs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomacs%2Fnomacs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomacs%2Fnomacs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nomacs","download_url":"https://codeload.github.com/nomacs/nomacs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254053332,"owners_count":22006717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avif","image-viewer","jpeg-xl","jpegxl","nomacs","opencv","photo-editor","picture-viewer"],"created_at":"2024-07-31T03:01:36.299Z","updated_at":"2025-12-28T20:51:45.035Z","avatar_url":"https://github.com/nomacs.png","language":"C++","readme":"# nomacs - Image Lounge 🍸\n\nnomacs is a free, open source image viewer, which supports multiple platforms. You can use it for viewing all common image formats including RAW and psd images. nomacs is licensed under the GNU General Public License v3 and available for Windows, Linux, FreeBSD, Mac, Haiku, and OS/2.\n\n[![Build status](https://ci.appveyor.com/api/projects/status/ye6wd1hap4cebyo8?svg=true)](https://ci.appveyor.com/project/novomesk/nomacs)\n[![Downloads](https://img.shields.io/github/downloads/nomacs/nomacs/total.svg)](https://github.com/nomacs/nomacs/releases/latest)\n[![Crowdin](https://badges.crowdin.net/nomacs-neo/localized.svg)](https://crowdin.com/project/nomacs-neo)\n\n## Get the Source\n\n```console\ngit clone https://github.com/nomacs/nomacs.git\ncd nomacs\n\n# nomacs uses submodules for third party libraries\ngit submodule init\ngit submodule update\n```\n\n## Build nomacs (Windows)\n\nWe assume you have an IDE (i.e. Visual Studio), python, git, and [Qt](https://www.qt.io/download-open-source) installed.\n\nGet all dependencies:\n\n```bash\ngit submodule init\ngit submodule update\n```\n\nProject folders in ``3rd-party`` will not be empty anymore. Now call:\n\n```bash\npython scripts/make.py \"qtpath/bin\"\n```\n\nThis will build nomacs into `build/nomacs`. If you are using Visual Studio, you can then double-click `build/nomacs/nomacs.sln`. Right-click the nomacs project and choose `Set as StartUp Project`.\n\nBuild individual projects using:\n\n```bash\npython scripts/make.py \"qt/bin\" --project quazip,libraw --force\n```\n\n### Developer Build\n\nI like having a separate developer build (without submodules) that uses 3rd party libs already compiled. To do so you need to:\n\n```bash\ngit submodule update --init --remote scripts \n\n# python scripts/make.py \"C:\\Qt\\Qt-5.14.1-installer\\5.14.2\\msvc2017_64\\bin\" --lib-path C:\\coding\\nomacs\\nomacs\\3rd-party\\build\npython scripts/make.py \"qt/bin\" --lib-path \"nomacs/3rd-party/build\"\n```\n\n### If anything did not work\n\n- check if you have setup opencv (otherwise uncheck ENABLE_OPENCV)\n- check if your Qt is set correctly (otherwise set the path to `qt_install_dir/qtbase/bin/qmake.exe`)\n- check if your builds proceeded correctly\n\n## Build nomacs (Linux/Unix)\n\nBefore you build nomacs, please note the following:\n\n- Nomacs requires using Qt6.\n- [kimageformats-plugins]([https://github.com/KDE/kimageformats](https://invent.kde.org/frameworks/kimageformats)) is an optional dependency that provides additional formats such as AVIF, HEIC/HEIF, and JPEG XL/JXL. The Qt version of the plugins should match the Qt version when compiling nomacs.\n- Zip file support requires Quazip, which has varied support in distributions. If the system package is missing or does not work, you can set `USE_SYSTEM_QUAZIP=NO` to use the version in nomacs/3rdparty. However, you may also need to remove the any system quazip development package temporarily. (such as `llibquazip*-dev` for Ubuntu)\n\n### Get the required packages\n\nThe package lists and cmake configuration listed below enable all features in nomacs, which we recommend. However, if you do not want a particular feature you can omit certain packages.\n\n#### Build options and their dependencies\n\nThis is the list of configurable packages and what they provide in nomacs. To ensure a feature is included/excluded set the cmake option for that feature. By default, all features are enabled if the dependencies are found when running cmake**.\n\nThe following Qt components are necessary: Core, Concurrent, Network, PrintSupport, SVG, Widgets, Core5Compat.\n\nThere are other optional features that can be enabled during build:\n\n| Option             | Depends on     | Requires        | Description\n| ------------------ | -------------- | --------------- | -\n| `ENABLE_RAW`       | LibRAW         | `ENABLE_OPENCV` | Enables reading RAW images\n| `ENABLE_TIFF`      | LibTiff        | `ENABLE_OPENCV` | Enable reading multi-page TIFF\n| `ENABLE_QUAZIP`    | Quazip**       |                 | Enable reading from zip files\n| `ENABLE_OPENCV`    | OpenCV         |                 | RAW, TIFF, Adjustments, High-quality thumbnails, DRIF files, histogram, mosaic\n| `ENABLE_PLUGINS`   | nomacs/plugins | `ENABLE_OPENCV` | Paint on image, Composite, Affine Transform, Fake Miniatures, Page Extraction\n| `ENABLE_TESTING`   | GoogleTest     |                 | Enables `make check` target for unit testing\n\n(**) Quazip is not enabled by default as of nomacs 3.19.1\n\n#### Runtime dependencies\n\nAdditional packages will be used by nomacs if they are available at runtime, and they use the same Qt version as nomacs (5 or 6).\n\n- QImageFormats: Enables reading ICNS, MNG, TGA, TIFF, WBMP, WEBP\n- KImageFormats: Enables reading AVIF, HEIF/HEIC, JXL, EXR, EPS and [more](https://github.com/KDE/kimageformats)\n\n#### Ubuntu 24.04\n\n```console\nsudo apt install qt6-base-dev qt6-tools-dev qt6-svg-dev qt6-image-formats-plugins libexiv2-dev libraw-dev libopencv-dev libtiff-dev libtiff-dev libquazip1-qt6-dev build-essential git cmake lcov libgtest-dev\n```\n\n#### Ubuntu 22.04\n\n```console\nsudo apt install qt6-base-dev qt6-tools-dev qt6-tools-dev-tools libqt6svg6-dev libqt6core5compat6-dev qt6-l10n-tools qt6-image-formats-plugins libexiv2-dev libraw-dev libopencv-dev libtiff-dev libtiff-dev build-essential git cmake lcov libgtest-dev libgl-dev\n```\n\n#### Arch\n\n```console\n# qt6\nsudo pacman -S qt6-base qt6-imageformats qt6-svg qt6-tools quazip-qt6 exiv2 libraw libtiff opencv kimageformats git cmake gtest base-devel\n```\n\n#### Redhat/Fedora/CentOS (tested on Rocky 9.5)\n\n```console\nsudo dnf install qt6-qtbase-devel qt6-qtimageformats qt6-qtsvg-devel qt6-qttools-devel qt6-qt5compat-devel LibRaw-devel opencv-devel exiv2-devel libtiff-devel git cmake lcov gtest-devel gcc-c++\n```\n\n#### FreeBSD (14.2 release)\n\n```console\nsudo pkg install qt6-base qt6-imageformats qt6-svg qt6-5compat qt6-tools quazip-qt6 tiff exiv2 kf6-kimageformats libraw opencv git cmake googletest gcc\n```\n\n#### Haiku (r1 beta 5)\n\n```console\n# qt6\npkgman install qt6_base_devel qt6_tools_devel qt6_svg_devel qt6_5compat_devel quazip1_qt6_devel tiff_devel libraw_devel opencv_devel gtest_devel exiv2_devel kimageformats6 qt6_imageformats cake git gcc make pkgconfig lcms_devel\n```\n\n### Configure nomacs\n\nNomacs is configured with cmake. These cmake options are often needed:\n\n- ENABLE_QUAZIP=[ON|OFF] - Default OFF\n- USE_SYSTEM_QUAZIP=[ON|OFF] - Default ON\n- CMAKE_BUILD_TYPE=[Debug|Release|RelWithDebInfo] - For normal usage, choose `RelWithDebInfo`. For development, `Debug` builds have more logging as well as debug symbols.\n\n```console\ncd nomacs\nmkdir build\ncd build\ncmake ../ImageLounge\n```\n\n### Compile nomacs\n\n```console\nmake [-j 8]\n```\n\nYou will now have a binary (~/nomacs/build/nomacs), which you can use directly, however you may need to set LD_LIBRARY_PATH for this to work. You can check the log output to see that nomacs is loading configuration files from the expected locations.\n\n```console\n# running nomacs from ~/nomacs/build/\nLD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./nomacs\n```\n\n## Build and run tests\n\nNomacs uses [GoogleTest](https://github.com/google/googletest), which is included in the package lists above. A `check` target will be created if GoogleTest is present. To build and run tests:\n\n```bash\nmake check\n```\n\n### Install nomacs\n\nBy default nomacs is installed to /usr/local/ unless you set `CMAKE_INSTALL_PREFIX`\n\n```console\nsudo make install\n# ldconfig is required on most linux distros\n# Some systems you also require changes to \n# `/etc/ld.so.conf` to add `/usr/local/lib` \nsudo ldconfig\n```\n\n### For Package Maintainers\n\n- Highly recommended optional dependency: nomacs officially supported [plugins](https://github.com/nomacs/nomacs-plugins/), provide core features like paint-on-image. Enabled by default if `nomacs/ImageLounge/plugins` submodule is present.\n- Recommended optional dependency: qt-imageformats-plugins provides WEBP and many more formats\n- Recommended optional dependency: quazip provides support for reading images from zip files (with `ENABLE_QUAZIP=ON`). In the unlikely case there is a conflict with the quazip package, you may use 3rdparty/quazip with `USE_SYSTEM_QUAZIP=OFF`.\n- Recommended optional dependency: kimageformats provides AVIF, HEIF/HEIC, JXL and many more formats.\n- Recommended build dependency: gtest so you may run `make check` to validate the build\n- Ensure `ENABLE_TRANSLATIONS` is `ON` (default: `ON`)\n- Nomacs only requires the opencv-core and opencv-imgproc components at runtime, not the full opencv suite. This will save substantial space when installing nomacs.\n\n## Build nomacs (MacOS)\n\nInstall [Homebrew](http://brew.sh/) for easier installation of dependencies.\nInstall required dependencies:\n\n```console\nbrew install qt6 exiv2 opencv libraw quazip cmake pkg-config\n```\n\nGo to the `nomacs` directory and run the correct cmake for your hardware and Qt version. We recommend Qt6.\n\n```console\ncd nomacs; mkdir build; cd build\n\n# Qt6 / Intel \nCMAKE_PREFIX_PATH=/usr/local/opt/qt6/lib/cmake cmake -D ENABLE_QUAZIP=ON ../ImageLounge\n\n# Qt6 / Apple Silicon\nCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt6/lib/cmake cmake -D ENABLE_QUAZIP=ON ../ImageLounge\n```\n\nRun make:\n\n```console\nmake\n```\n\nYou will now have a binary (`nomacs.app`), which you can test (or use directly):\n\n```console\n# simulate opening from Finder\nopen nomacs.app\n\n# to see logging\n./nomacs.app/Contents/MacOS/nomacs\n```\n\nHomebrew seems to be missing kimageformats so we haves this option until that happens:\n\n```console\nmake kimageformats\n```\n\nNomacs registers supported file types via the Info.plist file in the app bundle. This is essential for open-with, drag-and-drop, etc features of the Finder. Supported types vary depending on what options to cmake, Qt and OS version, homebrew configuration, and even nomacs user-specified custom file types (via `Tools/Add Image Format`).\n\nNote that nomacs does not automatically make itself the default application for any supported types at this time, you will need to you use the open-with function in \"Get Info\" etc.\n\nTo ensure it is correct for the current build, run\n\n```console\nmake filetypes\nmake\n```\n\nWhen you are satisfied and want to install it to `/Applications`, use:\n\n```console\nsudo make install\n```\n\nIf you want a self-contained bundle (`nomacs.app`) and dmg file (`nomacs.dmg`) that can't be broken by homebrew updates, use:\n\n```console\nmake bundle\n```\n\nIf macdeployqt complains about `ERROR: Cannot resolve rpath \"@rpath/QtGui.framework/Versions/A/QtGui\"` [here](https://github.com/orgs/Homebrew/discussions/2823#discussioncomment-2010340) is the solution:\n\n```console\ncd /usr/local/lib/QtGui.framework/Versions/A\ninstall_name_tool -id '@rpath/QtGui.framework/Versions/A/QtGui' QtGui\notool -L QtGui | head -2\nQtGui:\n        @rpath/QtGui.framework/Versions/A/QtGui (compatibility version 6.0.0, current version 6.7.0)\n```\n\n## Build nomacs (Windows Cross-Compile)\n\nCompiles nomacs for Windows using M Cross Environment (MXE) from a Linux/Unix host.\n\nMXE environment is usually compiled from source, however you may be able to skip this if MXE has packages for your platform:\n\n```bash\ngit clone \u003cmxe url\u003e\ncd mxe\n\n# qt6 (quazip-qt6 is unavailable)\nmake MXE_TARGETS='x86_64-w64-mingw32.shared' qt6-qtbase qt6-qtimageformats qt6-qttools qt6-qt5compat opencv tiff exiv2 libraw\n```\n\nSetup build environment:\n\n```bash\nexport MXE_DIR=~/mxe\nexport MXE_TARGET=x86_64-w64-mingw32.shared\nexport PATH=\"${MXE_DIR}/usr/bin:$PATH\"\n\nalias pkg-config=${MXE_TARGET}-pkg-config\nalias qmake=${MXE_TARGET}-qmake\nalias cmake=${MXE_TARGET}-cmake\n```\n\nRun cmake out-of-tree:\n\n```bash\nmkdir build-nomacs\ncd build-nomacs\n\ncmake -D ENABLE_TRANSLATIONS=ON -D ENABLE_HEIF=ON -D ENABLE_AVIF=ON  \\\n-DENABLE_JXL=ON -D USE_SYSTEM_QUAZIP=OFF \u003cnomacs-path\u003e/ImageLounge\n```\n\nCompile nomacs:\n\n```bash\nmake -j8\nmake collect\n```\n\nRun on WINE:\n\n```bash\nwine nomacs-mingw/nomacs.exe\n```\n\nRun on Windows:\n\n```console\ncd C:\\\nxcopy /DEY \u003cshared-folder\u003e\\build-nomacs\\nomacs-mingw nomacs\ncd nomacs\nnomacs.exe\n```\n\n## Build nomacs (Windows with MSYS2)\n\n```bash\nexport target=mingw-w64-x86_64\n\npacman -S $target-qt6-base $target-qt6-svg $target-qt6-tools \\\n          $target-libraw $target-libtiff $target-exiv2 $target-opencv $target-cmake $target-gcc\n\nexport PATH=/ming64:$PATH\n\ncd \u003cbuild-dir\u003e\n\ncmake -D ENABLE_TRANSLATIONS=ON -D USE_SYSTEM_QUAZIP=ON \u003cnomacs-dir\u003e/ImageLounge\n\ncmake --build . --parallel 8\n```\n\n## Enable Debug output\n\nTo enable Qt debug messages set\n\n```bash\ncmake -D CMAKE_BUILD_TYPE=Debug ...\n```\n\nat the Makefiles generation phase.\n\n## Links\n\n- [nomacs.org](https://nomacs.org)\n- [GitHub](https://github.com/nomacs)\n- [Matrix chat room](https://matrix.to/#/#nomacs:matrix.org)\n\n[![nomacs-icon](https://nomacs.org/nomacs.svg)](https://nomacs.org)\n","funding_links":[],"categories":["C++","Image Viewers"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnomacs%2Fnomacs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnomacs%2Fnomacs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnomacs%2Fnomacs/lists"}