pax_global_header00006660000000000000000000000064151503264370014520gustar00rootroot0000000000000052 comment=9b13a0151e7a34eed5a133a835d947823bf8f650 BestImageViewer-geeqie-33ba319/000077500000000000000000000000001515032643700163265ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/.clang-tidy000066400000000000000000000043271515032643700203700ustar00rootroot00000000000000#/* # * Copyright (C) 2023 The Geeqie Team # * # * Author: Colin Clark # * # * This program is free software; you can redistribute it and/or modify # * it under the terms of the GNU General Public License as published by # * the Free Software Foundation; either version 2 of the License, or # * (at your option) any later version. # * # * This program is distributed in the hope that it will be useful, # * but WITHOUT ANY WARRANTY; without even the implied warranty of # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # * GNU General Public License for more details. # * # * You should have received a copy of the GNU General Public License along # * with this program; if not, write to the Free Software Foundation, Inc., # * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # */ Checks: > -*, bugprone-*, llvm-*, misc-*, modernize-*, performance-*, portability-*, readability-*, -bugprone-assignment-in-if-condition, -bugprone-branch-clone, -bugprone-casting-through-void, -bugprone-easily-swappable-parameters, -bugprone-implicit-widening-of-multiplication-result, -bugprone-incorrect-roundings, -bugprone-multi-level-implicit-pointer-conversion, -bugprone-narrowing-conversions, -bugprone-non-zero-enum-to-bool-conversion, -bugprone-reserved-identifier, -bugprone-sizeof-expression, -llvm-header-guard, -llvm-namespace-comment, -llvm-qualified-auto, -misc-const-correctness, -misc-include-cleaner, -misc-no-recursion, -misc-non-private-member-variables-in-classes, -misc-use-anonymous-namespace, -modernize-avoid-c-arrays, -modernize-raw-string-literal, -modernize-type-traits, -modernize-use-trailing-return-type, -performance-enum-size, -performance-no-int-to-ptr, -readability-avoid-nested-conditional-operator, -readability-avoid-unconditional-preprocessor-if, -readability-braces-around-statements, -readability-function-cognitive-complexity, -readability-identifier-length, -readability-implicit-bool-conversion, -readability-magic-numbers, -readability-named-parameter, -readability-qualified-auto, CheckOptions: - key: misc-header-include-cycle.IgnoredFilesList value: gio.h;glib-object.h;gtk.h;poppler.h WarningsAsErrors: "*" BestImageViewer-geeqie-33ba319/.gitattributes000066400000000000000000000000301515032643700212120ustar00rootroot00000000000000*.c linguist-language=C BestImageViewer-geeqie-33ba319/.github/000077500000000000000000000000001515032643700176665ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/.github/ISSUE_TEMPLATE/000077500000000000000000000000001515032643700220515ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000013301515032643700245400ustar00rootroot00000000000000--- name: Bug about: Report a bug title: '' labels: 'bug' assignees: '' --- **Setup (please complete the following information):** - Distribution: [e.g. Ubuntu] - Distribution release: [e.g. 20.04] - Geeqie version [geeqie --version]: **Describe the bug** Describe the bug. **To reproduce** Steps to reproduce the behavior: **Expected behavior** If relevant, describe what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Image sources** If applicable, upload image files causing the bug. (Use gzip) **Error logs or seg. fault files** If applicable, upload text files from the bug. (Use gzip) **Additional context** Add any other context about the problem here. BestImageViewer-geeqie-33ba319/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000005641515032643700256030ustar00rootroot00000000000000--- name: Enhancement about: Request a new feature or enhancement title: '' labels: 'enhancement' assignees: '' --- **Setup (please complete the following information):** - Geeqie version [geeqie --version]: **Describe your feature request** Write your feature request here, **Additional context** Add any other context or screenshots about the feature request here. BestImageViewer-geeqie-33ba319/.github/ISSUE_TEMPLATE/question.md000066400000000000000000000005211515032643700242400ustar00rootroot00000000000000--- name: Question about: Ask a question about the project title: '' labels: 'question' assignees: '' --- **Setup (please complete the following information):** - Geeqie version [geeqie --version]: **What is your question** Write your query here. **Additional context** Add any other context or screenshots about the question here. BestImageViewer-geeqie-33ba319/.github/workflows/000077500000000000000000000000001515032643700217235ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/.github/workflows/appimage-aarch64.yml000066400000000000000000000076221515032643700254660ustar00rootroot00000000000000name: Geeqie aarch64 AppImage build run-name: ${{ github.actor }} is running Geeqie aarch64 AppImage build on: [push] jobs: Build-AppImage: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - run: git fetch --tags --force - run: git fetch --depth=1000000 - uses: pguyot/arm-runner-action@v2.6.5 with: base_image: raspios_lite_arm64:latest cpu: cortex-a53 image_additional_mb: 8000 bind_mount_repository: false import_github_env: true export_github_env: true copy_artifact_path: "*.AppImage;build/meson-logs/*.txt" commands: | yes | sudo apt-get update yes | sudo apt-get install build-essential yes | sudo apt-get install curl yes | sudo apt-get install gettext yes | sudo apt-get install git yes | sudo apt-get install libarchive-dev yes | sudo apt-get install libchamplain-0.12-dev yes | sudo apt-get install libchamplain-gtk-0.12-dev yes | sudo apt-get install libdw-dev yes | sudo apt-get install libdwarf-dev yes | sudo apt-get install libffmpegthumbnailer-dev yes | sudo apt-get install libgexiv2-dev yes | sudo apt-get install libgspell-1-dev yes | sudo apt-get install libgtk-3-bin yes | sudo apt-get install libgtk-3-dev yes | sudo apt-get install libheif-dev yes | sudo apt-get install libimath-dev yes | sudo apt-get install liblua5.3-dev yes | sudo apt-get install libomp-dev yes | sudo apt-get install libopenexr-dev yes | sudo apt-get install libpoppler-glib-dev yes | sudo apt-get install libraw-dev yes | sudo apt-get install libunwind-dev yes | sudo apt-get install libwebp-dev yes | sudo apt-get install meson yes | sudo apt-get install ninja-build yes | sudo apt-get install pandoc yes | sudo apt-get install python3 yes | sudo apt-get install python3-pip yes | sudo apt-get install python3-setuptools yes | sudo apt-get install python3-wheel yes | sudo apt-get install wget fuse yes | sudo apt-get install yelp-tools mkdir -p $GITHUB_WORKSPACE/AppDir mkdir -p $GITHUB_WORKSPACE/AppDir/usr meson setup \ -Ddoxygen=disabled \ -Dunit_tests=disabled \ -Dyelp-build=disabled \ -Dprefix=$GITHUB_WORKSPACE/AppDir/usr build ninja -C build install mkdir -p tools wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-aarch64.AppImage \ -O tools/linuxdeploy-aarch64.AppImage chmod +x tools/linuxdeploy-aarch64.AppImage wget https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh chmod +x linuxdeploy-plugin-gtk.sh sed -i '/GDK_BACKEND/d' linuxdeploy-plugin-gtk.sh tools/linuxdeploy-aarch64.AppImage \ --desktop-file $GITHUB_WORKSPACE/AppDir/usr/share/applications/org.geeqie.Geeqie.desktop \ --icon-file $GITHUB_WORKSPACE/AppDir/usr/share/icons/hicolor/scalable/apps/geeqie.svg \ --appdir $GITHUB_WORKSPACE/AppDir \ --plugin gtk \ --output appimage mv Geeqie-aarch64.AppImage Geeqie-latest-aarch64.AppImage - uses: ncipollo/release-action@v1 with: allowUpdates: true tag: continuous name: Continuous build prerelease: true artifacts: "*.AppImage" - uses: actions/upload-artifact@v4 if: always() with: name: logs-all-build-appimage path: "*-log.txt" retention-days: 5 BestImageViewer-geeqie-33ba319/.github/workflows/appimage-minimal-aarch64.yml000066400000000000000000000073341515032643700271120ustar00rootroot00000000000000name: Geeqie minimal aarch64 AppImage build run-name: ${{ github.actor }} is running Geeqie minimal aarch64 AppImage build on: [push] jobs: Build-AppImage: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - run: git fetch --tags --force - run: git fetch --depth=1000000 - name: Set up ARM64 build environment uses: pguyot/arm-runner-action@v2.6.5 with: base_image: raspios_lite_arm64:latest cpu: cortex-a53 image_additional_mb: 8000 bind_mount_repository: false import_github_env: true export_github_env: true copy_artifact_path: "*.AppImage;build/meson-logs/*.txt" commands: | yes | sudo apt-get update yes | sudo apt-get install build-essential yes | sudo apt-get install curl yes | sudo apt-get install gettext yes | sudo apt-get install git yes | sudo apt-get install libgtk-3-bin yes | sudo apt-get install libgtk-3-dev yes | sudo apt-get install librsvg2-dev yes | sudo apt-get install meson yes | sudo apt-get install ninja-build yes | sudo apt-get install pandoc yes | sudo apt-get install python3 yes | sudo apt-get install python3-pip yes | sudo apt-get install python3-setuptools yes | sudo apt-get install python3-wheel yes | sudo apt-get install wget fuse yes | sudo apt-get install yelp-tools mkdir -p $GITHUB_WORKSPACE/AppDir mkdir -p $GITHUB_WORKSPACE/AppDir/usr meson setup \ -Darchive=disabled \ -Dcms=disabled \ -Ddjvu=disabled \ -Ddoxygen=disabled \ -Dexecinfo=disabled \ -Dexiv2=disabled \ -Dexr=disabled \ -Dfits=disabled \ -Dgps-map=disabled \ -Dheif=disabled \ -Dhelp_pdf=disabled \ -Dj2k=disabled \ -Djpeg=disabled \ -Djpegxl=disabled \ -Dlibraw=disabled \ -Dlua=disabled \ -Dnpy=disabled \ -Dpdf=disabled \ -Dspell=disabled \ -Dtiff=disabled \ -Dvideothumbnailer=disabled \ -Dwebp=disabled \ -Dprefix=$GITHUB_WORKSPACE/AppDir/usr build ninja -C build install mkdir -p tools wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-aarch64.AppImage \ -O tools/linuxdeploy-aarch64.AppImage chmod +x tools/linuxdeploy-aarch64.AppImage wget https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh chmod +x linuxdeploy-plugin-gtk.sh sed -i '/GDK_BACKEND/d' linuxdeploy-plugin-gtk.sh tools/linuxdeploy-aarch64.AppImage \ --desktop-file $GITHUB_WORKSPACE/AppDir/usr/share/applications/org.geeqie.Geeqie.desktop \ --icon-file $GITHUB_WORKSPACE/AppDir/usr/share/icons/hicolor/scalable/apps/geeqie.svg \ --appdir $GITHUB_WORKSPACE/AppDir \ --plugin gtk \ --output appimage mv Geeqie-aarch64.AppImage Geeqie-minimal-latest-aarch64.AppImage - uses: ncipollo/release-action@v1 with: allowUpdates: true tag: continuous name: Continuous build prerelease: true artifacts: "*.AppImage" - uses: actions/upload-artifact@v4 if: always() with: name: logs-all-build-appimage path: "*-log.txt" retention-days: 5 BestImageViewer-geeqie-33ba319/.github/workflows/appimage-minimal-x86_64.yml000066400000000000000000000100611515032643700266070ustar00rootroot00000000000000name: Geeqie minimal x86_64 AppImage build run-name: ${{ github.actor }} is running Geeqie minimal x86_64 AppImage build on: [push] jobs: Build-AppImage: runs-on: ubuntu-24.04 container: image: ubuntu:24.04 steps: - name: Install dependencies run: | apt update apt install -y appstream apt install -y build-essential apt install -y curl apt install -y file apt install -y fuse apt install -y gettext apt install -y git apt install -y libgtk-3-bin apt install -y libgtk-3-dev apt install -y librsvg2-dev apt install -y pandoc apt install -y patchelf apt install -y wget apt install -y yelp-tools DEBIAN_FRONTEND=noninteractive apt-get install -y \ python3 python3-pip python3-venv \ ninja-build meson # ← avoid pip ninja; use distro ninja - name: Checkout uses: actions/checkout@v4 - name: Mark repo as safe run: git config --global --add safe.directory "$GITHUB_WORKSPACE" - name: git fetch run: | git fetch --tags --force git fetch --depth=1000000 - name: setup python uses: actions/setup-python@v5 with: python-version: '3.10' - name: Meson build uses: BSFishy/meson-build@v1.0.3 with: action: build directory: build setup-options: > --prefix=/usr --datadir=share -Darchive=disabled -Dcms=disabled -Ddjvu=disabled -Ddoxygen=disabled -Dexecinfo=disabled -Dexiv2=disabled -Dexr=disabled -Dfits=disabled -Dgit=disabled -Dgps-map=disabled -Dgtk4=disabled -Dheif=disabled -Dhelp_pdf=disabled -Dj2k=disabled -Djpeg=disabled -Djpegxl=disabled -Dlibraw=disabled -Dlua=disabled -Dnpy=disabled -Dpandoc=disabled -Dpdf=disabled -Dspell=disabled -Dtiff=disabled -Dvideothumbnailer=disabled -Dwebp=disabled -Dyelp-build=disabled options: --verbose meson-version: 1.3.2 - name: Ninja compile run: DESTDIR=${{ github.workspace }}/AppDir ninja -C build install # The linuxdeploy-plugin-gtk forces the backend to be X11, as it was considered # that Wayland has problems. Delete this and let the user choose. - name: Download linuxdeploy and plugin run: | wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage chmod +x linuxdeploy-x86_64.AppImage wget https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh chmod +x linuxdeploy-plugin-gtk.sh sed -i '/GDK_BACKEND/d' linuxdeploy-plugin-gtk.sh - name: Extract linuxdeploy to avoid FUSE run: | chmod +x linuxdeploy-x86_64.AppImage ./linuxdeploy-x86_64.AppImage --appimage-extract mv squashfs-root linuxdeploy - name: Build AppImage run: | ./linuxdeploy/AppRun --appdir ${{ github.workspace }}/AppDir \ --desktop-file ${{ github.workspace }}/AppDir/usr/share/applications/org.geeqie.Geeqie.desktop \ --plugin gtk \ --output appimage mv Geeqie-x86_64.AppImage Geeqie-minimal-latest-x86_64.AppImage - name: Create Release uses: ncipollo/release-action@v1 with: allowUpdates: true tag: continuous name: Continuous build prerelease: true artifacts: "Geeqie-minimal-latest-x86_64.AppImage" - name: Upload logs uses: actions/upload-artifact@v4 if: always() with: name: logs-all-build-appimage path: ${{ github.workspace }}/build/meson-logs/*.txt retention-days: 5 BestImageViewer-geeqie-33ba319/.github/workflows/appimage-x86_64.yml000066400000000000000000000103141515032643700251640ustar00rootroot00000000000000name: Geeqie x86_64 AppImage build run-name: ${{ github.actor }} is running Geeqie x86_64 AppImage build on: [push] jobs: Build-AppImage: runs-on: ubuntu-24.04 container: image: ubuntu:24.04 steps: - name: Install dependencies run: | apt update apt install -y appstream apt install -y build-essential apt install -y curl apt install -y docbook-xsl apt install -y file apt install -y fop apt install -y fuse apt install -y gettext apt install -y git apt install -y libarchive-dev apt install -y libcfitsio-dev apt install -y libcfitsio-dev apt install -y libchamplain-0.12-dev apt install -y libchamplain-gtk-0.12-dev apt install -y libdjvulibre-dev apt install -y libdw-dev apt install -y libdwarf-dev apt install -y libffmpegthumbnailer-dev apt install -y libgexiv2-dev apt install -y libgspell-1-dev apt install -y libgtk-3-bin apt install -y libgtk-3-dev apt install -y libheif-dev apt install -y libimath-dev #~ apt install -y libjxl-dev apt install -y liblua5.3-dev apt install -y libomp-dev apt install -y libopenexr-dev apt install -y libpoppler-glib-dev apt install -y libraw-dev apt install -y libunwind-dev apt install -y libwebp-dev apt install -y libwebp7 apt install -y pandoc apt install -y patchelf apt install -y wget apt install -y xsltproc apt install -y yelp-tools DEBIAN_FRONTEND=noninteractive apt-get install -y \ python3 python3-pip python3-venv \ ninja-build meson # ← avoid pip ninja; use distro ninja - name: Checkout uses: actions/checkout@v4 - name: Mark repo as safe run: git config --global --add safe.directory "$GITHUB_WORKSPACE" - name: git fetch run: | git fetch --tags --force git fetch --depth=1000000 - name: setup python uses: actions/setup-python@v5 with: python-version: '3.10' - name: Meson build uses: BSFishy/meson-build@v1.0.3 with: action: build directory: build setup-options: > --prefix=/usr --datadir=share options: --verbose meson-version: 1.3.2 - name: Ninja compile run: DESTDIR=${{ github.workspace }}/AppDir ninja -C build install # The linuxdeploy-plugin-gtk forces the backend to be X11, as it was considered # that Wayland has problems. Delete this and let the user choose. - name: Download linuxdeploy and plugin run: | wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage chmod +x linuxdeploy-x86_64.AppImage wget https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh chmod +x linuxdeploy-plugin-gtk.sh sed -i '/GDK_BACKEND/d' linuxdeploy-plugin-gtk.sh - name: Extract linuxdeploy to avoid FUSE run: | chmod +x linuxdeploy-x86_64.AppImage ./linuxdeploy-x86_64.AppImage --appimage-extract mv squashfs-root linuxdeploy - name: Build AppImage run: | ./linuxdeploy/AppRun --appdir ${{ github.workspace }}/AppDir \ --desktop-file ${{ github.workspace }}/AppDir/usr/share/applications/org.geeqie.Geeqie.desktop \ --plugin gtk \ --output appimage mv Geeqie-x86_64.AppImage Geeqie-latest-x86_64.AppImage - name: Create Release uses: ncipollo/release-action@v1 with: allowUpdates: true tag: continuous name: Continuous build prerelease: true artifacts: "Geeqie-latest-x86_64.AppImage" - name: Upload logs uses: actions/upload-artifact@v4 if: always() with: name: logs-all-build-appimage path: ${{ github.workspace }}/build/meson-logs/*.txt retention-days: 5 BestImageViewer-geeqie-33ba319/.github/workflows/check-build-actions.yml000066400000000000000000000211721515032643700262610ustar00rootroot00000000000000name: Geeqie check build run-name: ${{ github.actor }} is running Geeqie check build on: [push, pull_request] jobs: Check-Markdown: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Run Markdown Lint uses: actionshub/markdownlint@main Check-Shellcheck: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Run Shellcheck Lint uses: ludeeus/action-shellcheck@master with: ignore_names: downsize Check-Build-No-Options: runs-on: ubuntu-24.04 steps: - run: sudo apt-get update - run: sudo apt-get install appstream - run: sudo apt-get install build-essential libgtk-3-dev libgtk-3-bin - run: sudo apt-get install at-spi2-core - run: sudo apt-get install desktop-file-utils - run: sudo apt-get install gettext - run: sudo apt-get install libgtk-3-bin - run: sudo apt-get install libxml2-utils - run: sudo apt-get install shellcheck - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.10' - run: sudo apt-get install xvfb - uses: BSFishy/meson-build@v1.0.3 with: action: test directory: build setup-options: > -Darchive=disabled -Dcms=disabled -Ddjvu=disabled -Ddoxygen=disabled -Dexecinfo=disabled -Dexiv2=disabled -Dexr=disabled -Dfits=disabled -Dgit=disabled -Dgps-map=disabled -Dgtk4=disabled -Dheif=disabled -Dhelp_pdf=disabled -Dj2k=disabled -Djpeg=disabled -Djpegxl=disabled -Dlibraw=disabled -Dlua=disabled -Dnpy=disabled -Dpandoc=disabled -Dpdf=disabled -Dspell=disabled -Dtiff=disabled -Dunit_tests=disabled -Dvideothumbnailer=disabled -Dwebp=disabled -Dyelp-build=disabled options: --verbose meson-version: 1.3.2 - name: Upload logs uses: actions/upload-artifact@v4 if: always() with: name: logs-all-no-options path: ${{ github.workspace }}/build/meson-logs/*.txt retention-days: 5 Check-Build-No-Options-No-Debug: runs-on: ubuntu-24.04 steps: - run: sudo apt-get update - run: sudo apt-get install appstream - run: sudo apt-get install build-essential libgtk-3-dev libgtk-3-bin - run: sudo apt-get install at-spi2-core - run: sudo apt-get install desktop-file-utils - run: sudo apt-get install gettext - run: sudo apt-get install libgtk-3-bin - run: sudo apt-get install libxml2-utils - run: sudo apt-get install shellcheck - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.10' - run: sudo apt-get install xvfb - uses: BSFishy/meson-build@v1.0.3 with: action: test directory: build setup-options: > -Ddebug=false -Darchive=disabled -Dcms=disabled -Ddjvu=disabled -Ddoxygen=disabled -Dexecinfo=disabled -Dexiv2=disabled -Dexr=disabled -Dfits=disabled -Dgit=disabled -Dgps-map=disabled -Dgtk4=disabled -Dheif=disabled -Dhelp_pdf=disabled -Dj2k=disabled -Djpeg=disabled -Djpegxl=disabled -Dlibraw=disabled -Dlua=disabled -Dnpy=disabled -Dpandoc=disabled -Dpdf=disabled -Dspell=disabled -Dtiff=disabled -Dunit_tests=disabled -Dvideothumbnailer=disabled -Dwebp=disabled -Dyelp-build=disabled options: --verbose meson-version: 1.3.2 - name: Upload logs uses: actions/upload-artifact@v4 if: always() with: name: logs-all-no-options-no-debug path: ${{ github.workspace }}/build/meson-logs/*.txt retention-days: 5 Check-Build-Most-Options: runs-on: ubuntu-24.04 steps: - run: sudo apt-get update - run: sudo apt-get install appstream - run: sudo apt-get install at-spi2-core - run: sudo apt-get install build-essential libgtk-3-dev libgtk-3-bin - run: sudo apt-get install clang-tidy - run: sudo apt-get install desktop-file-utils - run: sudo apt-get install docbook-xsl - run: sudo apt-get install fop - run: sudo apt-get install gettext - run: sudo apt-get install libarchive-dev - run: sudo apt-get install libcfitsio-dev - run: sudo apt-get install libchamplain-0.12-dev libchamplain-gtk-0.12-dev - run: sudo apt-get install libdw-dev - run: sudo apt-get install libdwarf-dev - run: sudo apt-get install libgexiv2-dev - run: sudo apt-get install libgspell-1-dev - run: sudo apt-get install libgtk-3-bin - run: sudo apt-get install libheif-dev - run: sudo apt-get install libimath-dev - run: sudo apt-get install libdjvulibre-dev - run: sudo apt-get install libjxl-dev - run: sudo apt-get install liblua5.3-dev - run: sudo apt-get install libopenexr-dev - run: sudo apt-get install libopenjp2-7-dev - run: sudo apt-get install libpoppler-glib-dev - run: sudo apt-get install libraw-dev libomp-dev - run: sudo apt-get install librsvg2-dev - run: sudo apt-get install libunwind-dev - run: sudo apt-get install libwebp-dev - run: sudo apt-get install libwebp7 - run: sudo apt-get install libxml2-utils - run: sudo apt-get install pandoc - run: sudo apt-get install shellcheck - run: sudo apt-get install xsltproc #~ - run: sudo apt-get install libffmpegthumbnailer-dev #~ - run: sudo apt-get install yelp-tools - uses: actions/checkout@v4 with: fetch-depth: '0' - uses: actions/setup-python@v5 with: python-version: '3.10' - run: sudo apt-get install xvfb - uses: BSFishy/meson-build@v1.0.3 with: action: test directory: build setup-options: > -Dunit_tests=enabled options: --verbose meson-version: 1.3.2 - name: Upload logs uses: actions/upload-artifact@v4 if: always() with: name: logs-all-most-options path: ${{ github.workspace }}/build/meson-logs/*.txt retention-days: 5 Check-Build-Most-Options-No-Debug: runs-on: ubuntu-24.04 steps: - run: sudo apt-get update - run: sudo apt-get install appstream - run: sudo apt-get install at-spi2-core - run: sudo apt-get install build-essential libgtk-3-dev libgtk-3-bin - run: sudo apt-get install clang-tidy - run: sudo apt-get install desktop-file-utils - run: sudo apt-get install docbook-xsl - run: sudo apt-get install fop - run: sudo apt-get install gettext - run: sudo apt-get install libarchive-dev - run: sudo apt-get install libcfitsio-dev - run: sudo apt-get install libchamplain-0.12-dev libchamplain-gtk-0.12-dev - run: sudo apt-get install libdw-dev - run: sudo apt-get install libdwarf-dev - run: sudo apt-get install libgexiv2-dev - run: sudo apt-get install libgspell-1-dev - run: sudo apt-get install libgtk-3-bin - run: sudo apt-get install libheif-dev - run: sudo apt-get install libimath-dev - run: sudo apt-get install libdjvulibre-dev - run: sudo apt-get install libjxl-dev - run: sudo apt-get install liblua5.3-dev - run: sudo apt-get install libopenexr-dev - run: sudo apt-get install libopenjp2-7-dev - run: sudo apt-get install libpoppler-glib-dev - run: sudo apt-get install libraw-dev libomp-dev - run: sudo apt-get install librsvg2-dev - run: sudo apt-get install libunwind-dev - run: sudo apt-get install libwebp-dev - run: sudo apt-get install libwebp7 - run: sudo apt-get install libxml2-utils - run: sudo apt-get install pandoc - run: sudo apt-get install shellcheck - run: sudo apt-get install xsltproc #~ - run: sudo apt-get install libffmpegthumbnailer-dev #~ - run: sudo apt-get install yelp-tools - uses: actions/checkout@v4 with: fetch-depth: '0' - uses: actions/setup-python@v5 with: python-version: '3.10' - run: sudo apt-get install xvfb - uses: BSFishy/meson-build@v1.0.3 with: action: test directory: build setup-options: > -Ddebug=false -Dunit_tests=enabled options: --verbose meson-version: 1.3.2 - name: Upload logs uses: actions/upload-artifact@v4 if: always() with: name: logs-all-most-options-no-debug path: ${{ github.workspace }}/build/meson-logs/*.txt retention-days: 5 BestImageViewer-geeqie-33ba319/.github/workflows/check-compile-freebsd.yml000066400000000000000000000020731515032643700265630ustar00rootroot00000000000000name: Geeqie check compile FreeBSD run-name: ${{ github.actor }} is running Geeqie check compile FreeBSD on: [push, pull_request] jobs: Check-Compile-FreeBSD: runs-on: ubuntu-24.04 env: CXXFLAGS: "-Wno-deprecated-declarations -Wno-deprecated -g3" steps: - uses: actions/checkout@v4 - name: Check compile on FreeBSD uses: vmactions/freebsd-vm@v1 with: envs: 'CXXFLAGS' usesh: true prepare: | pkg install -y meson pkgconf evdev-proto libgudev libxml++ bash libevdev pkg install -y desktop-file-utils gettext-tools libarchive pkg install -y curl pkg install -y at-spi2-core pkg install -y gettext pkg install -y gtk3 run: | meson setup build meson compile -C build --verbose > ./build/meson-logs/meson-log-compile.txt - name: Upload logs uses: actions/upload-artifact@v4 if: always() with: name: logs-compile-freebsd path: ${{ github.workspace }}/build/meson-logs/*.txt retention-days: 5 BestImageViewer-geeqie-33ba319/.github/workflows/delete-workflow-runs.yml000066400000000000000000000006651515032643700265540ustar00rootroot00000000000000name: Delete workflow runs on: schedule: - cron: '0 0 * * 0' # Run on Sunday, at 00:00. jobs: Delete-Workflow-Runs: runs-on: ubuntu-24.04 permissions: actions: write steps: - name: Delete workflow runs uses: Mattraks/delete-workflow-runs@v2 with: token: ${{ github.token }} repository: ${{ github.repository }} retain_days: 10 keep_minimum_runs: 6 BestImageViewer-geeqie-33ba319/.gitignore000066400000000000000000000004341515032643700203170ustar00rootroot00000000000000*.bak *~ *.rej *.orig # /subprojects /subprojects/packagecache /subprojects/googletest-release-* /build /debian/geeqie* /debian/files /geeqie-cppcheck-build-dir # The files that are autocreated(!) README.html # Development tools (IDE, linters, etc) files .vscode meson.build.user BestImageViewer-geeqie-33ba319/.mailmap000066400000000000000000000010471515032643700177510ustar00rootroot00000000000000 Colin Clark John Ellis Laurent Monin Morgan Hardwood Rezső Páder Olaf Seibert BestImageViewer-geeqie-33ba319/.mdl.rb000066400000000000000000000002361515032643700175060ustar00rootroot00000000000000# Style settings for markdownlint (mdl) all rule 'MD007', :indent => 4 rule 'MD009', :br_spaces => 2 rule 'MD010', :code_blocks => true exclude_rule 'MD013' BestImageViewer-geeqie-33ba319/.mdlrc000066400000000000000000000000711515032643700174260ustar00rootroot00000000000000# markdownlint (mdl) configuration file style '.mdl.rb' BestImageViewer-geeqie-33ba319/.shellcheckrc000066400000000000000000000002151515032643700207570ustar00rootroot00000000000000enable=add-default-case enable=avoid-nullary-conditions enable=check-unassigned-uppercase enable=deprecate-which enable=quote-safe-variables BestImageViewer-geeqie-33ba319/CHECKLIST.md000066400000000000000000000047021515032643700201640ustar00rootroot00000000000000# Checklist for code updates and new releases of Geeqie ## Code Updates ### Before compiling the sources, carry out the following actions when necessary * Update `org.geeqie.Geeqie.appdata.xml.in` with the latest released version and date * Update `org.geeqie.Geeqie.metainfo.xml.in` with the latest released version and date * Update the desktop template if menus have changed ```sh ./build-aux/template-desktop.sh ``` * The command line completion file has three sections that must be updated by hand ```sh file_types actions options ./data/completions/geeqie ``` ### After compiling the sources, carry out the following actions when necessary * Update the man page and Command Line Options section in Help if the command line options have changed ```sh ./build-aux/generate-man-page.sh ``` * Update the keyboard shortcuts window if any keyboard shortcuts have changed ```sh ./data//ui/keyboard-shortcuts.ui ``` * Commit the changes and push to the .repo * Update the web-page Help files if they have changed * commit and push if necessary ```sh ./tools/web-help.sh ``` * Copy `org.geeqie.Geeqie.desktop` to `/` * Copy `org.geeqie.Geeqie.appdata.xml` to `/` * Push changes to `geeqie.github.io` ## New release Carry out the above actions to ensure the master branch is up to date, and then the following actions for new version \. * Edit `org.geeqie.Geeqie.appdata.xml.in` - Change date and version * Edit `org.geeqie.Geeqie.metainfo.xml.in` - Change date and version * Edit `NEWS` - The usual information. Ensure the first line is of the form `Geeqie ` ```sh ./packaging/new-release.sh <-h for list of options> ``` * Go to `https://github.com/BestImageViewer/geeqie/releases` and click on `Draft a new release`. * Under `Release title` insert "Geeqie \" * Under `Choose a tag` select `v` * In `Describe this release` copy-paste the relevant section of `NEWS`. * Upload the `/tmp/geeqie-.tar.xz` and `/tmp/geeqie-.tar.xz.asc` files created above * Click `Publish release` * Update the [Wikipedia entry](https://en.wikipedia.org/wiki/Geeqie) * When the latest AppImages have been generated on GitHub, run: ```sh ./packaging/new-release-appimages.sh ``` and upload the renamed files to the Latest release section on GitHub. * Create a new Snap and upload to SnapCraft: ```sh snapcraft snapscraft upload geeqie_.edge_amd64.snap --release=edge ``` BestImageViewer-geeqie-33ba319/CODE_OF_CONDUCT.md000066400000000000000000000037071515032643700211340ustar00rootroot00000000000000# Geeqie Code of Conduct - **Be welcoming, friendly, and patient** - **Be considerate.** Your work will be used by other people, and you in turn will depend on the work of others. Any decision you make will affect users and colleagues, and you should take those consequences into account when making decisions. - **Be respectful.** Not all of us will agree all the time, but disagreement is no excuse for poor behaviour and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It's important to remember that a community where people feel uncomfortable or threatened is not a productive one. Members of the Geeqie community should be respectful when dealing with other members as well as with people outside the Geeqie community and with user groups/conferences, usergroup/conference organizers. - **Be careful in the words that you choose.** Remember that sexist, racist, and other exclusionary jokes can be offensive to those around you. Be kind to others. Do not insult or put down other participants. Behave professionally. Remember that harassment and sexist, racist, or exclusionary jokes are not appropriate for the community. - **When disagreeing, try to understand why.** Disagreements, both social and technical, happen all the time and Geeqie is no exception. It is important that we resolve disagreements and differing views constructively. Remember that we're different. The strength of Geeqie comes from its varied community, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn't mean that they're wrong. Don't forget that it is human to err and blaming each other doesn't get us anywhere, rather offer to help resolving issues and to help learn from mistakes. *Derived from the [SpeakUp](http://web.archive.org/web/20141109123859/http://speakup.io/coc.html) project document.* BestImageViewer-geeqie-33ba319/CODING.md000066400000000000000000000266401515032643700176230ustar00rootroot00000000000000# Coding and Documentation Style [Error Logging](#error-logging) [SPDX license](#spdx-license) [Git change log](#git-change-log) [Source Code Style](#source-code-style) [Shell Script Style](#shell-script-style) [External Software Tools](#external-software-tools) [Geeqie Software Tools](#geeqie-software-tools) [Documentation](#documentation) [Documentation - C code](#c-code) [Documentation - Script files](#script-files) [Documentation - Markdown](#markdown) [Doxygen](#doxygen) --- ## Error Logging ### DEBUG_0() Use `DEBUG_0()` only for temporary debugging i.e. not in code in the repository. The user will then not see irrelevant debug output when the default `debug level = 0` is used. ### log_printf() If the first word of the message is "error" or "warning" (case insensitive) the message will be color-coded appropriately. - Note that these messages are output in the idle loop. ### print_term() `print_term(gboolean err, const gchar *text_utf8)` - If `err` is TRUE output is to STDERR, otherwise to STDOUT ### DEBUG_NAME(widget) For use with the [GTKInspector](https://wiki.gnome.org/action/show/Projects/GTK/Inspector?action=show&redirect=Projects%2FGTK%2B%2FInspector) to provide a visual indication of where objects are declared. Sample command line call: `GTK_DEBUG=interactive src/geeqie` ### DEBUG_BT() Prints a backtrace. Use only for temporary debugging i.e. not in code in the repository ### DEBUG_FD() Prints a dump of the FileData hash list as a ref. count followed by the full path of the item. Use only for temporary debugging i.e. not in code in the repository ### DEBUG_RU() Prints memory usage and runtime from `getrusage`. Use only for temporary debugging i.e. not in code in the repository ### Log Window When the Log Window has focus, the F1 key executes the action specified in `Edit/Preferences/Behavior/Log Window F1 Command` with the selected text as a parameter. If no text is selected, the entire line is passed to the command. This feature may be used to open an editor at a file location in the text string. --- ## SPDX license In all new files include a header, like this: ```c /* SPDX-License-Identifier: GPL-2.0-or-later */ ``` --- ## git change-log If referencing a Geeqie GitHub issue, include the issue number in the summary line and a hyperlink to the GitHub issue webpage in the message body. Start with a short summary in the first line (without a dot at the end) followed by a empty line. Use whole sentences beginning with Capital letter. For each modification use a new line. Or you can write the theme, colon and then every change on new line, begin with "- ". See also [A Note About Git Commit Messages](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) Example: ```text I did some bugfixes There was the bug that something was wrong. I fixed it. Library: - the interface was modified - new functions were added` ``` Also please use your full name and a working e-mail address as author for any contribution. --- ## Source Code Style Indentation: tabs at 4 spaces Names: - of variables & functions: small\_letters - of defines: CAPITAL\_LETTERS Try to use explicit variable and function names. Try not to use macros. Use **either** "struct foo" OR "foo"; never both Conditions, cycles: ```c if () { ; ... ; } else { ; ... ; } if ( && ) ; switch () { case 0: ; ; break; case 1: ; break; } for (i = 0; i <= 10; i++) { ; ... ; } ``` Functions: ```c gint bar(, , ) { ; ... ; return 0; // i.e. SUCCESS; if error, you must return minus @FIXME } void bar2(void) { ; ... ; } ``` Pragma: (Indentation 2 spaces) ```c #ifdef ENABLE_NLS # undef _ # define _(String) (String) #endif /* ENABLE_NLS */ ``` Headers: ```c #ifndef FILENAME_H ``` Use [Names and Order of Includes](https://google.github.io/styleguide/cppguide.html#Names_and_Order_of_Includes) for headers include order. Use spaces around every operator (except `.`, `->`, `++` and `--`). Unary operator `*` and `&` are missing the space from right, (and also unary `-`). As you can see above, parentheses are closed to inside, i.e. ` (blah blah) ` In `function()` there is no space before the `(`. You *may* use more tabs/spaces than you *ought to* (according to this CodingStyle), if it makes your code nicer in being vertically indented. Variables declarations should be followed by a blank line and should always be at the start of the block. Use glib types when possible (ie. gint and gchar instead of int and char). Use glib functions when possible (i.e. `g_ascii_isspace()` instead of `isspace()`). Check if used functions are not deprecated. ### C++ style In the case that both the following lines are syntactically correct, in order to emphasise the use of a pointer use: ```c auto *var = function(); ``` and not: ```c auto var = function(); ``` --- ## Shell Script Style Use `/bin/sh` as the interpreter directive. Ensure the script is POSIX compliant. Use `printf` rather than `echo` except for plain text. There are several versions of `mktemp`. Using the following definition helps portability (note that `template` is not optional): ```sh mktemp [-d] [-q] template ... ``` and use for example this style: ```sh mktemp "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX" ``` --- ## External Software Tools ### astyle There is no code format program that exactly matches the above style, but if you are writing new code the following command line program formats code to a fairly close level: ```sh astyle --options= ``` Where the options file might contain: ```text style=vtk indent=force-tab pad-oper pad-header unpad-paren align-pointer=name align-reference=name ``` ### cppcheck A lint-style program may be used, e.g. ```sh cppcheck --language=c --library=gtk --enable=all --force -USA_SIGINFO -UZD_EXPORT -Ugettext_noop -DG_KEY_FILE_DESKTOP_GROUP --template=gcc -I .. --quiet --suppressions-list= ``` Where the suppressions file might contain: ```text missingIncludeSystem variableScope unusedFunction unmatchedSuppression ``` ### markdownlint Markdown documents may be validated with e.g. [markdownlint](https://github.com/markdownlint/markdownlint). ```sh mdl --style BestImageViewer-geeqie-33ba319/data/icons/gqview-icon.svg000066400000000000000000000263641515032643700233360ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/hicolor/000077500000000000000000000000001515032643700220115ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/icons/hicolor/scalable/000077500000000000000000000000001515032643700235575ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/icons/hicolor/scalable/apps/000077500000000000000000000000001515032643700245225ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/icons/hicolor/scalable/apps/geeqie.svg000066400000000000000000000263641515032643700265150ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/icons.gresource.xml000066400000000000000000000057741515032643700242210ustar00rootroot00000000000000 geeqie-logo.svg gq-icon-archive-file-dark.svg gq-icon-archive-file.svg gq-icon-book.svg gq-icon-broken-dark.svg gq-icon-broken.svg gq-icon-collection-dark.svg gq-icon-collection.svg gq-icon-config.svg gq-icon-draw-rectangle-dark.svg gq-icon-draw-rectangle.svg gq-icon-exif-dark.svg gq-icon-exif.svg gq-icon-exposure-dark.svg gq-icon-exposure.svg gq-icon-float-dark.svg gq-icon-float.svg gq-icon-grayscale-dark.svg gq-icon-grayscale.svg gq-icon-heic-dark.svg gq-icon-heic.svg gq-icon-hidetools-dark.svg gq-icon-hidetools.svg gq-icon-maintenance-dark.svg gq-icon-maintenance.svg gq-icon-marks-dark.svg gq-icon-marks.svg gq-icon-metadata-dark.svg gq-icon-metadata.svg gq-icon-move-dark.svg gq-icon-move.svg gq-icon-original-dark.svg gq-icon-original.svg gq-icon-panorama-dark.svg gq-icon-panorama.svg gq-icon-pdf-dark.svg gq-icon-pdf.svg gq-icon-placeholder-dark.svg gq-icon-placeholder.svg gq-icon-rename-dark.svg gq-icon-rename.svg gq-icon-rotate-180-dark.svg gq-icon-rotate-180.svg gq-icon-select-all-dark.svg gq-icon-select-all.svg gq-icon-select-invert-dark.svg gq-icon-select-invert.svg gq-icon-select-none-dark.svg gq-icon-select-none.svg gq-icon-select-rectangle-dark.svg gq-icon-select-rectangle.svg gq-icon-sort-dark.svg gq-icon-sort.svg gq-icon-split-pane-sync-dark.svg gq-icon-split-pane-sync.svg gq-icon-thumb-dark.svg gq-icon-thumb.svg gq-icon-tools.svg gq-icon-unknown-dark.svg gq-icon-unknown.svg gq-icon-video-dark.svg gq-icon-video.svg gq-icon-view.svg gq-icon-zoomfillhor-dark.svg gq-icon-zoomfillhor.svg gq-icon-zoomfillvert-dark.svg gq-icon-zoomfillvert.svg gq-scroller.svg gqview-icon.svg geeqie.svg gq-icon-properties.svg gq-icon-properties-dark.svg BestImageViewer-geeqie-33ba319/data/icons/meson.build000066400000000000000000000003411515032643700225120ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later project_sources += gnome.compile_resources('icons', 'icons.gresource.xml') subdir('svg') install_subdir( 'hicolor', install_dir: join_paths(get_option('datadir'), 'icons') ) BestImageViewer-geeqie-33ba319/data/icons/svg/000077500000000000000000000000001515032643700211515ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/icons/svg/folder_closed.svg000066400000000000000000000046551515032643700245100ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/icons/svg/folder_locked.svg000066400000000000000000000101061515032643700244640ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/icons/svg/folder_open.svg000066400000000000000000000047131515032643700241730ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/icons/svg/folder_up.svg000066400000000000000000000041301515032643700236470ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/icons/svg/icon_book.svg000066400000000000000000000270221515032643700236370ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/svg/icon_config.svg000066400000000000000000000255611515032643700241600ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/svg/icon_tools.svg000066400000000000000000000306301515032643700240440ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/svg/icon_view.svg000066400000000000000000000153631515032643700236640ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/svg/meson.build000066400000000000000000000003321515032643700233110ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later datadir = prefix / get_option('datadir') iconsdir = datadir / 'icons' install_data( 'org.geeqie.Geeqie.svg', install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps', ) BestImageViewer-geeqie-33ba319/data/icons/svg/org.geeqie.Geeqie.svg000066400000000000000000000263641515032643700251300ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/svg/sheet_blank.svg000066400000000000000000000046421515032643700241570ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/icons/svg/sheet_broken.svg000066400000000000000000000107251515032643700243470ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/icons/svg/sheet_metadata.svg000066400000000000000000000102021515032643700246350ustar00rootroot00000000000000 image/svg+xml 0101 0110 1011 0101 0101 BestImageViewer-geeqie-33ba319/data/icons/svg/sheet_unknown.svg000066400000000000000000000106041515032643700245620ustar00rootroot00000000000000 image/svg+xml ??? BestImageViewer-geeqie-33ba319/data/icons/svg/sheet_video.svg000066400000000000000000000075461515032643700242040ustar00rootroot00000000000000 image/svg+xml BestImageViewer-geeqie-33ba319/data/icons/svg/spinner_orbit.svg000066400000000000000000000226531515032643700245570ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/images/000077500000000000000000000000001515032643700205045ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/images/images.gresource.xml000066400000000000000000000003251515032643700244700ustar00rootroot00000000000000 keymap-template.svg BestImageViewer-geeqie-33ba319/data/images/keymap-template.svg000066400000000000000000022431071515032643700243350ustar00rootroot00000000000000 image/svg+xml Q key:Q key:<Primary>Q key:<Shift>Q key:<Alt>Q key:<Super>Q key:<Primary><Shift>Q key:<Primary><Alt>Q key:<Shift><Alt>Q W key:W key:<Primary>W key:<Shift>W key:<Alt>W key:<Super>W key:<Primary><Shift>W key:<Primary><Alt>W key:<Shift><Alt>W F key:F key:<Primary>F key:<Shift>F key:<Alt>F key:<Alt>F key:<Primary><Shift>F key:<Primary><Alt>F key:<Shift><Alt>F D key:D key:<Primary>D key:<Shift>D key:<Alt>D key:<Super>D key:<Primary><Shift>D key:<Primary><Alt>D key:<Shift><Alt>D S key:S key:<Primary>S key:<Shift>S key:<Alt>S key:<Super>S key:<Primary><Shift>S key:<Primary><Alt>S key:<Shift><Alt>S A key:A key:<Primary>A key:<Shift>A key:<Alt>A key:<Super>A key:<Primary><Shift>A key:<Primary><Alt>A key:<Shift><Alt>A U key:U key:<Primary>U key:<Shift>U key:<Alt>U key:<Super>U key:<Primary><Shift>U key:<Primary><Alt>U key:<Shift><Alt>U Y key:Y key:<Primary>Y key:<Shift>Y key:<Alt>Y key:<Super>Y key:<Primary><Shift>Y key:<Primary><Alt>Y key:<Shift><Alt>Y T key:T key:<Primary>T key:<Shift>T key:<Alt>T key:<Super>T key:<Primary><Shift>T key:<Primary><Alt>T key:<Shift><Alt>T R key:R key:<Primary>R key:<Shift>R key:<Alt>R key:<Super>R key:<Primary><Shift>R key:<Primary><Alt>R key:<Shift><Alt>R E key:E key:<Primary>E key:<Shift>E key:<Alt>E key:<Super>E key:<Primary><Shift>E key:<Primary><Alt>E key:<Shift><Alt>E J key:J key:<Primary>J key:<Shift>J key:<Alt>J key:<Super>J key:<Primary><Shift>J key:<Primary><Alt>J key:<Shift><Alt>J H key:H key:<Primary>H key:<Shift>H key:<Alt>H key:<Super>H key:<Primary><Shift>H key:<Primary><Alt>H key:<Shift><Alt>H G key:G key:<Primary>G key:<Shift>G key:<Alt>G key:<Super>G key:<Primary><Shift>G key:<Primary><Alt>G key:<Shift><Alt>G V key:V key:<Primary>V key:<Shift>V key:<Alt>V key:<Super>V key:<Primary><Shift>V key:<Primary><Alt>V key:<Shift><Alt>V C key:C key:<Primary>C key:<Shift>C key:<Alt>C key:<Super>C key:<Primary><Shift>C key:<Primary><Alt>C key:<Shift><Alt>C X key:X key:<Primary>X key:<Shift>X key:<Alt>X key:<Super>X key:<Primary><Shift>X key:<Primary><Alt>X key:<Shift><Alt>X Z key:Z key:<Primary>Z key:<Shift>Z key:<Alt>Z key:<Super>Z key:<Primary><Shift>Z key:<Primary><Alt>Z key:<Shift><Alt>Z 3 key:3 key:<Primary>3 key:<Shift>sterling key:<Alt>3 key:<Super>3 key:<Primary><Shift>sterling key:<Primary><Alt>3 key:<Shift><Alt>sterling 2 key:2 key:<Primary>2 key:<Shift>quotedbl key:<Alt>2 key:<Super>2 key:<Primary><Shift>quotedbl key:<Primary><Alt>2 key:<Shift><Alt>quotedbl 1 key:1 key:<Primary>1 key:<Shift>exclam key:<Alt>1 key:<Primary><Shift>exclam key:<Primary><Alt>1 key:<Shift><Alt>exclam key:<Super>1 9 key:9 key:<Primary>9 key:<Shift>parenleft key:<Alt>9 key:<Super>9 key:<Primary><Shift>parenleft key:<Primary><Alt>9 key:<Shift><Alt>parenleft 8 key:8 key:<Primary>8 key:<Shift>asterisk key:<Alt>8 key:<Super>8 key:<Primary><Shift>asterisk key:<Primary><Alt>8 key:<Shift><Alt>asterisk 7 key:7 key:<Primary>7 key:<Shift>ampersand key:<Alt>7 key:<Super>7 key:<Primary><Shift>ampersand key:<Primary><Alt>7 key:<Shift><Alt>ampersand 6 key:6 key:<Primary>6 key:<Shift>asciicircum key:<Alt>6 key:<Super>6 key:<Primary><Shift>asciicircum key:<Primary><Alt>6 key:<Shift><Alt>asciicircum 5 key:5 key:<Primary>5 key:<Shift>percent key:<Alt>5 key:<Super>5 key:<Primary><Shift>percent key:<Primary><Alt>5 key:<Shift><Alt>percent 4 key:4 key:<Primary>4 key:<Shift>dollar key:<Alt>4 key:<Super>4 key:<Primary><Shift>dollar key:<Primary><Alt>4 key:<Shift><Alt>dollar L key:L key:<Primary>L key:<Shift>L key:<Alt>L key:<Super>L key:<Primary><Shift>L key:<Primary><Alt>L key:<Shift><Alt>L K key:K key:<Primary>K key:<Shift>K key:<Alt>K key:<Super>K key:<Primary><Shift>K key:<Primary><Alt>K key:<Shift><Alt>K O key:O key:<Primary>O key:<Shift>O key:<Alt>O key:<Super>O key:<Primary><Shift>O key:<Primary><Alt>O key:<Shift><Alt>O I key:I key:<Primary>I key:<Shift>I key:<Alt>I key:<Super>I key:<Primary><Shift>I key:<Primary><Alt>I key:<Shift><Alt>I . key:period key:<Primary>period key:<Shift>greater key:<Alt>period key:<Super>period key:<Primary><Shift>greater key:<Primary><Alt>period key:<Shift><Alt>greater , key:comma key:<Primary>comma key:<Shift>less key:<Alt>comma key:<Super>comma key:<Primary><Shift>less key:<Primary><Alt>comma key:<Shift><Alt>less M key:M key:<Primary>M key:<Shift>M key:<Alt>M key:<Super>M key:<Primary><Shift>M key:<Primary><Alt>M key:<Shift><Alt>M N key:N key:<Primary>N key:<Shift>N key:<Alt>N key:<Super>N key:<Primary><Shift>N key:<Primary><Alt>N key:<Shift><Alt>N B key:B key:<Primary>B key:<Shift>B key:<Alt>B key:<Super>B key:<Primary><Shift>B key:<Primary><Alt>B key:<Shift><Alt>B \ key:backslash key:<Primary>backslash key:<Shift>bar key:<Alt>backslash key:<Super>backslash key:<Primary><Shift>bar key:<Primary><Alt>backslash key:<Shift><Alt>bar = key:Equal key:<Primary>Equal key:<Shift>Equal key:<Alt>Equal key:<Super>Equal key:<Primary><Shift>Equal key:<Primary><Alt>Equal key:<Shift><Alt>Equal - key:Minus key:<Primary>Minus key:<Shift>Minus key:<Alt>Minus key:<Super>Minus key:<Primary><Shift>Minus key:<Primary><Alt>Minus key:<Shift><Alt>Minus 0 key:0 key:<Primary>0 key:<Shift>parenright key:<Alt>0 key:<Super>0 key:<Primary><Shift>parenright key:<Primary><Alt>0 key:<Shift><Alt>parenright ] key:BracketRight key:<Primary>BracketRight key:<Shift>BracketRight key:<Alt>BracketRight key:<Super>BracketRight key:<Primary><Shift>BracketRight key:<Primary><Alt>BracketRight key:<Shift><Alt>BracketRight [ key:BracketLeft key:<Primary>BracketLeft key:<Shift>BracketLeft key:<Alt>BracketLeft key:<Super>BracketLeft key:<Primary><Shift>BracketLeft key:<Primary><Alt>BracketLeft key:<Shift><Alt>BracketLeft P key:P key:<Primary>P key:<Shift>P key:<Alt>P key:<Super>P key:<Primary><Shift>P key:<Primary><Alt>P key:<Shift><Alt>P BS key:Backspace key:<Primary>Backspace key:<Shift>Backspace key:<Alt>Backspace key:<Super>Backspace key:<Primary><Shift>Backspace key:<Primary><Alt>Backspace key:<Shift><Alt>Backspace ' key:apostrophe key:<Primary>apostrophe key:<Shift>at key:<Alt>apostrophe key:<Super>apostrophe key:<Primary><Shift>at key:<Primary><Alt>apostrophe key:<Shift><Alt>at ; key:semicolon key:<Primary>semicolon key:<Shift>colon key:<Alt>semicolon key:<Super>semicolon key:<Primary><Shift>colon key:<Primary><Alt>semicolon key:<Shift><Alt>colon / key:slash key:<Primary>slash key:<Shift>question key:<Alt>slash key:<Super>slash key:<Primary><Shift>question key:<Primary><Alt>slash key:<Shift><Alt>question ` key:grave key:<Primary>grave key:<Shift>notsign key:<Alt>grave key:<Primary><Shift>notsign key:<Primary><Alt>grave key:<Shift><Alt>notsign key:<Super>grave ESC key:ESCAPE key:<Primary>ESCAPE key:<Shift>ESCAPE key:<Alt>ESCAPE key:<Primary><Shift>ESCAPE key:<Primary><Alt>ESCAPE key:<Shift><Alt>ESCAPE F4 key:F4 key:<Primary>F4 key:<Shift>F4 key:<Alt>F4 key:<Super>F4 key:<Primary><Shift>F4 key:<Primary><Alt>F4 key:<Shift><Alt>F4 F3 key:F3 key:<Primary>F3 key:<Shift>F3 key:<Alt>F3 key:<Super>F3 key:<Primary><Shift>F3 key:<Primary><Alt>F3 key:<Shift><Alt>F3 F2 key:F2 key:<Primary>F2 key:<Shift>F2 key:<Alt>F2 key:<Super>F2 key:<Primary><Shift>F2 key:<Primary><Alt>F2 key:<Shift><Alt>F2 F1 key:F1 key:<Primary>F1 key:<Shift>F1 key:<Alt>F1 key:<Super>F1 key:<Primary><Shift>F1 key:<Primary><Alt>F1 key:<Shift><Alt>F1 F8 key:F8 key:<Primary>F8 key:<Shift>F8 key:<Alt>F8 key:<Super>F8 key:<Primary><Shift>F8 key:<Primary><Alt>F8 key:<Shift><Alt>F8 F7 key:F7 key:<Primary>F7 key:<Shift>F7 key:<Alt>F7 key:<Super>F7 key:<Primary><Shift>F7 key:<Primary><Alt>F7 key:<Shift><Alt>F7 F6 key:F6 key:<Primary>F6 key:<Shift>F6 key:<Alt>F6 key:<Super>F6 key:<Primary><Shift>F6 key:<Primary><Alt>F6 key:<Shift><Alt>F6 F5 key:F5 key:<Primary>F5 key:<Shift>F5 key:<Alt>F5 key:<Super>F5 key:<Primary><Shift>F5 key:<Primary><Alt>F5 key:<Shift><Alt>F5 F9 key:F9 key:<Primary>F9 key:<Shift>F9 key:<Alt>F9 key:<Super>F9 key:<Primary><Shift>F9 key:<Primary><Alt>F9 key:<Shift><Alt>F9 F10 key:F10 key:<Primary>F10 key:<Shift>F10 key:<Alt>F10 key:<Super>F10 key:<Primary><Shift>F10 key:<Primary><Alt>F10 key:<Shift><Alt>F10 F11 key:F11 key:<Primary>F11 key:<Shift>F11 key:<Alt>F11 key:<Super>F11 key:<Primary><Shift>F11 key:<Primary><Alt>F11 key:<Shift><Alt>F11 F12 key:F12 key:<Primary>F12 key:<Shift>F12 key:<Alt>F12 key:<Super>F12 key:<Primary><Shift>F12 key:<Primary><Alt>F12 key:<Shift><Alt>F12 TAB key:TAB key:<Primary>TAB key:<Shift>TAB key:<Alt>TAB key:<Primary><Shift>TAB key:<Primary><Alt>TAB key:<Shift><Alt>TAB Caps Lock key:Caps Lock key:<Primary>Caps Lock key:<Shift>Caps Lock key:<Alt>Caps Lock key:<Primary><Shift>Caps Lock key:<Primary><Alt>Caps Lock key:<Shift><Alt>Caps Lock Shift key:Shift key:<Primary>Shift key:<Shift>Shift key:<Alt>Shift key:<Primary><Shift>Shift key:<Primary><Alt>Shift key:<Shift><Alt>Shift Alt key:Alt key:<Primary>Alt key:<Shift>Alt key:<Alt>Alt key:<Primary><Shift>Alt key:<Primary><Alt>Alt key:<Shift><Alt>Alt Win key:Win key:<Primary>Win key:<Shift>Win key:<Alt>Win key:<Primary><Shift>Win key:<Primary><Alt>Win key:<Shift><Alt>Win Ctrl key:Ctrl key:<Primary>Ctrl key:<Shift>Ctrl key:<Alt>Ctrl key:<Primary><Shift>Ctrl key:<Primary><Alt>Ctrl key:<Shift><Alt>Ctrl Shift key:Shift key:<Primary>Shift key:<Shift>Shift key:<Alt>Shift key:<Super>Shift key:<Primary><Shift>Shift key:<Primary><Alt>Shift key:<Shift><Alt>Shift Ctrl key:Ctrl key:<Primary>Ctrl key:<Shift>Ctrl key:<Alt>Ctrl key:<Primary><Shift>Ctrl key:<Primary><Alt>Ctrl key:<Shift><Alt>Ctrl Alt key:Alt key:<Primary>Alt key:<Shift>Alt key:<Alt>Alt key:<Primary><Shift>Alt key:<Primary><Alt>Alt key:<Shift><Alt>Alt Win key:Win key:<Primary>Win key:<Shift>Win key:<Alt>Win key:<Primary><Shift>Win key:<Primary><Alt>Win key:<Shift><Alt>Win Menu key:Menu key:<Primary>Menu key:<Shift>Menu key:<Alt>Menu key:<Primary><Shift>Menu key:<Primary><Alt>Menu key:<Shift><Alt>Menu Space key:Space key:<Primary>Space key:<Shift>Space key:<Alt>Space key:<Super>Space key:<Primary><Shift>Space key:<Primary><Alt>Space key:<Shift><Alt>Space Enter key:Enter key:<Primary>Enter key:<Shift>Enter key:<Alt>Enter key:<Primary><Shift>Enter key:<Primary><Alt>Enter key:<Shift><Alt>Enter PrtScr key:Print key:<Primary>Print key:<Shift>Print key:<Alt>Print key:<Super>Print key:<Primary><Shift>Print key:<Primary><Alt>Print key:<Shift><Alt>Print Insert key:Insert key:<Primary>Insert key:<Shift>Insert key:<Alt>Insert key:<Super>Insert key:<Primary><Shift>Insert key:<Primary><Alt>Insert key:<Shift><Alt>Insert PgUp key:Page_Up key:<Primary>Page_Up key:<Shift>Page_Up key:<Alt>Page_Up key:<Super>Page_Up key:<Primary><Shift>Page_Up key:<Primary><Alt>Page_Up key:<Shift><Alt>Page_Up Home key:Home key:<Primary>Home key:<Shift>Home key:<Alt>Home key:<Super>Home key:<Primary><Shift>Home key:<Primary><Alt>Home key:<Shift><Alt>Home Pause key:Pause key:<Primary>Pause key:<Shift>Pause key:<Alt>Pause key:<Super>Pause key:<Primary><Shift>Pause key:<Primary><Alt>Pause key:<Shift><Alt>Pause ScrL key:Scroll_Lock key:<Primary>Scroll_Lock key:<Shift>Scroll_Lock key:<Alt>Scroll_Lock key:<Super>Scroll_Lock key:<Primary><Shift>Scroll_Lock key:<Primary><Alt>Scroll_Lock key:<Shift><Alt>Scroll_Lock PgDn key:Page_Down key:<Primary>Page_Down key:<Shift>Page_Down key:<Alt>Page_Down key:<Super>Page_Down key:<Primary><Shift>Page_Down key:<Primary><Alt>Page_Down key:<Shift><Alt>Page_Down End key:End key:<Primary>End key:<Shift>End key:<Alt>End key:<Super>End key:<Primary><Shift>End key:<Primary><Alt>End key:<Shift><Alt>End Del key:Delete key:<Primary>Delete key:<Shift>Delete key:<Alt>Delete key:<Super>Delete key:<Primary><Shift>Delete key:<Primary><Alt>Delete key:<Shift><Alt>Delete NumLock key:NumLock key:<Primary>NumLock key:<Shift>NumLock key:<Alt>NumLock key:<Super>NumLock key:<Primary><Shift>NumLock key:<Primary><Alt>NumLock key:<Shift><Alt>NumLock KP_Minus key:KP_Subtract key:<Primary>KP_Subtract key:<Shift>KP_Subtract key:<Alt>KP_Subtract key:<Super>KP_Subtract key:<Primary><Shift>KP_Subtract key:<Primary><Alt>KP_Subtract key:<Shift><Alt>KP_Subtract KP_* key:KP_Multiply key:<Primary>KP_Multiply key:<Shift>KP_Multiply key:<Alt>KP_Multiply key:<Super>KP_Multiply key:<Primary><Shift>KP_Multiply key:<Primary><Alt>KP_Multiply key:<Shift><Alt>KP_Multiply KP_/ key:KP_Divide key:<Primary>KP_Divide key:<Shift>KP_Divide key:<Alt>KP_Divide key:<Super>KP_Divide key:<Primary><Shift>KP_Divide key:<Primary><Alt>KP_Divide key:<Shift><Alt>KP_Divide KP_9 key:KP_9 key:<Primary>KP_9 key:<Shift>KP_9 key:<Alt>KP_9 key:<Super>KP_9 key:<Primary><Shift>KP_9 key:<Primary><Alt>KP_9 key:<Shift><Alt>KP_9 KP_8 key:KP_8 key:<Primary>KP_8 key:<Shift>KP_8 key:<Alt>KP_8 key:<Super>KP_8 key:<Primary><Shift>KP_8 key:<Primary><Alt>KP_8 key:<Shift><Alt>KP_8 KP_7 key:KP_7 key:<Primary>KP_7 key:<Shift>KP_7 key:<Alt>KP_7 key:<Super>KP_7 key:<Primary><Shift>KP_7 key:<Primary><Alt>KP_7 key:<Shift><Alt>KP_7 KP_3 key:KP_3 key:<Primary>KP_3 key:<Shift>KP_3 key:<Alt>KP_3 key:<Super>KP_3 key:<Primary><Shift>KP_3 key:<Primary><Alt>KP_3 key:<Shift><Alt>KP_3 KP_2 key:KP_2 key:<Primary>KP_2 key:<Shift>KP_2 key:<Alt>KP_2 key:<Super>KP_2 key:<Primary><Shift>KP_2 key:<Primary><Alt>KP_2 key:<Shift><Alt>KP_2 KP_6 key:KP_6 key:<Primary>KP_6 key:<Shift>KP_6 key:<Alt>KP_6 key:<Super>KP_6 key:<Primary><Shift>KP_6 key:<Primary><Alt>KP_6 key:<Shift><Alt>KP_6 KP_5 key:KP_5 key:<Primary>KP_5 key:<Shift>KP_5 key:<Alt>KP_5 key:<Super>KP_5 key:<Primary><Shift>KP_5 key:<Primary><Alt>KP_5 key:<Shift><Alt>KP_5 KP_1 key:KP_1 key:<Primary>KP_1 key:<Shift>KP_1 key:<Alt>KP_1 key:<Super>KP_1 key:<Primary><Shift>KP_1 key:<Primary><Alt>KP_1 key:<Shift><Alt>KP_1 KP_4 key:KP_4 key:<Primary>KP_4 key:<Shift>KP_4 key:<Alt>KP_4 key:<Super>KP_4 key:<Primary><Shift>KP_4 key:<Primary><Alt>KP_4 key:<Shift><Alt>KP_4 KP_0 key:KP_0 key:<Primary>KP_0 key:<Shift>KP_0 key:<Alt>KP_0 key:<Super>KP_0 key:<Primary><Shift>KP_0 key:<Primary><Alt>KP_0 key:<Shift><Alt>KP_0 KP_Delete key:KP_Delete key:<Primary>KP_Delete key:<Shift>KP_Delete key:<Alt>KP_Delete key:<Super>KP_Delete key:<Primary><Shift>KP_Delete key:<Primary><Alt>KP_Delete key:<Shift><Alt>KP_Delete KP_Enter key:KP_Enter key:<Primary>KP_Enter key:<Shift>KP_Enter key:<Alt>KP_Enter key:<Super>KP_Enter key:<Primary><Shift>KP_Enter key:<Primary><Alt>KP_Enter key:<Shift><Alt>KP_Enter KP_Plus key:KP_Add key:<Primary>KP_Add key:<Shift>KP_Add key:<Alt>KP_Add key:<Super>KP_Add key:<Primary><Shift>KP_Add key:<Primary><Alt>KP_Add key:<Shift><Alt>KP_Add Right key:Right key:<Primary>Right key:<Shift>Right key:<Alt>Right key:<Super>Right key:<Primary><Shift>Right key:<Primary><Alt>Right key:<Shift><Alt>Right Up key:Up key:<Primary>Up key:<Shift>Up key:<Alt>Up key:<Super>Up key:<Primary><Shift>Up key:<Primary><Alt>Up key:<Shift><Alt>Up Left key:Left key:<Primary>Left key:<Shift>Left key:<Alt>Left key:<Super>Left key:<Primary><Shift>Left key:<Primary><Alt>Left key:<Shift><Alt>Left Down key:Down key:<Primary>Down key:<Shift>Down key:<Alt>Down key:<Super>Down key:<Primary><Shift>Down key:<Primary><Alt>Down key:<Shift><Alt>Down M1 key:M1 key:<Primary>M1 key:<Shift>M1 key:<Alt>M1 key:<Super>M1 key:<Primary><Shift>M1 key:<Primary><Alt>M1 key:<Shift><Alt>M1 M3 key:M3 key:<Primary>M3 key:<Shift>M3 key:<Alt>M3 key:<Alt>M3 key:<Primary><Shift>M3 key:<Primary><Alt>M3 key:<Shift><Alt>M3 M2 key:M2 key:<Primary>M2 key:<Shift>M2 key:<Alt>M2 key:<Super>M2 key:<Primary><Shift>M2 key:<Primary><Alt>M2 key:<Shift><Alt>M2 MW5 key:MW5 key:<Primary>MW5 key:<Shift>MW5 key:<Alt>MW5 key:<Super>MW5 key:<Primary><Shift>MW5 key:<Primary><Alt>MW5 key:<Shift><Alt>MW5 MW4 key:MW4 key:<Primary>MW4 key:<Shift>MW4 key:<Alt>MW4 key:<Super>MW4 key:<Primary><Shift>MW4 key:<Primary><Alt>MW4 key:<Shift><Alt>MW4 Colors key <Control>key <Shift>key <Alt>key <Super>key <Control><Shift>key <Control><Alt>key <Shift><Alt>key \ key:backslash key:<Primary>backslash key:<Shift>bar key:<Alt>backslash key:<Super>backslash key:<Primary><Shift>bar key:<Primary><Alt>backslash key:<Shift><Alt>bar # key:numbersign key:<Primary>numbersign key:<Shift>asciitilde key:<Alt>numbersign key:<Super>numbersign key:<Primary><Shift>asciitilde key:<Primary><Alt>numbersign key:<Shift><Alt>asciitilde BestImageViewer-geeqie-33ba319/data/images/meson.build000066400000000000000000000001721515032643700226460ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later project_sources += gnome.compile_resources('images', 'images.gresource.xml') BestImageViewer-geeqie-33ba319/data/man/000077500000000000000000000000001515032643700200125ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/man/geeqie.1000066400000000000000000000134231515032643700213360ustar00rootroot00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .TH GEEQIE "1" "February 2026" "Geeqie 2.7 GTK3" "User Commands" .SH NAME Geeqie - GTK based multiformat image viewer .SH DESCRIPTION Geeqie is an interactive GTK based image viewer that supports multiple image formats, zooming, panning, thumbnails and sorting images into collections. Generated for version: .SS "Usage:" .IP geeqie [OPTION…] [path...] .PP Geeqie is an image viewer. .IP Version: Geeqie 2.7 .SS "Help Options:" .TP \fB\-h\fR, \fB\-\-help\fR Show help options .TP \fB\-\-help\-all\fR Show all help options .TP \fB\-\-help\-gapplication\fR Show GApplication options .TP \fB\-\-help\-gtk\fR Show GTK+ Options .SS "Application Options:" .TP \fB\-\-action=\fR execute keyboard action (https://www.geeqie.org/help/GuideReferenceRemoteKeyboardActions.html) .TP \fB\-\-action\-list\fR list available keyboard actions (some are redundant) .TP \fB\-b\fR, \fB\-\-back\fR previous image .TP \fB\-\-cache\-metadata\fR clean the metadata cache .TP \fB\-\-cache\-render=\fR render thumbnails .TP \fB\-\-cache\-render\-recurse=\fR render thumbnails recursively .TP \fB\-\-cache\-render\-shared=\fR render thumbnails (see Help) .TP \fB\-\-cache\-render\-shared\-recurse=\fR render thumbnails recursively (see Help) .TP \fB\-\-cache\-shared\fR=\fI\,clean\/\fR|clear clear or clean shared thumbnail cache .TP \fB\-\-cache\-thumbs\fR=\fI\,clear\/\fR|clean clear or clean thumbnail cache .TP \fB\-\-close\-window\fR close window .TP \fB\-\-config\-load=\fR load configuration from FILE .TP \fB\-d\fR, \fB\-\-delay=\fR<[H:][M:][N][.M]> set slide show delay to Hrs Mins N.M seconds, .TP \fB\-\-dupes=\fR find duplicates in folder .TP \fB\-\-dupes\-export\fR export duplicates search result .TP \fB\-\-dupes\-recurse=\fR find duplicates in folder recursively .TP \fB\-\-file=\fR| open FILE or URL bring Geeqie window to the top .TP \fB\-\-File=\fR| open FILE or URL do not bring Geeqie window to the top .TP \fB\-\-file\-extensions\fR list known file extensions .TP \fB\-\-first\fR first image .TP \fB\-f\fR, \fB\-\-fullscreen\fR start / toggle in full screen mode .TP \fB\-\-geometry=\fRx[++] set main window location and geometry .TP \fB\-\-get\-collection=\fR get collection content .TP \fB\-\-get\-collection\-list\fR get collection list .TP \fB\-\-get\-destination=\fR get destination path of FILE (https://www.geeqie.org/help/GuidePluginsConfig.html) .TP \fB\-\-get\-file\-info\fR get file info .TP \fB\-\-get\-filelist\fR=\fI\,[\/\fR] get list of files and class .TP \fB\-\-get\-filelist\-recurse\fR=\fI\,[\/\fR] get list of files and class recursive .TP \fB\-\-get\-rectangle\fR get rectangle coordinates .TP \fB\-\-get\-render\-intent\fR get render intent .TP \fB\-\-get\-selection\fR get list of selected files .TP \fB\-\-get\-sidecars=\fR get list of sidecars of FILE .TP \fB\-\-get\-window\-list\fR get list of windows .TP \fB\-\-id=\fR window id for following commands .TP \fB\-\-last\fR last image .TP \fB\-o\fR, \fB\-\-log\-file=\fR save log data to file .TP \fB\-\-lua=\fR, run lua script on FILE .TP \fB\-\-new\-window\fR new window .TP \fB\-n\fR, \fB\-\-next\fR next image .TP \fB\-\-pixel\-info\fR print pixel info of mouse pointer on current image .TP \fB\-\-print0\fR terminate returned data with null character instead of newline .TP \fB\-q\fR, \fB\-\-quit\fR quit .TP \fB\-\-raise\fR bring the Geeqie window to the top .TP \fB\-\-selection\-add\fR=\fI\,[\/\fR] adds the current file (or the specified file) to the current selection .TP \fB\-\-selection\-clear\fR clears the current selection .TP \fB\-\-selection\-remove\fR=\fI\,[\/\fR] removes the current file (or the specified file) from the current selection .TP \fB\-w\fR, \fB\-\-show\-log\-window\fR show log window .TP \fB\-\-slideshow\-recurse=\fR start recursive slide show in FOLDER .TP \fB\-s\fR, \fB\-\-slideshow\fR toggle slide show .TP \fB\-\-tell\fR print filename [and Collection] of current image .TP \fB\-t\fR, \fB\-\-tools\fR toggle tools .TP \fB\-v\fR, \fB\-\-version\fR print version info .TP \fB\-\-view=\fR open FILE in new window .TP \fB\-\-display\fR=\fI\,DISPLAY\/\fR X display to use .IP All other command line parameters are used as plain files if they exist, or a URL or a folder. The name of a collection, with or without either path or extension (.gqv) may be used. .IP If more than one folder is on the command line, only the last will be used. .IP If more than one file is on the command line: .IP If they are in the same folder, that folder will be opened and those files will be selected. If they are not in the same folder, a new Collection containing those files will be opened. .IP To run Geeqie as a new instance, use: GQ_NEW_INSTANCE=y[es] geeqie Normally a single set of configuration files is used for all instances. However, the environment variables XDG_CONFIG_HOME, XDG_CACHE_HOME, XDG_DATA_HOME can be used to modify this behavior on an individual basis e.g. XDG_CONFIG_HOME=/tmp/a XDG_CACHE_HOME=/tmp/b GQ_NEW_INSTANCE=y geeqie .IP To disable Clutter use: GQ_DISABLE_CLUTTER=y[es] geeqie .IP To run or stop Geeqie in cache maintenance (non\-GUI) mode use: GQ_CACHE_MAINTENANCE=y[es] geeqie \fB\-\-help\fR Note that bash command line completion does not work in this mode. .IP User manual: https://www.geeqie.org/help/GuideIndex.html .IP : https://www.geeqie.org/help\-pdf/help.pdf .SH BUGS Please send bug reports and feedback to https://github.com/BestImageViewer/geeqie/issues .SH COPYRIGHT Copyright (C) 1999-2004 by John Ellis. Copyright (C) 2004-2026 by The Geeqie Team. Use this software at your own risk! This software released under the GNU General Public License. Please read the COPYING file for more information. BestImageViewer-geeqie-33ba319/data/man/meson.build000066400000000000000000000001351515032643700221530ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie.1', install_dir : mandir1) BestImageViewer-geeqie-33ba319/data/meson.build000066400000000000000000000003011515032643700213730ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later subdir('authors') subdir('color') subdir('completions') subdir('css') subdir('icons') subdir('images') subdir('man') subdir('plugins') subdir('ui') BestImageViewer-geeqie-33ba319/data/org.geeqie.Geeqie.appdata.xml.in000066400000000000000000000046001515032643700252220ustar00rootroot00000000000000 org.geeqie.Geeqie CC-BY-SA-4.0 GPL-3.0+ Geeqie A lightweight image viewer

Geeqie is a lightweight image viewer for Linux, BSDs and compatibles. It can be used as a simple, fast, database-free image viewer, but equally it can be used to manage large collections of images.

Geeqie is an image viewer that makes navigation of images easy. Images can be viewed as thumbnails, in multiple windows or in full screen mode. Geeqie is an image manager, with complete copy, move, rename, and delete functions available at the press of a button. Extensive image collections can be easily handled using a combination of Geeqie's flexible Keyword facility and powerful Image searches.

Image collections can be refined with a duplicate image finder. Geeqie is ideal for making presentations. A slide-show feature is built in, and Geeqie can be remotely controlled either via command line scripts. Information such as f-stop, shutter speed and descriptive text can be overlaid onto the image display. There is no need to import images into Geeqie - simply point Geeqie to a folder containing images, and your data will be displayed.

Geeqie developers org.geeqie.Geeqie.desktop https://raw.githubusercontent.com/BestImageViewer/geeqie-test-images/main/screenshots/Screenshot_2017-08-13_12-02-32_rescaled.png https://raw.githubusercontent.com/BestImageViewer/geeqie-test-images/main/screenshots/Screenshot_2017-08-13_12-29-44_rescaled.png image photography fast graphics https://www.geeqie.org geeqie@freelists.org geeqie
BestImageViewer-geeqie-33ba319/data/org.geeqie.Geeqie.desktop.in000066400000000000000000000012731515032643700244650ustar00rootroot00000000000000[Desktop Entry] Name=Geeqie GenericName=Image Viewer Comment=View and manage images Exec=geeqie %F Icon=geeqie Type=Application Terminal=false # Startup notification disabled, since the remote -r switch may not open a new window... StartupNotify=true StartupWMClass=geeqie NotShowIn=X-Geeqie; Categories=Graphics;Viewer; MimeType=application/x-navi-animation;image/bmp;image/x-bmp;image/x-MS-bmp;image/gif;image/x-icon;image/jpeg;image/png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-tga;image/tiff;image/x-xbitmap;image/x-xpixmap;image/svg;image/svg+xml;image/x-png;image/xpm;image/x-ico;image/heic; Keywords=Picture;Slideshow;Graphics; BestImageViewer-geeqie-33ba319/data/org.geeqie.Geeqie.metainfo.xml.in000066400000000000000000000046001515032643700254120ustar00rootroot00000000000000 org.geeqie.Geeqie CC-BY-SA-4.0 GPL-3.0+ Geeqie A lightweight image viewer

Geeqie is a lightweight image viewer for Linux, BSDs and compatibles. It can be used as a simple, fast, database-free image viewer, but equally it can be used to manage large collections of images.

Geeqie is an image viewer that makes navigation of images easy. Images can be viewed as thumbnails, in multiple windows or in full screen mode. Geeqie is an image manager, with complete copy, move, rename, and delete functions available at the press of a button. Extensive image collections can be easily handled using a combination of Geeqie's flexible Keyword facility and powerful Image searches.

Image collections can be refined with a duplicate image finder. Geeqie is ideal for making presentations. A slide-show feature is built in, and Geeqie can be remotely controlled either via command line scripts. Information such as f-stop, shutter speed and descriptive text can be overlaid onto the image display. There is no need to import images into Geeqie - simply point Geeqie to a folder containing images, and your data will be displayed.

Geeqie developers org.geeqie.Geeqie.desktop https://raw.githubusercontent.com/BestImageViewer/geeqie-test-images/main/screenshots/Screenshot_2017-08-13_12-02-32_rescaled.png https://raw.githubusercontent.com/BestImageViewer/geeqie-test-images/main/screenshots/Screenshot_2017-08-13_12-29-44_rescaled.png image photography fast graphics https://www.geeqie.org geeqie@freelists.org geeqie
BestImageViewer-geeqie-33ba319/data/plugins/000077500000000000000000000000001515032643700207205ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/camera-import/000077500000000000000000000000001515032643700234605ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/camera-import/geeqie-camera-import000077500000000000000000000116611515032643700274100ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Import all images from camera ## ## Requires gphoto2 ## finish() { if [ -f /tmp/geeqie-camera-import-files ] then rm /tmp/geeqie-camera-import-files fi if [ -p "$zen_pipe" ] then rm "$zen_pipe" fi if [ "$gphoto2_pid" != "" ] then if ps -p "$gphoto2_pid" > /dev/null then kill "$gphoto2_pid" fi fi if [ "$zen_pid" != "" ] then if ps -p "$zen_pid" > /dev/null then kill "$zen_pid" fi fi } trap finish EXIT if ! [ -x "$(command -v gphoto2)" ] then zenity --title="Geeqie camera import" --info --text="gphoto2 is not installed" 2> /dev/null exit 0 fi if [ -f /tmp/geeqie-camera-import.log ] then rm /tmp/geeqie-camera-import.log fi if [ "$(gphoto2 --auto-detect | wc -l)" -le 2 ] then zenity --error --title="Geeqie camera import" --text="No camera detected" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null exit 0 fi IFS=' ' list=$(gphoto2 --auto-detect | tail -n +3) camera_list="" n=1 count=$(gphoto2 --auto-detect | tail -n +3 | wc -l) if [ "$count" -gt 1 ] then for camera in $list do if [ "$n" -eq "$count" ] then camera_list="${camera_list:+${camera_list}}TRUE\n$camera\n$n" else camera_list="${camera_list:+${camera_list}}FALSE\n$camera\n$n\n" fi n=$((n + 1)) done camera_selected=$(printf '%b' "$camera_list" | zenity --title="Geeqie camera import" --list --text "Select camera" --radiolist --column "Select" --column "Camera" --column "n" --print-column=2 2> /dev/null) if [ $? = 1 ] then exit 0 fi else camera_selected=$(gphoto2 --auto-detect | tail +3) fi port_type=$(printf '%s\n' "$camera_selected" | awk -W posix -F ':' '{print $1}' | awk 'BEGIN {LINT = "fatal"} {print $NF}') camera=$(printf '%s\n' "$camera_selected" | awk -W posix -F "$port_type" 'BEGIN {LINT = "fatal"} {print $1}') port_address=$(printf '%s\n' "$camera_selected" | awk -W posix -F ':' 'BEGIN {LINT = "fatal"} {print $2}') port="$port_type:$port_address" script_dir=$(dirname "$0") if ! zenity --question --title="Geeqie camera import" --text="Camera: $camera\n\nDownloading to folder:\n$PWD" --ok-label="OK" --cancel-label="Cancel" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null then exit 0 fi src_files_sorted=$(mktemp "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") dest_files_sorted=$(mktemp "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") ( gphoto2 --port "$port" --list-files 2> /tmp/geeqie-camera-import.log | awk -W posix 'BEGIN {LINT = "fatal"} /#/ {print $2}' | sort > "$src_files_sorted" ) | zenity --progress --auto-close --auto-kill --title="Geeqie camera import" --text="Searching for files to download..." --pulsate --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg error=$(grep -i error /tmp/geeqie-camera-import.log) if [ -n "$error" ] then zenity --text-info --title="Geeqie camera import" - --window-icon=error < /tmp/geeqie-camera-import.log 2> /dev/null exit 1 fi find . -maxdepth 1 -type f -exec basename {} \; | sort > "$dest_files_sorted" existing_file_count=$(comm -12 "$src_files_sorted" "$dest_files_sorted" | wc -l) repeated=$(uniq --repeated "$src_files_sorted") if [ -n "$repeated" ] then repeated="Warning: The following source filenames are not unique.\nSome files may not be downloaded.\nSee the Help file.\n\n$repeated" if zenity --question --text="$repeated" --title="Geeqie camera import" --cancel-label="OK" --ok-label="Cancel" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null then exit 1 fi fi total=$(wc -l < "$src_files_sorted") files_to_load=$((total - existing_file_count)) rm "$src_files_sorted" rm "$dest_files_sorted" if [ "$files_to_load" -eq 0 ] then zenity --info --title="Geeqie camera download" --text="No photos to download" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null exit 0 fi if [ -f /tmp/geeqie-camera-import-files ] then rm /tmp/geeqie-camera-import-files fi touch /tmp/geeqie-camera-import-files zen_pipe=$(mktemp -u "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") mkfifo "$zen_pipe" gphoto2 --port "$port" --hook-script "$script_dir/"geeqie-camera-import-hook-script --get-all-files --skip-existing 2> /tmp/geeqie-camera-import.log & gphoto2_pid=$! (tail -f "$zen_pipe" 2> /dev/null) | zenity --progress --title="Geeqie camera import" --text="Downloading: total: $files_to_load existing: $existing_file_count\n" --auto-close --auto-kill --percentage=0 window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null & zen_pid=$! n=0 while [ -f /tmp/geeqie-camera-import-files ] && [ "$n" -lt 100 ] do i=$(wc -l < "/tmp/geeqie-camera-import-files") n=$(($((i * 100)) / files_to_load)) printf '%s\n' "$n" > "$zen_pipe" latest_file=$(tail -n 1 /tmp/geeqie-camera-import-files) if [ -z "$latest_file" ] then latest_file="Skipping existing files, if any..." fi printf '#Downloading: total: %s existing: %s\n%s' "$files_to_load existing" "$existing_file_count" "$latest_file" > "$zen_pipe" sleep 1 done BestImageViewer-geeqie-33ba319/data/plugins/camera-import/geeqie-camera-import-hook-script000077500000000000000000000007421515032643700316460ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Camera import hook script ## # shellcheck disable=2154 if [ "$ACTION" = "download" ] then printf '%s\n' "$ARGUMENT" >> /tmp/geeqie-camera-import-files elif [ "$ACTION" = "stop" ] then zenity --info --title="Geeqie camera download" --text="Import ended" --timeout=5 --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2>/dev/null if [ -f /tmp/geeqie-camera-import-files ] then rm /tmp/geeqie-camera-import-files fi fi exit 0 BestImageViewer-geeqie-33ba319/data/plugins/camera-import/geeqie-camera-import-hook-script.sh000077700000000000000000000000001515032643700404242geeqie-camera-import-hook-scriptustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/camera-import/geeqie-camera-import.sh000077700000000000000000000000001515032643700337242geeqie-camera-importustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/camera-import/meson.build000066400000000000000000000005411515032643700256220ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-camera-import', 'geeqie-camera-import-hook-script', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.camera-import.desktop.in', output : 'org.geeqie.camera-import.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/camera-import/org.geeqie.camera-import.desktop.in000066400000000000000000000006521515032643700322470ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Camera import Comment=Import all images from camera # Requires gphoto2 # The gphoto2 file $HOME/.gphoto2/settings can # be used to set auto-rename on download Exec=geeqie-camera-import # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose #X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/exif-datetime-to-file/000077500000000000000000000000001515032643700250025ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/exif-datetime-to-file/geeqie-exif-datetime-to-file000077500000000000000000000032661515032643700322560ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Sets file mtime to the Exif.Image.DateTime of the file ## ## $@ List of files to be processed ## ## Requires exiv2 or exiftool ## if [ -z "$(command -v exiv2)" ] then if [ -z "$(command -v exiftool)" ] then zenity --title="Geeqie exif datetime to file" --info --text="Neither exiv2 nor exiftran is installed" --icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null exit 1 else use_exiv2=false fi else use_exiv2=true fi if ! zenity --title="Geeqie - exif datetime to file" --question --text "Set file datetime (mtime) to Exif.Image.DateTime\n\nContinue?" --icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg then exit 0 fi # exiv2 should be faster if [ "$use_exiv2" = "true" ] then while [ $# -gt 0 ] do if date_time=$(exiv2 -g Exif.Image.DateTime -Pv "$1" | head --lines=1) then y_m_d_h_m_s=$(echo "$date_time" | tr ' ' ':') y_m_d_h_m=$(echo "$y_m_d_h_m_s" | cut --delimiter ':' --fields '1 2 3 4 5' | tr --delete ':') s=$(echo "$y_m_d_h_m_s" | cut --delimiter ':' --fields '6') touch -m -t "$y_m_d_h_m.$s" "$1" else printf "Geeqie plugin exif-datetime-to-file -\nFile: %s does not have Exif.Image.DateTime\n" "$1" fi shift done else while [ $# -gt 0 ] do if date_time=$(exiftool -t -createdate "$1") then y_m_d_h_m_s=$(echo "$date_time" | cut --characters '13-31' | tr ' ' ':') y_m_d_h_m=$(echo "$y_m_d_h_m_s" | cut --delimiter ':' --fields '1 2 3 4 5' | tr --delete ':') s=$(echo "$y_m_d_h_m_s" | cut --delimiter ':' --fields '6') touch -m -t "$y_m_d_h_m.$s" "$1" else printf "Geeqie plugin exif-datetime-to-file -\nFile: %s does not have Exif.Image.DateTime\n" "$1" fi shift done fi BestImageViewer-geeqie-33ba319/data/plugins/exif-datetime-to-file/geeqie-exif-datetime-to-file.sh000077700000000000000000000000001515032643700401122geeqie-exif-datetime-to-fileustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/exif-datetime-to-file/meson.build000066400000000000000000000005251515032643700271460ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-exif-datetime-to-file', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.exif-datetime-to-file.desktop.in', output : 'org.geeqie.exif-datetime-to-file.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) org.geeqie.exif-datetime-to-file.desktop.in000066400000000000000000000006211515032643700350300ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/exif-datetime-to-file[Desktop Entry] Version=1.0 Type=Application Name=Exif datetime to file Comment=Sets file mtime to the Exif.Image.DateTimeOriginal of the file # Requires exiv2 or exiftools Exec=geeqie-exif-datetime-to-file %F # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose #X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/export-jpeg/000077500000000000000000000000001515032643700231645ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/export-jpeg/geeqie-export-jpeg000077500000000000000000000135721515032643700266230ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Extract embedded jpegs from a raw file ## ## Use exiftool if it detects a higher number of preview ## images, otherwise use exiv2 if available ## - exiv2 does not see the largest preview image in a .cr3 file. ## ## Note that exiftool is noticeably slower than exiv2 ## ## - Display a list of the embedded files ## - Extract the selected image to a tmp folder ## - Rotate image if exif data is available ## - If jpgicc is installed, correct for currently selected rendering intent ## - Store in a new file ## - Set Geeqie focus to the newly generated image ## use_exiftool="false" if ! [ -x "$(command -v exiftool)" ] then if ! [ -x "$(command -v exiv2)" ] then zenity --info --text="Export jpeg from raw file\n\nNeither exiftoool nor exiv2 are installed" --title="Geeqie export jpeg" 2> /dev/null exit 1 fi fi if ! [ -x "$(command -v jpgicc)" ] then zenity --info --text="Export jpeg from raw file\n\njpgicc is not installed\ncolor corrections will not be made\nYou may install via liblcms2-utils" --title="Geeqie export jpeg" 2> /dev/null fi IFS=' ' exiv2_count=0 if list=$(exiv2 --print preview "$1") then if [ "$(echo "$list" | wc --words)" -gt 1 ] then exiv2_count=$(echo "$list" | wc --lines) fi fi exiftool_count=0 in_list=$(exiftool -veryshort -preview:all -orientation# "$1") if echo "$in_list" | grep --quiet Orientation - then exiftool_count=$(($(echo "$in_list" | wc --lines) - 1)) else exiftool_count=$(echo "$in_list" | wc --words) fi if [ "$exiftool_count" -gt "$exiv2_count" ] then use_exiftool="true" count="$exiftool_count" else count="$exiv2_count" fi if [ "$use_exiftool" = "true" ] then # An integer value is returned by a # suffix in_list=$(exiftool -veryshort -preview:all -orientation# "$1") if [ "$(echo "$in_list" | wc --lines)" -gt 0 ] then # $in_list is in the form of lines e.g. # # OtherImage: (Binary data 138367 bytes, use -b option to extract) # PreviewImage: (Binary data 138367 bytes, use -b option to extract) # ... # Orientation: 8 if echo "$in_list" | grep --quiet Orientation - then orientation=$(echo "$in_list" | tail --lines=1 | cut --delimiter=' ' --fields=2) count=$(($(echo "$in_list" | wc --lines) - 1)) list=$(echo "$in_list" | head --lines=-1 | sort --field-separator=: --key=2 --sort=human-numeric --reverse) else orientation=0 list="$in_list" fi else count=0 fi else orientation_str=$(exiv2 -g Exif.Image.Orientation -pv "$1") # orientation in the form e.g. # 0x0112 Image Orientation Short 1 8 orientation=$(echo "$orientation_str" | tr --squeeze-repeats ' ' | cut --delimiter=' ' --fields=6) fi if [ "$count" -eq 0 ] then zenity --info --text="Export jpeg from raw file\n\nFile contains no embedded images" --title="Geeqie export jpeg" 2> /dev/null exit 0 fi case "$orientation" in 2) rotation="-flop" ;; 3) rotation="-rotate 180" ;; 4) rotation="-flip" ;; 5) rotation="-transpose" ;; 6) rotation="-rotate 90" ;; 7) rotation="-transverse" ;; 8) rotation="-rotate -90" ;; *) rotation="" ;; esac n=1 image_list="" for image in $list do if [ "$use_exiftool" = "true" ] then # $image is in the form of e.g. # OtherImage: (Binary data 138367 bytes, use -b option to extract) preview_name_colon=$(echo "$image" | cut --delimiter=' ' --fields=1) preview_name=$(echo "$preview_name_colon" | cut --delimiter=':' --fields=1) bytes=$(echo "$image" | cut --delimiter=' ' --fields=4) params=$(exiftool -b -"$preview_name" "$1" | exiftool -veryshort -short -ImageSize -MIMEType -) size=$(echo "$params" | head -1) mime=$(echo "$params" | tail -1) if [ "$n" -eq "$count" ] then image_list="${image_list:+${image_list}}TRUE\nPreview $n: $mime,\t $size pixels,\t $bytes bytes\n$n:$preview_name:$mime" else image_list="${image_list:+${image_list}}FALSE\nPreview $n: $mime,\t $size pixels,\t $bytes bytes\n$n:$preview_name:$mime\n" fi else if [ "$n" -eq "$count" ] then image_list="${image_list:+${image_list}}TRUE\n$image\n$n" else image_list="${image_list:+${image_list}}FALSE\n$image\n$n\n" fi fi n=$((n + 1)) done image_selected=$(echo "$image_list" | zenity --title="Geeqie export jpeg" --list --text "Select embedded image" --radiolist --column "Select" --column "Image" --column "n" --hide-column=3 --print-column=3 2> /dev/null) if [ -n "$image_selected" ] then tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") if [ "$use_exiftool" = "true" ] then # $image_selected is in the form e.g. # 4:jpegfromraw:image/jpeg image_no=$(echo "$image_selected" | cut --delimiter=':' --fields=1) image_id=$(echo "$image_selected" | cut --delimiter=':' --fields=2) image_mime=$(echo "$image_selected" | cut --delimiter=':' --fields=3) image_extension=$(echo "$image_mime" | cut --delimiter='/' --fields=2) base_name=$(basename "$1") image_name="${base_name%.*}" exiftool -b -"$image_id" "$1" > "$tmpdir/$image_name-preview$image_no.$image_extension" else exiv2 --location "$tmpdir" -ep"$image_selected" "$1" fi if [ -n "$rotation" ] then command_str="mogrify $rotation \"$tmpdir/*\"" sh -c "$command_str" fi base_name=$(basename "$tmpdir/"*) image_extension="${base_name##*.}" if echo "$base_name" | grep --quiet --ignore-case "\.jpeg$" || echo "$base_name" | grep --quiet --ignore-case "\.jpg$" then render_str=$(geeqie --get-render-intent) case $render_str in "Perceptual") render_key=0 ;; "Relative Colorimetric") render_key=1 ;; "Saturation") render_key=2 ;; "Absolute Colorimetric") render_key=3 ;; *) render_key=0 ;; esac filename=$(basename "$tmpdir/"* ".$image_extension") if [ -x "$(command -v jpgicc)" ] then filename_ri="$tmpdir/""$filename""-ri.jpg" jpgicc -t "$render_key" "$tmpdir/""$filename"".$image_extension" "$filename_ri" rm "$tmpdir/$filename.$image_extension" fi fi geeqie --view="$tmpdir/" fi BestImageViewer-geeqie-33ba319/data/plugins/export-jpeg/geeqie-export-jpeg.sh000077700000000000000000000000001515032643700326402geeqie-export-jpegustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/export-jpeg/meson.build000066400000000000000000000004671515032643700253350ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-export-jpeg', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.export-jpeg.desktop.in', output : 'org.geeqie.export-jpeg.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/export-jpeg/org.geeqie.export-jpeg.desktop.in000066400000000000000000000006111515032643700314520ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Export jpeg Comment=Extract embedded jpegs from a raw file Exec=geeqie-export-jpeg %f # show only if these are installed #TryExec=exiv2 #TryExec=jpgicc # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose #X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/geocode-parameters/000077500000000000000000000000001515032643700244665ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/geocode-parameters/geocode-parameters.awk000066400000000000000000000063171515032643700307470ustar00rootroot00000000000000#!/usr/bin/awk -f # ## @file ## @brief Used by the Search option "search on geo-position". ## ## It is used to decode the results of internet or other searches ## to extract a geo-position from a text string. ## ## To include other searches, follow the examples below and ## store the file in: ## ~/.config/geeqie/applications/geocode-parameters.awk ## Ensure the returned value is either in the format: ## 89.123 179.123 ## or ## Error: $0 ## BEGIN { LINT = "fatal" } function check_parameters(latitude, longitude) { # Ensure the parameters are numbers if ((latitude == (latitude+0)) && (longitude == (longitude+0))) { if (latitude >= -90 && latitude <= 90 && longitude >= -180 && longitude <= 180) { return latitude " " longitude } else { return "Error: " latitude " " longitude } } else { return "Error: " latitude " " longitude } } # This awk file is accessed by the decode_geo_parameters() function # in search.cc. The call is of the format: # echo "string_to_be_searched" | awk -f geocode-parameters.awk # # Search the input string for known formats. { if (index($0, "https://www.geonames.org/maps/google_")) { # This is a drag-and-drop or copy-paste from a geonames.org search # in the format e.g. # https://www.geonames.org/maps/google_51.513_-0.092.html gsub(/https:\/\/www.geonames.org\/maps\/google_/, "") gsub(/.html/, "") gsub(/_/, " ") print check_parameters($1, $2) } else if (index($0, "https://www.openstreetmap.org/search?query=")) { # This is a copy-paste from an openstreetmap.org search # in the format e.g. # https://www.openstreetmap.org/search?query=51.4878%2C-0.1353#map=11/51.4880/-0.1356 gsub(/https:\/\/www.openstreetmap.org\/search\?query=/, "") gsub(/#map=.*/, "") gsub(/%2C/, " ") print check_parameters($1, $2) } else if (index($0, "https://www.openstreetmap.org/#map=")) { # This is a copy-paste from an openstreetmap.org search # in the format e.g. # https://www.openstreetmap.org/#map=5/18.271/16.084 gsub(/https:\/\/www.openstreetmap.org\/#map=[^\/]*/,"") gsub(/\//," ") print check_parameters($1, $2) } else if (index($0, "https://www.google.com/maps/")) { # This is a copy-paste from a google.com maps search # in the format e.g. # https://www.google.com/maps/place/London,+UK/@51.5283064,-0.3824815,10z/data=.... gsub(/https:\/\/www.google.com\/maps.*@/,"") sub(/,/," ") gsub(/,.*/,"") print check_parameters($1, $2) } else if (index($0,".html")) { # This is an unknown html address print "Error: " $0 } else if (index($0,"http")) { # This is an unknown html address print "Error: " $0 } else if (index($0, ",")) { # This is assumed to be a simple lat/long of the format: # 89.123,179.123 split($0, latlong, ",") print check_parameters(latlong[1], latlong[2]) } else { # This is assumed to be a simple lat/long of the format: # 89.123 179.123 split($0, latlong, " ") print check_parameters(latlong[1], latlong[2]) } } BestImageViewer-geeqie-33ba319/data/plugins/geocode-parameters/meson.build000066400000000000000000000002111515032643700266220ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geocode-parameters.awk', install_dir : gq_bindir, install_mode : 'rwxr-xr-x') BestImageViewer-geeqie-33ba319/data/plugins/image-crop/000077500000000000000000000000001515032643700227435ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/image-crop/geeqie-image-crop000077500000000000000000000050111515032643700261460ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Crop image ## ## Requires ImageMagick and exiv2 ## Crops the image to the size set by the Draw Rectangle menu item ## process_raw () { tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") array_length=$(exiv2 -pp "$1" | wc -l) if [ "$array_length" -gt 0 ] then # Take last item - should be highest resolution exiv2 --location "$tmpdir" -ep"$array_length" "$1" src_filename=$(ls "$tmpdir/") filename="${src_filename%.*}" extension="${src_filename##*.}" rotation=$(exiv2 -g Exif.Image.Orientation -Pv "$1") convert "$tmpdir/$src_filename" -crop "$2" "$tmpdir/$filename-crop.$extension" exiv2 -M"set Exif.Image.Orientation $rotation" "$tmpdir/$filename-crop.$extension" rm "$tmpdir/$src_filename" geeqie --view="$tmpdir/$filename-crop.$extension" res=0 else res=1 fi return "$res" } process_plain () { tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") src_filename=$(basename -- "$1") filename="${src_filename%.*}" extension="${src_filename##*.}" convert "$1" -crop "$2" "$tmpdir/$filename-crop.$extension" if [ $? = 1 ] then zenity --error --title="$title" --text="Cannot process this file format" --window-icon="$window_icon" else geeqie --view="$tmpdir/$filename-crop.$extension" fi } export window_icon="/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg" export title="Geeqie crop image" if [ -x "$(command -v convert)" ] then if [ -x "$(command -v exiv2)" ] then coords=$(geeqie --get-rectangle) if [ -z "$coords" ] then zenity --error --title="$title" --text="Rectangle coordinates have not been set" --window-icon="$window_icon" 2> /dev/null exit 0 fi filename=$(basename -- "$1") extension=$(printf '%b' "${filename##*.}" | tr '[:upper:]' '[:lower:]') if [ "${extension}" = "jpeg" ] then process_plain "$1" "$coords" elif [ "${extension}" = "jpg" ] then process_plain "$1" "$coords" elif [ "${extension}" = "png" ] then process_plain "$1" "$coords" elif [ "${extension}" = "tif" ] then process_plain "$1" "$coords" elif [ "${extension}" = "tiff" ] then process_plain "$1" "$coords" else process_raw "$1" "$coords" if [ $? = 1 ] then process_plain "$1" "$coords" fi fi else zenity --info --title="$title" --text="Crop image\n\nexiv2 is not installed" --title="$title" --window-icon="$window_icon" 2> /dev/null exit 0 fi else zenity --info --title="$title" --text="Crop image\n\nImageMagick is not installed" --title="$title" --window-icon="$window_icon" 2> /dev/null exit 0 fi BestImageViewer-geeqie-33ba319/data/plugins/image-crop/geeqie-image-crop.sh000077700000000000000000000000001515032643700317552geeqie-image-cropustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/image-crop/meson.build000066400000000000000000000004641515032643700251110ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-image-crop', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.image-crop.desktop.in', output : 'org.geeqie.image-crop.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/image-crop/org.geeqie.image-crop.desktop.in000066400000000000000000000005441515032643700310150ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Image crop Comment=Crop image from marked rectangle # Requires ImageMagick and exiftools Exec=geeqie-image-crop %f # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose #X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/lens/000077500000000000000000000000001515032643700216615ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/lens/lensID000066400000000000000000000014441515032643700227650ustar00rootroot00000000000000-- Retrieve the lens ID data -- Called from the pre-formatted tag lua.lensID -- Requires lua and extftool -- Runs rather slow commandfile=io.popen("command -v exiftool" ) command = commandfile:read("*a") commandfile:close() if command == "" then return ("lensID - Exiftool is not installed") end n = 0 m = 0 lensID = "" lensIDstring = "" path = Image:get_path() lensIDfile = io.popen("exiftool -Composite:LensID \"" .. path .. "\" 2>/dev/null ") lensID = lensIDfile:read("*a") if lensID ~= "" then n = string.find(lensID, ":") if n > 2 then n = n + 2 lensIDstring = string.sub(lensID, n) m = string.find(lensIDstring, "Unknown") if m ~= nil then lensIDstring = "" else lensIDstring = string.gsub(lensIDstring, "\n", "") end end end lensIDfile:close() return (lensIDstring) BestImageViewer-geeqie-33ba319/data/plugins/lens/meson.build000066400000000000000000000001351515032643700240220ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('lensID', install_dir : gq_bindir) BestImageViewer-geeqie-33ba319/data/plugins/meson.build000066400000000000000000000010331515032643700230570ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later subdir('camera-import') subdir('exif-datetime-to-file') subdir('export-jpeg') subdir('geocode-parameters') subdir('image-crop') subdir('lens') subdir('open-with') subdir('random-image') subdir('resize-image') subdir('rotate') subdir('symlink') subdir('tethered-photography') subdir('video-player') i18n.merge_file( input : 'org.geeqie.template.desktop.in', output : 'org.geeqie.template.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : appdir) BestImageViewer-geeqie-33ba319/data/plugins/open-with/000077500000000000000000000000001515032643700226325ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/open-with/meson.build000066400000000000000000000003661515032643700250010ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later i18n.merge_file( input : 'org.geeqie.open-with.desktop.in', output : 'org.geeqie.open-with.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/open-with/org.geeqie.open-with.desktop.in000066400000000000000000000005141515032643700305700ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Open With Comment=Call the gtk application chooser dialog Exec=geeqie --action=OpenWith %f # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose # X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/org.geeqie.template.desktop.in000066400000000000000000000106121515032643700265570ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application # The Desktop file MUST contain the following: Categories=Graphics; # The name which appears in the menu: Name=Template #Name[cs]=Šablona #Name[fr]=Modèle #Name[de]=Vorlage # Replace "command" with the actual command or script: Exec=command param # Where may be: # omitted If no parameter is given the command will be executed in the # current folder. If a parameter is given but the current folder # does not contain any files, the command will not be run. # # %f A single file name, even if multiple files are selected. The # system reading the desktop entry should recognize that the program in # question cannot handle multiple file arguments, and it should should # probably spawn and execute multiple copies of a program for each # selected file if the program is not able to handle additional file # arguments. If files are not on the local file system (i.e. are on HTTP # or FTP locations), the files will be copied to the local file system # and %f will be expanded to point at the temporary file. Used for # programs that do not understand the URL syntax. # # %F A list of files. Use for apps that can open several local files # at once. Each file is passed as a separate argument to the executable # program. # # %u A single URL. Local files may either be passed as file: URLs or # as file path. # # %U A list of URLs. Each URL is passed as a separate argument to # the executable program. Local files may either be passed as file: URLs # or as file path. # # %% Percent sign. Use anywhere you want '%' to appear in your command. # Change the following line to point to an icon of your choosing Icon=gtk-file # Use the following to only show this menu entry if the command is installed #TryExec=command # Desktop files that are usable only in Geeqie should be marked like this: OnlyShowIn=X-Geeqie; # This is a filter - see symlink.desktop and geeqie-symlink for an example # of how to use this feature, or see the Additional Preferences/Plugins # section of the Help file. # A restart of Geeqie is required for this plugin to be registered. #X-Geeqie-Filter=true # Terminal output from the plugin command can be displayed: #X-Geeqie-Verbose=true # Terminal output from the plugin command can be displayed only when # multiple files are selected: #X-Geeqie-Verbose-Multi=true # If you want to run a plugin in full-screen mode and wish full-screen # to be maintained: #X-Geeqie-Keep-Fullscreen=true # The plugin can be restricted to run on only certain file types, # for example: #X-Geeqie-File-Extensions=.jpg; .cr2 # The key or key combination to execute this function can be set as # in this example: # N.B. This value may conflict with a setting in Keyboard Options #X-Geeqie-Hotkey=y # A desktop file with one of the following names has a special function. # It will replace the corresponding internal command. # geeqie-copy-command.desktop # geeqie-move-command.desktop # geeqie-rename-command.desktop # geeqie-delete-command.desktop # geeqie-folder-command.desktop # Uncomment the following line to include in a Geeqie menu # other than in the default path of PluginsMenu #X-Geeqie-Menu-Path= # e.g. #X-Geeqie-Menu-Path=SelectMenu/SelectSection # Valid sections are: # FileMenu # FileMenu/OpenSection # FileMenu/SearchSection # FileMenu/PrintSection # FileMenu/FileOpsSection # FileMenu/QuitSection # GoMenu # SelectMenu # SelectMenu/SelectSection # SelectMenu/ClipboardSection # SelectMenu/MarksSection # EditMenu # EditMenu/EditSection # EditMenu/OrientationMenu # EditMenu/RatingMenu # EditMenu/PropertiesSection # EditMenu/AspectRatioMenu # EditMenu/PreferencesSection # PluginsMenu # ViewMenu # ViewMenu/WindowSection # ViewMenu/FileDirMenu # ViewMenu/FileDirMenu/FolderSection # ViewMenu/FileDirMenu/ListSection # ViewMenu/DirSection # ViewMenu/ZoomMenu # ViewMenu/ZoomMenu/ConnectZoomMenu # ViewMenu/SplitMenu # ViewMenu/StereoMenu # ViewMenu/ColorMenu # ViewMenu/OverlayMenu # ViewMenu/ViewSection # ViewMenu/ToolsSection # ViewMenu/SlideShowSection # WindowsMenu # WindowsMenu/NewWindow # HelpMenu # HelpMenu/HelpSection # For other keys such as MimeType see: # https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-0.9.5.html BestImageViewer-geeqie-33ba319/data/plugins/random-image/000077500000000000000000000000001515032643700232605ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/random-image/geeqie-random-image000077500000000000000000000032641515032643700270100ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Select and display a random image from a list of all images ## in Collections and the currently displayed folder ## IFS=' ' # get list of images in all collections collection_list=$(geeqie --get-collection-list) for collection_name in $collection_list do collection_file_list=$(geeqie --get-collection="$collection_name") for collection_file in $collection_file_list do list="${list:+${list}}\n${collection_file}" done done # get list of images in current folder file_list=$(geeqie --get-filelist=) for file_name in $file_list do class_whitespace="${file_name##*Class:}" class="${class_whitespace#"${class_whitespace%%[![:space:]]*}"}" if [ "$class" = "Image" ] then list="$list${file_name%%Class*}\n" fi if [ "$class" = "RAW Image" ] then list="$list""${file_name%%Class*}\n" fi done # remove blank lines files_no_blanks=$(printf '%b\n' "$list" | sed -e 's/^[[:blank:]]*$//') # remove leading trailing whitespace files_no_spaces=$(printf '%b\n' "$files_no_blanks" | sed 's/^[ \t]*//;s/[ \t]*$//') # remove duplicate lines and select random line display_image=$( (printf '%b\n' "$files_no_spaces") | sort --uniq | shuf -n 1) # get image currently displayed current_image_collection=$(geeqie --tell) # remove collection name, if it is there current_image_spaces="${current_image_collection%%Collection:*}" # remove leading trailing whitespace current_image=$(printf '%b\n' "$current_image_spaces" | sed 's/^[ \t]*//;s/[ \t]*$//') # if the selected random image is currently displayed, try again if [ "$current_image" = "$display_image" ] then display_image=$(printf '%b' "$files_no_spaces" | sort --uniq | shuf -n 1) fi geeqie --file="$display_image" BestImageViewer-geeqie-33ba319/data/plugins/random-image/geeqie-random-image.sh000077700000000000000000000000001515032643700331242geeqie-random-imageustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/random-image/meson.build000066400000000000000000000004721515032643700254250ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-random-image', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.random-image.desktop.in', output : 'org.geeqie.random-image.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/random-image/org.geeqie.random-image.desktop.in000066400000000000000000000005271515032643700316500ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Random image Comment=Display random image from Collections and current folder Exec=geeqie-random-image # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose #X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/resize-image/000077500000000000000000000000001515032643700233015ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/resize-image/downsize000077500000000000000000000447261515032643700251060ustar00rootroot00000000000000#!/bin/bash # # Developed by Fred Weinhaus 12/24/2009 .......... revised 8/1/2021 # # ------------------------------------------------------------------------------ # # Licensing: # # Copyright © Fred Weinhaus # # My scripts are available free of charge for non-commercial use, ONLY. # # For use of my scripts in commercial (for-profit) environments or # non-free applications, please contact me (Fred Weinhaus) for # licensing arrangements. My email address is fmw at alink dot net. # # If you: 1) redistribute, 2) incorporate any of these scripts into other # free applications or 3) reprogram them in another scripting language, # then you must contact me for permission, especially if the result might # be used in a commercial or for-profit environment. # # My scripts are also subject, in a subordinate manner, to the ImageMagick # license, which can be found at: http://www.imagemagick.org/script/license.php # # ------------------------------------------------------------------------------ # #### # # USAGE: downsize [-s size] [-t toler] [-m maxiter] [-c copy] [-S strip] # infile outfile # USAGE: downsize [-help] # # OPTIONS: # # -s size desired output file size in kilobytes; float>0; # default=200 # -t toler tolerance or allowed size of result greater than # desired size expressed as percent of desired size; # float>=0; default=10 # -m maxiter maximum number of iterations to stop; integer>1; # default=20 # -c copy copy to output when not downsizing and no image # format change; yes (y) or no (n); default=yes # -S strip strip all meta data; yes (y) or no (n); default=yes # ### # # NAME: DOWNSIZE # # PURPOSE: To downsize (reduce) an image to a specified file size. # # DESCRIPTION: DOWNSIZE reduces an image's dimensions to achieve a specified # file size. For non-JPG images, processing will continue until either the # desired tolerance is achieved or the maximum number of iterations is reached. # For JPG images, processing will continue as above, but may stop when no # change of file size (or quality) occurs. Thus the desired file size may not # full be achieved to within the specified tolerance. Approximately 1% # tolerance is practical amount that can be achieved for non-JPG images. For # JPG images, the value may or may not be achieved. When strip is no, # processing will be skipped, if the input file size is less than or equal to # the combined desired file size plus the size of the meta data or if the # desired size is less than the meta data size. # # OPTIONS: # # -s size ... SIZE is the desired output image size in kilobytes. Values are # floats>0. The default=200 # # -t toler ... TOLER is allowed size of the result within than the desire # size expressed as a percent of the desired size. Values are floats>=0. # The default=10. Processing will iterate until the resulting image size # is within the tolerance. If the tolerance is too low, then iterations will # stop when it reaches a value of maxiter. The default=10 (10%). If both toler # and maxiter are too small, then iteration could continue indefinitely, # since the algorithm may not be able to get as close as desired. # # -m maxiter ... MAXITER is the maximum number of iterations to stop. Values # are integer>1. The default=20. If both toler and maxiter are too small, # then iteration could continue indefinitely, since the algorithm may not # be able to get as close as desired. # # -c copy ... COPY will copy the input to the output when both no downsize # processing happens and the input and output formats are the same. # Values are either: yes (y) or no (n). Yes means make a copy of the input # with the output name and no means simply skip processing and do not copy # The input data to the output file. The default=yes. # # -S strip ... STRIP all meta data. Choices are: yes (y) or no (n). The # default=yes. Note that if you do not strip, the file size will be limited # to the size of the meta data. # # NOTE: Images will be converted to 8 bits/pixel/channel. # # CAVEAT: No guarantee that this script will work on all platforms, # nor that trapping of inconsistent parameters is complete and # foolproof. Use At Your Own Risk. # ###### # # set default values size=200 # desired output filesize in kilobytes toler=10 # tolerance as percent of size; toler>=0 maxiter=20 # maximum iterations copy="yes" # copy to output when not downsizing if no image format change strip="yes" # strip meta data; yes or no toler1=10 # initial iteration for jpg; final iteration uses toler # set directory for temporary files dir="/tmp" # suggestions are dir="." or dir="/tmp" # set up functions to report Usage and Usage with Description PROGNAME=`type $0 | awk '{print $3}'` # search for executable on path PROGDIR=`dirname $PROGNAME` # extract directory of program PROGNAME=`basename $PROGNAME` # base name of program usage1() { echo >&2 "" echo >&2 "$PROGNAME:" "$@" sed >&2 -e '1,/^####/d; /^###/g; /^#/!q; s/^#//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME" } usage2() { echo >&2 "" echo >&2 "$PROGNAME:" "$@" sed >&2 -e '1,/^####/d; /^######/g; /^#/!q; s/^#*//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME" } # function to report error messages errMsg() { echo "" echo $1 echo "" usage1 exit 1 } # function to test for minus at start of value of second part of option 1 or 2 checkMinus() { test=`echo "$1" | grep -c '^-.*$'` # returns 1 if match; 0 otherwise [ $test -eq 1 ] && errMsg "$errorMsg" } # test for correct number of arguments and get values if [ $# -eq 0 ] then # help information echo "" usage2 exit 0 elif [ $# -gt 12 ] then errMsg "--- TOO MANY ARGUMENTS WERE PROVIDED ---" else while [ $# -gt 0 ] do # get parameter values case "$1" in -help) # help information echo "" usage2 exit 0 ;; -c) # get copy shift # to get the next parameter # test if parameter starts with minus sign errorMsg="--- INVALID COPY SPECIFICATION ---" checkMinus "$1" copy=`echo "$1" | tr '[A-Z]' '[a-z]'` case "$copy" in yes|y) copy="yes";; no|n) copy="no";; *) errMsg "--- COPY=$copy IS AN INVALID VALUE ---" esac ;; -s) # get size shift # to get the next parameter # test if parameter starts with minus sign errorMsg="--- INVALID SIZE SPECIFICATION ---" checkMinus "$1" size=`expr "$1" : '\([.0-9]*\)'` sizetest=`echo "$size <= 0" | bc` [ $sizetest -eq 1 ] && errMsg "--- SIZE=$size MUST BE A FLOAT GREATER THAN 0 ---" ;; -t) # get toler shift # to get the next parameter # test if parameter starts with minus sign errorMsg="--- INVALID TOLER SPECIFICATION ---" checkMinus "$1" toler=`expr "$1" : '\([.0-9]*\)'` tolertest=`echo "$toler < 0" | bc` [ $tolertest -eq 1 ] && errMsg "--- TOLER=$toler MUST BE A NON-NEGATIVE FLOAT ---" ;; -m) # get maxiter shift # to get the next parameter # test if parameter starts with minus sign errorMsg="--- INVALID MAXITER SPECIFICATION ---" checkMinus "$1" maxiter=`expr "$1" : '\([0-9]*\)'` maxitertest=`echo "$maxiter < 1" | bc` [ $maxitertest -eq 1 ] && errMsg "--- MAXITER=$maxiter MUST BE A POSITIVE INTEGER ---" ;; -S) # get strip shift # to get the next parameter # test if parameter starts with minus sign errorMsg="--- INVALID STRIP SPECIFICATION ---" checkMinus "$1" strip=`echo "$1" | tr '[A-Z]' '[a-z]'` case "$strip" in yes|y) strip="yes";; no|n) strip="no";; *) errMsg "--- STRIP=$strip IS AN INVALID VALUE ---" esac ;; -) # STDIN and end of arguments break ;; -*) # any other - argument errMsg "--- UNKNOWN OPTION ---" ;; *) # end of arguments break ;; esac shift # next option done # # get infile and outfile infile="$1" outfile="$2" fi # test that infile provided [ "$infile" = "" ] && errMsg "NO INPUT FILE SPECIFIED" # test that outfile provided [ "$outfile" = "" ] && errMsg "NO OUTPUT FILE SPECIFIED" # setup for stripping meta data if [ "$strip" = "yes" ]; then stripping="-strip" else stripping="" fi # get file type of input # ftypes are: JPEG, TIFF, PNG and GIF ftype=`convert "$infile" -ping -format "%m" info:` # get suffix of outfile outlist=`echo $outfile | tr "." " "` partsArray=($outlist) numparts=${#partsArray[*]} suffix=${partsArray[$numparts-1]} suffix=`echo $suffix | tr "[:lower:]" "[:upper:]"` [ "$suffix" = "JPG" ] && suffix="JPEG" [ "$suffix" = "TIF" ] && suffix="TIFF" # if ftype != suffix, set ftype to suffix # IM can deal with ftype TIFF or TIF and JPEG or JPG [ "$ftype" != "$suffix" ] && changetype="yes" || changetype="no" [ "$ftype" != "$suffix" ] && ftype=$suffix # if JPG, then set quality to 100 if [ "$ftype" = "JPEG" ]; then setquality="-quality 100" setunits="-units pixelsperinch" else setquality="" setunits="" fi # get input compression compression=`convert "$infile" -ping -format "%C" info:` if [ "$ftype" = "TIFF" -a "$compresson" = "JPEG" ]; then setcompression="-compress none" elif [ "$ftype" = "TIFF" -a "$compresson" != "JPEG" ]; then setcompression="-compress $compression" else setcompression="" fi # if strip is no, get size of meta data in bytes if [ "$strip" = "no" ]; then meta_list=`identify -verbose "$infile" | grep "Profile-" | sed 's/^[ ]*//' | cut -d\ -f2` meta_sum=0 for amt in $meta_list; do meta_sum=$((meta_sum+amt)) done fi # set up temp file tmpA1="$dir/downsize_1_$$.$suffix" trap "rm -f $tmpA1;" 0 trap "rm -f $tmpA1; exit 1" 1 2 3 15 #trap "rm -f $tmpA1; exit 1" ERR # read the input image into the temp files and test validity. convert -quiet "$infile"[0] $stripping -depth 8 $setcompression $setquality $setunits +repage ${ftype}:$tmpA1 || errMsg "--- FILE $infile DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE ---" # get filesize # fullsize is converted to bytes # size2 is size converted to bytes test1=`convert $tmpA1 -ping -format "%b" info:- | grep "MB"` test2=`convert $tmpA1 -ping -format "%b" info:- | grep "KB"` test3=`convert $tmpA1 -ping -format "%b" info:- | grep "B"` fullsize=`convert -ping $tmpA1 -format "%b" info: | tr -d "[:alpha:]"` if [ "$test1" != "" ]; then fullsize=`convert xc: -format "%[fx:$fullsize*1000000]" info:` elif [ "$test2" != "" ]; then fullsize=`convert xc: -format "%[fx:$fullsize*1000]" info:` elif [ "$test3" != "" ]; then fullsize=$fullsize else errMsg="--- UNRECOGNIZED FILESIZE SUFFIX ---" fi size2=`convert xc: -format "%[fx:$size*1000]" info:` #echo "test1=$test1; test2=$test2; test3=$test3; ftype=$ftype; fullsize=$fullsize; size2=$size2;" # process image for strip=yes, if input size > desired size # process image for strip=no, if input size > desired size + meta size # and the desired size is greater than the meta size if [ "$strip" = "yes" ]; then test4=`convert xc: -format "%[fx:($fullsize>$size2)?1:0]" info:` elif [ "$strip" = "no" ]; then test4=`convert xc: -format "%[fx:($fullsize>$size2+$meta_size) && ($size2>=$meta_size)?1:0]" info:` size2=$((size2+meta_size)) fi if [ $test4 -eq 1 ]; then # iterate i=1 diffsize=0 iterate=1 newsize=$fullsize if [ "$ftype" = "JPEG" ]; then # iterate from previous image to new image as outfile # this may give blurry results but close values # so get the final images size and resize one last time from the original # also use -define jpeg:extent=${size}KB which will change the quality to get closer # if used the alternate method below with JPEG, sometimes got overshoots and pratio=nan since newsize became negative convert $tmpA1 "$outfile" while [ $iterate -eq 1 -a $i -lt $maxiter ]; do # get sqrt size ratio in percent pratio=`convert xc: -format "%[fx:100*sqrt($size/$newsize)]" info:` #echo "i=$i; fullsize=$fullsize; size=$size; size2=$size2; newsize=${newsize}kB; pratio=$pratio;" # resize image convert "$outfile" -resize ${pratio}% -depth 8 $setquality $setunits ${ftype}:"$outfile" # set newsize in KB testa=`convert "$outfile" -ping -format "%b" info:- | grep "MB"` testb=`convert "$outfile" -ping -format "%b" info:- | grep "KB"` testc=`convert "$outfile" -ping -format "%b" info:- | grep "B"` if [ "$testa" != "" ]; then newsize=`convert "$outfile" $setquality ${ftype}:- | convert - -format "%b" info: | tr -d "[:alpha:]"` newsize=`convert xc: -format "%[fx:$newsize*1000]" info:` elif [ "$testb" != "" ]; then newsize=`convert "$outfile" $setquality ${ftype}:- | convert - -format "%b" info: | tr -d "[:alpha:]"` elif [ "$testc" != "" ]; then newsize=`convert "$outfile" $setquality ${ftype}:- | convert - -format "%b" info: | tr -d "[:alpha:]"` newsize=`convert xc: -format "%[fx:$newsize/1000]" info:` fi echo "i=$i newsize=${newsize}kB quality=100" diffsize=`convert xc: -format "%[fx:($newsize-$size)]" info:` iterate=`convert xc: -format "%[fx:abs($diffsize)>($toler1*$size/100)?1:0]" info:` #echo "PART1: i=$i; newsize=${newsize}kB; diffsize=$diffsize; iterate=$iterate;" i=$(($i+1)) done # get final size of iterated outfile and then use that to resize the original dim=`convert "$outfile" -format "%wx%h" info:` convert $tmpA1 -resize $dim -define jpeg:extent=${size}KB -depth 8 $setquality $setunits ${ftype}:"$outfile" # set newsize in KB testa=`convert "$outfile" -ping -format "%b" info:- | grep "MB"` testb=`convert "$outfile" -ping -format "%b" info:- | grep "KB"` testc=`convert "$outfile" -ping -format "%b" info:- | grep "B"` oldsize=$newsize if [ "$testa" != "" ]; then newsize=`convert -ping "$outfile" -format "%b" info: | tr -d "[:alpha:]"` newsize=`convert xc: -format "%[fx:$newsize*1000]" info:` elif [ "$testb" != "" ]; then newsize=`convert -ping "$outfile" -format "%b" info: | tr -d "[:alpha:]"` elif [ "$testc" != "" ]; then newsize=`convert -ping "$outfile" -format "%b" info: | tr -d "[:alpha:]"` newsize=`convert xc: -format "%[fx:$newsize/1000]" info:` fi quality=`convert -ping "$outfile" -format "%Q" info:` echo "i=$i newsize=${newsize}kB quality=$quality" diffsize=`convert xc: -format "%[fx:($size-$newsize)]" info:` #newsign=`convert xc: -format "%[fx:sign($size-$newsize)]" info:` #oldsign=$newsign size1=`convert xc: -format "%[fx:$size+$diffsize]" info:` iterate=`convert xc: -format "%[fx:abs($diffsize)>($toler*$size/100)?1:0]" info:` #echo "PART2: i=$i; newsign=$newsign; oldsign=$oldsign; quality=$quality; size1=${size1}KB; newsize=${newsize}KB; diffsize=$diffsize; iterate=$iterate;" i=$((i+1)) # iterate again changing jpeg write extent size # while [ $iterate -eq 1 -a $i -lt $maxiter -a $newsign -eq $oldsign -a "$newsize" != "$oldsize" ]; do while [ $iterate -eq 1 -a $i -lt $maxiter -a "$newsize" != "$oldsize" ]; do convert $tmpA1 -resize $dim -define jpeg:extent=${size1}KB -depth 8 $setquality $setunits ${ftype}:"$outfile" # set newsize in KB testa=`convert "$outfile" -ping -format "%b" info:- | grep "MB"` testb=`convert "$outfile" -ping -format "%b" info:- | grep "KB"` testc=`convert "$outfile" -ping -format "%b" info:- | grep "B"` oldsize=$newsize if [ "$testa" != "" ]; then newsize=`convert -ping "$outfile" -format "%b" info: | tr -d "[:alpha:]"` newsize=`convert xc: -format "%[fx:$newsize*1000]" info:` elif [ "$testb" != "" ]; then newsize=`convert -ping "$outfile" -format "%b" info: | tr -d "[:alpha:]"` elif [ "$testc" != "" ]; then newsize=`convert -ping "$outfile" -format "%b" info: | tr -d "[:alpha:]"` newsize=`convert xc: -format "%[fx:$newsize/1000]" info:` fi quality=`convert -ping "$outfile" -format "%Q" info:` echo "i=$i newsize=${newsize}kB quality=$quality" diffsize=`convert xc: -format "%[fx:($size-$newsize)]" info:` #oldsign=$newsign #newsign=`convert xc: -format "%[fx:sign($size-$newsize)]" info:` size1=`convert xc: -format "%[fx:0.5*($size+$newsize)]" info:` iterate=`convert xc: -format "%[fx:abs($diffsize)>($toler*$size/100)?1:0]" info:` #echo "PART3: i=$i; newsign=$newsign; oldsign=$oldsign; quality=$quality; size1=${size1}KB; newsize=${newsize}KB; diffsize=$diffsize; iterate=$iterate;" i=$(($i+1)) done else while [ $iterate -eq 1 -a $i -lt $maxiter ]; do # get sqrt size ratio in percent size2=`convert xc: -format "%[fx:max($size2-($diffsize*1000),0)]" info:` pratio=`convert xc: -format "%[fx:100*sqrt($size2/$fullsize)]" info:` #echo "i=$i; fullsize=$fullsize; size=$size; size2=$size2; pratio=$pratio;" testd=`convert xc: -format "%[fx:$size2<($toler*$size/100)?1:0]" info:` [ $testd -eq 1 ] && break # resize image convert $tmpA1 -resize ${pratio}% -depth 8 $setcompression $setquality $setunits ${ftype}:"$outfile" printsize=`convert "$outfile" -ping -format "%b" info:` echo "i=$i; size=${printsize}" testa=`convert "$outfile" -ping -format "%b" info:- | grep -i "MB"` testb=`convert "$outfile" -ping -format "%b" info:- | grep -i "KB"` testc=`convert "$outfile" -ping -format "%b" info:- | grep -i "B"` if [ "$testa" != "" ]; then newsize=`convert "$outfile" -depth 8 $setcompression $setquality $setunits ${ftype}:- | convert - -ping -format "%b" info: | tr -d "[:alpha:]"` newsize=`convert xc: -format "%[fx:$newsize*1000]" info:` elif [ "$testb" != "" ]; then newsize=`convert "$outfile" -depth 8 $setcompression $setquality $setunits ${ftype}:- | convert - -ping -format "%b" info: | tr -d "[:alpha:]"` elif [ "$testc" != "" ]; then newsize=`convert "$outfile" -depth 8 $setcompression $setquality $setunits ${ftype}:- | convert - -ping -format "%b" info: | tr -d "[:alpha:]"` #newsize=`convert xc: -format "%[fx:$fullsize/1000]" info:` newsize=`convert xc: -format "%[fx:$newsize/1000]" info:` fi #echo "i=$i; newsize=${newsize}kB" diffsize=`convert xc: -format "%[fx:($newsize-$size)]" info:` iterate=`convert xc: -format "%[fx:abs($diffsize)>($toler*$size/100)?1:0]" info:` #echo "i=$i; newsize=${newsize}kB; diffsize=$diffsize; iterate=$iterate;" i=$(($i+1)) done fi elif [ "$changetype" = "no" -a "$copy" = "yes" ]; then convert "$infile" "$outfile" else convert $tmpA1 -depth 8 $setcompression $setquality $setunits "$outfile" fi finalsize=`convert "$outfile" -format "%b" info:` echo "final size = $finalsize" exit BestImageViewer-geeqie-33ba319/data/plugins/resize-image/geeqie-resize-image000077500000000000000000000107601515032643700270510ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Resize an image to a specified value. ## ## Requires: ## yad ## ImageMagick ## current_dir=$(dirname "$(readlink -f "$0")") if ! command -v yad > /dev/null then zenity --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --info --title "Geeqie Resize" --text="yad and ImageMagick are required\n\nyad is not installed" exit 0 fi if ! command -v convert > /dev/null then zenity --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --info --title "Geeqie Resize" --text="yad and ImageMagick are required\n\nImageMagick is not installed" exit 0 fi if [ -z "$1" ] then yad --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --geometry=400 --image dialog-warning --title "Geeqie Resize" --button=gtk-ok:0 --text "\nNo input file was given." exit 0 fi basefile=$(basename "$1") base=${basefile%.*} ext=${basefile#*.} default_filename=$(printf %s "/tmp/$base-resized.$ext") if [ -f "$default_filename" ] then i=1 while true do default_filename=$(printf %s%d%s "/tmp/$base-resized-" "$i" ".$ext") if [ -f "$default_filename" ] then i=$(( i + 1 )) else break fi done fi selection=$(yad --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg \ --center \ --title="Resize $1" \ --button=gtk-help:"$current_dir"/resize-help.sh \ --button=gtk-cancel:1 \ --button=gtk-ok:0 \ --text="Reduce image size:\n" \ --form \ --field="Required size kB":NUM '100!1..100000!1!' \ --field="Tolerance %":NUM '10!1..100!1!' \ --field="Max. iterations":NUM '20!1..100!1!' \ --field="Copy if unchanged":CHK 'FALSE' \ --field="Strip metadata":CHK 'TRUE' \ --field="Show computation":CHK 'FALSE' \ --field="Open output file in Geeqie":CHK 'FALSE' \ --field="":LBL \ --field="Output file":SFL \ --field="Default: $default_filename":LBL ) if [ -z "$selection" ] then exit 0 fi size=$(printf %s "$selection" | cut --delimiter="|" --fields=1 -) tolerance=$(printf %s "$selection" | cut --delimiter="|" --fields=2 -) iterations=$(printf %s "$selection" | cut --delimiter="|" --fields=3 -) copy_unchanged=$(printf %s "$selection" | cut --delimiter="|" --fields=4 -) strip_metadata=$(printf %s "$selection" | cut --delimiter="|" --fields=5 -) show_computation=$(printf %s "$selection" | cut --delimiter="|" --fields=6 -) open_geeqie=$(printf %s "$selection" | cut --delimiter="|" --fields=7 -) file=$(printf %s "$selection" | cut --delimiter="|" --fields=9 -) if [ -z "$file" ] then new_filename="$default_filename" else if [ -f "$file" ] then if ! yad --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --geometry=300 --image dialog-warning --title "Geeqie Resize" --text "\nOutput file already exists.\nOverwrite?" then exit 0 fi fi new_filename="$file" fi if [ "$copy_unchanged" = "FALSE" ] then copy="n" else copy="y" fi if [ "$strip_metadata" = "FALSE" ] then strip="n" else strip="y" fi tmp_file=$(mktemp "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") yad --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --geometry=300 --image dialog-information --title "Geeqie Resize" --button=OK:0 --text "Running Downsize...." & info_id="$!" result=$( { "$current_dir"/downsize -s "$size" -t "$tolerance" -m "$iterations" -c "$copy" -S "$strip" "$1" "$new_filename" > "$tmp_file"; } 2>&1 ) if [ "$?" -eq 1 ] then kill "$info_id" rm "$tmp_file" yad --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --geometry=400 --image dialog-warning --title "Geeqie Resize" --button=gtk-ok:0 --text "Downsize failed.\n\nIf the filetype is not supported by Downsize,\ntry the Export plugin to get a jpeg.\n\nDownsize error message:\n$result" exit 0 fi kill "$info_id" if [ "$open_geeqie" = "TRUE" ] then geeqie "$new_filename" fi if [ "$show_computation" = "TRUE" ] then yad --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --title "Geeqie Resize computation" --text="$new_filename\n\n$(cat "$tmp_file")" --button=gtk-ok:0 fi rm "$tmp_file" exit 0 BestImageViewer-geeqie-33ba319/data/plugins/resize-image/geeqie-resize-image.sh000077700000000000000000000000001515032643700332072geeqie-resize-imageustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/resize-image/meson.build000066400000000000000000000005301515032643700254410ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-resize-image', 'downsize', 'resize-help.sh', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.resize-image.desktop.in', output : 'org.geeqie.resize-image.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/resize-image/org.geeqie.resize-image.desktop.in000066400000000000000000000004631515032643700317110ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Resize image Comment=Downsize an image Exec=geeqie-resize-image %f # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose #X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/resize-image/resize-help.sh000077500000000000000000000002341515032643700260660ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Call browser from the Resize Help button ## xdg-open https://www.geeqie.org/help/GuideReferenceStandardPlugins.html#downsize BestImageViewer-geeqie-33ba319/data/plugins/rotate/000077500000000000000000000000001515032643700222165ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/rotate/geeqie-rotate000077500000000000000000000116001515032643700246750ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief This is a helper script that rotates image files according to the metadata ## ## Requirements: ImageMagick, exiftran, exiv2 ## GQ_METADATA_DIR="$HOME/.local/share/geeqie/metadata" gq_exiftran() { if ! [ -x "$(command -v exiftran)" ] then zenity --title="Geeqie rotate" --info --text="Exiftran is not installed" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null exit 0 fi exiftran "$@" } gq_exiv2() { if ! [ -x "$(command -v exiv2)" ] then zenity --title="Geeqie rotate" --info --text="Exiv2 is not installed" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null exit 0 fi exiv2 "$@" } gq_mogrify() { if ! [ -x "$(command -v mogrify)" ] then zenity --title="Geeqie rotate" --info --text="ImageMagick is not installed" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2> /dev/null exit 0 fi mogrify "$@" } rotate() { ext=$(echo "${1##*.}" | tr "[:upper:]" "[:lower:]") [ "$ext" = "" ] && return 1 #no extension gq_metadata="$GQ_METADATA_DIR/$1.gq.xmp" if [ -f "$gq_metadata" ] then gq_orientation=$(gq_exiv2 -PXkv "$gq_metadata" | grep Xmp.tiff.Orientation | sed -e "s|Xmp.tiff.Orientation *||") # shellcheck disable=2181 [ $? != 0 ] && exit 1 else gq_orientation= fi case "$ext" in jpg | jpeg) if [ -n "$gq_orientation" ] then gq_exiv2 -M "set Exif.Image.Orientation $gq_orientation" "$1" # shellcheck disable=2181 [ $? != 0 ] && exit 1 fi if gq_exiftran -aip "$1" then # exiftran ignores xmp, set it manually gq_exiv2 -M "set Xmp.tiff.Orientation 1" "$1" # shellcheck disable=2181 [ $? != 0 ] && exit 1 #http://dev.exiv2.org/issues/639 if [ -n "$gq_orientation" ] then gq_exiv2 -M "set Xmp.tiff.Orientation 1" \ -M "set Exif.Image.Orientation 1" "$gq_metadata" # shellcheck disable=2181 [ $? != 0 ] && exit 1 fi return 0 else exit 1 fi ;; tif | tiff | png) if [ -n "$gq_orientation" ] then gq_exiv2 -M "set Exif.Image.Orientation $gq_orientation" "$1" # shellcheck disable=2181 [ $? != 0 ] && exit 1 fi if gq_mogrify -auto-orient "$1" then # mogrify ignores xmp, set it manually gq_exiv2 -M "set Xmp.tiff.Orientation 1" "$1" # shellcheck disable=2181 [ $? != 0 ] && exit 1 #http://dev.exiv2.org/issues/639 if [ -n "$gq_orientation" ] then gq_exiv2 -M "set Xmp.tiff.Orientation 1" \ -M "set Exif.Image.Orientation 1" "$gq_metadata" # shellcheck disable=2181 [ $? != 0 ] && exit 1 fi return 0 else exit 1 fi ;; *) #not supported return 4 ;; esac } rotate_image_file() { ext=$(echo "${3##*.}" | tr "[:upper:]" "[:lower:]") [ "$ext" = "" ] && return 1 #no extension case "$ext" in jpg | jpeg) gq_exiftran -i "$1" "$3" # shellcheck disable=2181 [ $? != 0 ] && return 6 return 0 ;; tif | tiff | png) gq_mogrify "$2" "$3" # shellcheck disable=2181 [ $? != 0 ] && return 7 return 0 ;; *) #not supported return 4 ;; esac } get_sidecars= if [ "$1" = "-g" ] then get_sidecars=yes shift fi rotate_image_file= rotation= if [ "$1" = "-r" ] then rotate_image_file=yes shift rotation="$1" shift fi preserve_mtime= if [ "$1" = "-t" ] then preserve_mtime=yes shift fi if [ -n "$rotation" ] then if [ "$rotation" = "0" ] then exit 0 fi if [ "$rotation" = "2" ] then mogrify_param="-flop" exiftran_param="-F" fi if [ "$rotation" = "3" ] then mogrify_param="-rotate 180" exiftran_param="-1" fi if [ "$rotation" = "4" ] then mogrify_param="-flip" exiftran_param="-f" fi if [ "$rotation" = "5" ] then mogrify_param="-transpose" exiftran_param="-t" fi if [ "$rotation" = "6" ] then mogrify_param="-rotate 90" exiftran_param="-9" fi if [ "$rotation" = "7" ] then mogrify_param="-transverse" exiftran_param="-T" fi if [ "$rotation" = "8" ] then mogrify_param="-rotate -90" exiftran_param="-2" fi fi # iterate over files on commandline for file in "$@" do if [ -n "$get_sidecars" ] then # we got only one file for each group, typically the main one # get the sidecars: geeqie --get-sidecars="$file" | while read -r sidecar do # the main file is included in the sidecar file list, no special handling is required [ ! -w "$sidecar" ] && exit 5 rotate "$sidecar" ret=$? done # Bourne shell runs DO loops in a sub-shell ret=$? [ "$ret" != 0 ] && exit "$ret" else [ ! -w "$file" ] && exit 5 if [ -n "$rotate_image_file" ] then if [ -n "$preserve_mtime" ] then mtime=$(date --reference="$file" +%s) fi rotate_image_file "$exiftran_param" "$mogrify_param" "$file" ret=$? if [ -n "$preserve_mtime" ] then touch --date=@"$mtime" -m "$file" fi [ "$ret" != 0 ] && exit "$ret" else rotate "$file" ret=$? [ "$ret" != 0 ] && exit "$ret" fi fi done exit 0 BestImageViewer-geeqie-33ba319/data/plugins/rotate/geeqie-rotate.sh000077700000000000000000000000001515032643700277562geeqie-rotateustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/rotate/meson.build000066400000000000000000000004521515032643700243610ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later # install_data('geeqie-rotate', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.rotate.desktop.in', output : 'org.geeqie.rotate.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/rotate/org.geeqie.rotate.desktop.in000066400000000000000000000006671515032643700275510ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Apply the orientation to image content # call the helper script Exec=geeqie-rotate -g %f # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # Show in menu "Edit/Orientation" X-Geeqie-Menu-Path=EditMenu/OrientationMenu # It can be made verbose # X-Geeqie-Verbose=true MimeType=image/jpeg;image/png;image/tiff; BestImageViewer-geeqie-33ba319/data/plugins/symlink/000077500000000000000000000000001515032643700224065ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/symlink/geeqie-symlink000066400000000000000000000011351515032643700252540ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Symlink grouped files ## ## It uses geeqie remote connection to get details about grouped files ## # iterate over files on commandline for file in "$@" do # we got only one file for each group, typically the main one # get the sidecars: geeqie --get-sidecars="$file" | while read -r sidecar do # the main file is included in the sidecar file list, no special handling is required # get destination path for each sidecar file: destination=$(geeqie --get-destination "$sidecar") if [ -n "$destination" ] then ln -s "$sidecar" "$destination" fi done done BestImageViewer-geeqie-33ba319/data/plugins/symlink/geeqie-symlink.sh000077700000000000000000000000001515032643700305262geeqie-symlinkustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/symlink/meson.build000066400000000000000000000004531515032643700245520ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-symlink', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.symlink.desktop.in', output : 'org.geeqie.symlink.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/symlink/org.geeqie.symlink.desktop.in000066400000000000000000000006511515032643700301220ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Symlink # call the helper script Exec=geeqie-symlink %f # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # Show in menu "File" X-Geeqie-Menu-Path=FileMenu/FileOpsSection # This is a filter - $GEEQIE_DESTINATION is required X-Geeqie-Filter=true # It can be made verbose # X-Geeqie-Verbose=true BestImageViewer-geeqie-33ba319/data/plugins/tethered-photography/000077500000000000000000000000001515032643700250665ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/tethered-photography/geeqie-tethered-photography000077500000000000000000000034161515032643700324230ustar00rootroot00000000000000#!/bin/sh ## @file ## @brief Simple tethered photography helper ## ## Requires gphoto2 ## ## If a file already exists with the same name, it is not overwritten, but the ## download will not take place. ## Auto-rename can be achieved with the --filename option of gphoto2. ## In file $HOME/.config/gphoto2/settings, set the option: ## gphoto2=filename= ## n=$(pgrep "geeqie-tethered" | wc -l) if [ "$n" -ge 3 ] then exit 0 fi if ! [ -x "$(command -v gphoto2)" ] then zenity --title="Geeqie tethered photography" --info --text="gphoto2 is not installed" 2>/dev/null exit 0 fi if [ "$(gphoto2 --auto-detect | wc -l)" -le 2 ] then zenity --error --title="Geeqie tethered photography" --text="No camera detected" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2>/dev/null exit 0 fi notify-send --expire-time=2000 "$(gphoto2 --auto-detect | sed -n '3p')" --icon=geeqie script_dir=$(dirname "$0") tmpfile=$(mktemp "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX") yes n | gphoto2 --hook-script "$script_dir/"geeqie-tethered-photography-hook-script --capture-tethered >"$tmpfile" & gphoto2_pid=$! zenity --question --title="Geeqie tethered photography" --ok-label="Stop" --cancel-label="Show log data" --text="Tethered photography is running.\n\n\nDownloading to folder:\n""$PWD\n\n\nExisting files will not be overwritten,\nbut the download will not take place.\n\n(Use gphoto2 --filename default option\nfor auto-rename on download)" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg 2>/dev/null if [ $? = 1 ] then zenity --text-info --title="Geeqie tethered photography" --window-icon=/usr/local/share/icons/hicolor/scalable/apps/geeqie.svg --ok-label="Stop" --cancel-label="Abort" <"$tmpfile" 2>/dev/null fi kill "$gphoto2_pid" rm "$tmpfile" geeqie-tethered-photography-hook-script000077500000000000000000000003501515032643700345760ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/tethered-photography#!/bin/sh ## @file ## @brief Tethered photography hook script ## # shellcheck disable=SC2154 if [ "$ACTION" = "download" ] then notify-send --expire-time=4000 "$ARGUMENT" --icon=geeqie geeqie --File="$PWD/$ARGUMENT" fi exit 0 geeqie-tethered-photography-hook-script.sh000077700000000000000000000000001515032643700447672geeqie-tethered-photography-hook-scriptustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/tethered-photographyBestImageViewer-geeqie-33ba319/data/plugins/tethered-photography/geeqie-tethered-photography.sh000077700000000000000000000000001515032643700403462geeqie-tethered-photographyustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/tethered-photography/meson.build000066400000000000000000000005751515032643700272370ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later install_data('geeqie-tethered-photography', 'geeqie-tethered-photography-hook-script', install_dir : gq_bindir) i18n.merge_file( input : 'org.geeqie.tethered-photography.desktop.in', output : 'org.geeqie.tethered-photography.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) org.geeqie.tethered-photography.desktop.in000066400000000000000000000004461515032643700352050ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/tethered-photography[Desktop Entry] Version=1.0 Type=Application Name=Tethered photography Exec=geeqie-tethered-photography # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; # It can be made verbose #X-Geeqie-Verbose=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/plugins/video-player/000077500000000000000000000000001515032643700233205ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/plugins/video-player/meson.build000066400000000000000000000003741515032643700254660ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later i18n.merge_file( input : 'org.geeqie.video-player.desktop.in', output : 'org.geeqie.video-player.desktop', type : 'desktop', po_dir : podir, install : true, install_dir : desktopdir) BestImageViewer-geeqie-33ba319/data/plugins/video-player/org.geeqie.video-player.desktop.in000066400000000000000000000006401515032643700317440ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Type=Application Name=Video player Comment=Display videos in Geeqie # Requires xdg-utils Exec=xdg-open %f # Desktop files that are usable only in Geeqie should be marked like this: Categories=X-Geeqie;Graphics; OnlyShowIn=X-Geeqie; TryExec=xdg-open # If you want to run a plugin in full-screen mode and wish full-screen # to be maintained: X-Geeqie-Keep-Fullscreen=true Icon=geeqie BestImageViewer-geeqie-33ba319/data/ui/000077500000000000000000000000001515032643700176545ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/data/ui/keyboard-shortcuts.ui000066400000000000000000002257341515032643700240640ustar00rootroot00000000000000 0 1 all-windows All Windows Shortcuts 12 1 Keys 1 Help F1 1 Context Menu F10 Menu 1 Search and Run slash 1 Copy <ctrl>C 1 Move <ctrl>M 1 Rename <ctrl>R 1 Move selection to trash <ctrl>D 1 Close window <ctrl>W 1 Select all <ctrl>A 1 Select none <ctrl><shift>A 1 Print <shift>P 1 Keys 1 Fullscreen F V 1 Exit fullscreen Escape 1 programmable-keys Programmable Shortcuts 12 1 Default Keys 1 Image rotate Original state <shift>O 1 Close window <ctrl>W 1 Connected Zoom 1:1 <shift>KP_Divide <shift>Z 1 Connected Fit Horizontally <shift>H 1 Connected Fit Vertically <shift>W 1 Connected Zoom to fit <shift>KP_Multiply <shift>X 1 Connected Zoom in <shift>KP_Add plus 1 Connected Zoom out <shift>KP_Subtract underscore 1 Copy <ctrl>C 1 Cut to clipboard <ctrl>X 1 Move selection to Trash Delete KP_Delete <ctrl>D 1 Leave full screen Q Escape 1 Default Keys 1 Exif window <ctrl>E 1 Find duplicates D 1 First Image Home 1 First Page of multi-page image <ctrl>Home 1 Image Flip <shift>F 1 Full screen F11 V F 1 Help manual F1 1 Hide file list <ctrl>H 1 Cycle through histogram channels K 1 Cycle through histogram modes J 1 Cycle through Overlay modes I 1 Keyword Autocomplete <alt>K 1 Default Keys 1 Last Image End 1 Last Page of multi-page image <ctrl>End 1 Image Mirror <shift>M 1 Move <ctrl>M 1 New collection C 1 New folder <ctrl>F 1 New window (default <ctrl>N 1 Next Image Page_Down KP_Page_Down space 1 Next Page of multi-page image <ctrl>Page_Down 1 Open collection O 1 Pan view <ctrl>J 1 Delete selection <shift>Delete 1 Default Keys 1 Preferences <ctrl>O 1 Previous Image Page_Up KP_Page_Up BackSpace 1 Previous Page of multi-page image <ctrl>Page_Up 1 Print <shift>P 1 Quit <ctrl>Q 1 Rating 0 - Rating 5 <alt>KP_0 <alt>KP_5 1 Rating -1 <alt>KP_Subtract 1 Refresh R 1 Rename <ctrl>R 1 Image Rotate 180° <shift>R 1 Rotate counterclockwise 90° bracketleft 1 Image Rotate clockwise 90° bracketright 1 Default Keys 1 Save metadata <ctrl>S 1 Search commands by keyword and run them slash 1 Search F3 1 Select all <ctrl>A 1 Invert Selection <ctrl><shift>I 1 Select none <ctrl><shift>A 1 Slideshow Faster <ctrl>equal 1 Pause slideshow P 1 Slideshow Slower <ctrl>minus 1 Split Pane - Down Right Left Up <alt>Down Right Left Up 1 View in new window <ctrl>V 1 Zoom 1:1 KP_Divide Z 1 Default Keys 1 Fit Horizontally H 1 Fit Vertically W 1 Zoom to fit KP_Multiply X KP_Add 1 Zoom in equal 1 Zoom out KP_Subtract minus 1 Toggle animation A 1 Toggle Exif rotate <alt>X 1 Float file list L 1 Toggle grayscale <shift>G 1 Hide Bars and Files grave 1 Hide Selectable Bars <ctrl>grave 1 Hide alpha channel <shift>A 1 Default Keys 1 Highlight over/under exposed <shift>E 1 Rectangular Selection <alt>R 1 Info sidebar <ctrl>K 1 Sort manager <shift>S 1 Show Marks M 1 Toggle slideshow S 1 Show Thumbnails T 1 View Images as Icons <ctrl>I 1 View Images as List <ctrl>L 1 Toggle Folders View <ctrl>T 1 Split panes horizontal. E 1 Single pane Y 1 Default Keys 1 Split panes vertical U 1 collections-window Collections Window Shortcuts 12 1 Keys 1 Remove Delete 1 View Return 1 View in new window V 1 Rectangular selection <alt>R 1 Select single file space 1 Toggle select image <ctrl>space 1 Append from file selection <ctrl>L 1 Append from collection A 1 Save collection S 1 Save collection as <ctrl>S 1 Show filename text <ctrl>T 1 Sort by name N 1 Keys 1 Sort by date D 1 Sort by size B 1 Sort by path P 1 Append (Append collection dialog) <alt>A 1 Discard (Close modified collection dialog) <alt>D 1 duplicates-window Duplicates Window Shortcuts 12 1 Keys 1 Delete selection <shift>Delete 1 Remove Delete 1 Clear <ctrl>Delete 1 Select all <ctrl>A 1 Select none <ctrl>A 1 Toggle thumbs <ctrl>T 1 Close window <ctrl>W 1 Keys 1 View Return 1 View in new window V 1 Collection from selection C 1 Append list <alt>L 1 Select none 0 1 Select group 1 duplicates 1 1 Select group 2 duplicates 2 1 image-window Image Window Shortcuts 12 1 Keys 1 Move to trash <ctrl>D Delete 1 Delete <shift>Delete 1 Close window <ctrl>W 1 Rotate 180° <shift>R 1 Rotate mirror <shift>M 1 Rotate flip <shift>F 1 Rotate counterclockwise 90° bracketright 1 Rotate clockwise 90° bracketleft 1 Previous Page_Up KP_Page_Up BackSpace B 1 Next Page_Down KP_Page_Down space N 1 Zoom in equal plus 1 Keys 1 Zoom out minus 1 Zoom to fit X KP_Multiply 1 Zoom 1:1 Z KP_Divide 1 1 Zoom 2:1 2 1 Zoom 3:1 3 1 Zoom 4:1 4 1 Zoom 1:4 7 1 Zoom 1:3 8 1 Zoom 1:2 9 1 Keys 1 Zoom fit window width W 1 Zoom fit window height H 1 Toggle slideshow S 1 Pause slideshow P 1 Reload image R 1 Fullscreen F V 1 Image overlay I 1 Close window Escape 1 Desaturate <shift>G 1 Print <shift>P 1 pan-window Pan Window Shortcuts 12 1 Keys 1 Move to trash <ctrl>D 1 Display Find search bar <ctrl>F 1 Start search <ctrl>G 1 Hide Find search bar Escape 1 Zoom in equal plus 1 Zoom out minus 1 Zoom to fit KP_Multiply 1 Zoom 1:1 Z KP_Divide 1 1 Zoom 2:1 2 1 Zoom 3:1 3 1 Zoom 4:1 4 1 Zoom 1:4 7 1 Keys 1 Zoom 1:3 8 1 Zoom 1:2 9 1 Zoom fit window width W 1 Zoom fit window height H 1 Display Find search bar slash 1 Scroll - Left Right Up Down Left Right Up Down 1 Scroll faster <ctrl>Left Right Up Down 1 Scroll display half screen up p Page_Up 1 Scroll display half screen down p Page_Down 1 Scroll display half screen left p Home 1 Scroll display half screen right p End 1 search-window Search Window Shortcuts 13 1 Keys 1 Move selection to trash <ctrl>D 1 Delete selection <shift>Delete 1 Remove Delete 1 Clear <ctrl>Delete 1 Toggle thumbs search <ctrl>T 1 View Return 1 View in new window V 1 Collection from selection C 1 Start/stop search <ctrl>Return 1 Find duplictaes/stop search F3 1 mouse Mouse 12 1 Mouse 1 🖱 Left Click Next image 1 🖱 Mouse Wheel down Next image ₁ 1 🖱 Middle Click Previous image 1 🖱 Mouse Wheel up Previous image ₁ 1 🖱 Left click and drag Pan image 1 🖱 Control + Mouse wheel up Zoom in 1 🖱 Control + Mouse wheel down Zoom out 1 🖱 Mouse button 8 Forward ₂ 1 🖱 Mouse button 9 Back ₂ 1 🖱 Control + left click Smooth scroll 1 1 Default Mouse wheel functions can be altered by changing the Mouse wheel scrolls image option 1 2 Requires a multi-button mouse. 1 arrow-keys Arrow Keys 12 1 Arrows 1 Pan image Up Down Left Right 1 Pan image faster <shift>Up Down Left Right 1 Pan to respective edge of image <ctrl>Up Down Left Right 1 Move to respective split pane <alt>Up Down Left Right BestImageViewer-geeqie-33ba319/data/ui/menu-classic.ui000066400000000000000000000250611515032643700226020ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/ui/menu-hamburger.ui000066400000000000000000000251321515032643700231340ustar00rootroot00000000000000 BestImageViewer-geeqie-33ba319/data/ui/meson.build000066400000000000000000000001621515032643700220150ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-2.0-or-later project_sources += gnome.compile_resources('ui', 'ui.gresource.xml') BestImageViewer-geeqie-33ba319/data/ui/search-and-run.ui000066400000000000000000000035131515032643700230240ustar00rootroot00000000000000 command_store 0 0 sar_window 500 10 False start False Search and Run command - Geeqie sar_window False True geeqie.png True True Search for commands and run them edit-find Search for commands and run them completion BestImageViewer-geeqie-33ba319/data/ui/ui.gresource.xml000066400000000000000000000004721515032643700230130ustar00rootroot00000000000000 keyboard-shortcuts.ui menu-classic.ui menu-hamburger.ui search-and-run.ui BestImageViewer-geeqie-33ba319/doc/000077500000000000000000000000001515032643700170735ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/doc/diagrams.dox000066400000000000000000000303331515032643700214000ustar00rootroot00000000000000/* * Copyright (C) 2006 John Ellis * Copyright (C) 2008 - 2022 The Geeqie Team * * Author: Colin Clark * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /** * @file * @brief Diagrams to be included in the Doxygen output * * The contents are diagrams to be included in the Doxygen output. */ /** * @page diagrams Diagrams * @section metadata_write Metadata write sequence * * @startuml * * group metadata write sequence * start * * : write to file/sidecar = FALSE; * if (//Preferences / Metadata//\n **Step 1:**\n Save in image file or sidecar file) then (yes) * if (extension in //File Filters / File Types / Writable// list) then (yes) * if (image file writable) then (yes) * : write to file/sidecar = TRUE; * : metadata_file = ; * else (no) * : log warning; * endif * else (no) * if (extension in //File Filters / File Types / Sidecar Is Allowed// list) then (yes) * if (sidecar file or folder writable) then (yes) * : write to file/sidecar = TRUE; * : metadata_file = ; * else (no) * : log warning; * endif * else (no) * endif * endif * else (no) * endif * * if (write to file/sidecar) then (yes) * else (no) * group If a metadata file already exists, use it * start * group Look in user defined option * if (//Preferences / Metadata//\n **Step 2:**\n Save in sub-folder local to image folder) then (yes) * : metadata_file = \n/.metadata/.gq.xmp; * else (no) * if (XDG_DATA_HOME defined) then (yes) * : metadata_file = \nXDG_DATA_HOME/geeqie/metadata//.gq.xmp; * else (no) * : metadata_file = \nHOME/.local/share/geeqie/metadata//.gq.xmp; * endif * endif * end group * * if (metadata_file exists) then (yes) * else (no) * group Ignore user defined option and try alternate * if (//Preferences / Metadata//\n **Step 2:**\n Save in sub-folder local to image) then (no) * : metadata_file = \n /.metadata/.gq.xmp; * else (yes) * if (XDG_DATA_HOME defined) then (yes) * : metadata_file = \n XDG_DATA_HOME/geeqie/metadata//.gq.xmp; * else (no) * : metadata_file = \n HOME/.local/share/geeqie/metadata//.gq.xmp; * endif * endif * end group * endif * * if (metadata_file exists) then (yes) * else (no) * group Try GQview legacy format * if (//Preferences / Metadata//\n **Step 2:**\n Save in sub-folder local to image folder) then (yes) * : metadata_file = \n/.metadata/.meta; * else (no) * if (XDG_DATA_HOME defined) then (yes) * : metadata_file = \nXDG_DATA_HOME/geeqie/metadata//.meta; * else (no) * : metadata_file = \nHOME/.local/share/geeqie/metadata//.meta; * endif * endif * end group * * if (metadata_file exists) then (yes) * else (no) * group Ignore user defined option and try alternate * if (//Preferences / Metadata//\n **Step 2:**\n Save in sub-folder local to image) then (no) * : metadata_file = \n /.metadata/.meta; * else (yes) * if (XDG_DATA_HOME defined) then (yes) * : metadata_file = \n XDG_DATA_HOME/geeqie/metadata//.meta; * else (no) * : metadata_file = \n HOME/.local/share/geeqie/metadata//.meta; * endif * endif * end group * endif * endif * end group * * if (metadata_file exists) then (yes) * else (no) * group If no metadata file exists, use user defined option * if (//Preferences / Metadata//\n **Step 2:**\n Save in sub-folder local to image folder) then (yes) * : metadata_file = \n/.metadata/.gq.xmp; * else (no) * if (XDG_DATA_HOME defined) then (yes) * : metadata_file = \nXDG_DATA_HOME/geeqie/metadata//.gq.xmp; * else (no) * : metadata_file = \nHOME/.local/share/geeqie/metadata//.gq.xmp; * endif * endif * end group * endif * * if (metadata_file writable) then (yes) * else (no) * if (XDG_DATA_HOME defined) then (yes) * : metadata_file = \nXDG_DATA_HOME/geeqie/metadata//.gq.xmp; * else (no) * : metadata_file = \nHOME/.local/share/geeqie/metadata//.gq.xmp; * endif * : Recursively create metadata_file_path\n if necessary; * endif * endif * : Write metadata; * * end group * @enduml */ /** * @file * @ref metadata_write "Metadata write sequence" */ /** * @page diagrams Diagrams * @section options_overview Options Overview * * #_ConfOptions #_LayoutOptions * * @startuml * * object options.h * object layout.h * * options.h : ConfOptions * options.h : \n * options.h : Options applicable to **all** Layout Windows * options.h : These are in the section of geeqierc.xml * options.h : Available to all modules via the global variable **options** * layout.h : LayoutOptions * layout.h : \n * layout.h : Options applicable to **each** Layout Window * layout.h : These are in the section of geeqierc.xml * layout.h : There is one section for each Layout Window displayed * layout.h : Available via **->options** * * @enduml */ /** * @page diagrams Diagrams * @section options_diagrams_main Options - New Window From Main * #main * #init_options * #layout_new_from_default * #load_config_from_file * #load_options * #setup_default_options * * @startuml * group main.cc * start * group options.cc * : **init_options()** * * Set **options** = ConfOptions from hard-coded init values; * end group * * group options.cc * : **setup_default_options()** * * set hard-coded ConfOptions: * * bookmarks: * * dot dir * * Home * * Desktop * * Collections * safe delete path * OSD template string * sidecar extensions * shell path and options * marks tooltips * help search engine; * end group * * if (first entry * or * --new-instance) then (yes) * group options.cc * : **load_options()** * ; * * split * : GQ_SYSTEM_WIDE_DIR * /geeqierc.xml; * split again * : XDG_CONFIG_HOME * /geeqierc.xml; * split again * : HOME * /.geeqie/geeqierc.xml; * end split * * group rcfile.cc * : **load_config_from_file()** * * set **options** from file * and all ->options in file; * end group * * end group * * if (broken config. file * or no config file * or no layout section loaded * (i.e. session not saved)) then (yes) * group layout.cc * : **layout_new_from_default()**; * if (default.xml exists) then (yes) * : Load user-saved * layout_window default options * from default.xml file; * else (no) * : Load hard-coded * layout_window default options; * endif * end group * endif * * else (no) * : Send --new-window request to remote * No return to this point * This instance terminates; * stop * endif * * : Enter gtk main loop; * * end group * @enduml */ /** * @page diagrams Diagrams * @section options_diagrams_remote Options - New Window From Remote * #layout_new_from_default * @startuml * * group remote.cc * start * group layout.cc * : **layout_new_from_default()**; * if (default.xml exists) then (yes) * : Load user-saved * layout_window default options * from default.xml file; * else (no) * : Load hard-coded * layout_window default options; * endif * end group * : set path from PWD; * @enduml */ /** * @page diagrams Diagrams * @section options_diagrams_menu Options - New Window From Menu * #layout_menu_new_window_cb * #layout_menu_window_from_current_cb * #layout_new_from_default * @startuml * * group layout-util.cc * start * * split * : default; * group layout.cc * : **layout_new_from_default()**; * if (default.xml exists) then (yes) * : Load user-saved * layout_window default options * from default.xml file; * else (no) * : Load hard-coded * layout_window default options; * endif * end group * * split again * : from current * * **layout_menu_window_from_current_cb()** * copy layout_window options * from current window; * * split again * : named * * **layout_menu_new_window_cb()** * load layout_window options * from saved xml file list; * end split * * end group * @enduml */ /** * @file * @ref options_overview "Options Overview" */ /** * @page diagrams Diagrams * @section image_load_overview Image Load Overview * @startuml * object image_change * object image_change_complete * object image_load_begin * object image_loader_start * object image_loader_start_thread * object image_loader_setup_source * object image_loader_thread_run * object image_loader_begin * object image_loader_setuploader * circle "il->memory_mapped" * object exif_get_preview_ * object libraw_get_preview * object exif_get_preview * * image_change : image.cc * image_change_complete : image.cc * image_load_begin : image.cc * image_loader_start : image-load.cc * image_loader_start_thread : image-load.cc * image_loader_thread_run : image-load.cc * image_loader_begin : image-load.cc * image_loader_setuploader : image-load.cc * image_loader_setuploader : - * image_loader_setuploader : Select backend using magic * image_loader_setup_source : image-load.cc * libraw_get_preview : image-load-libraw.cc * exif_get_preview : exiv2.cc * exif_get_preview : EXIV2_TEST_VERSION(0,17,90) * exif_get_preview_ : exif.cc * exif_get_preview_ : - * exif_get_preview_ : If exiv2 not installed * * image_change --> image_change_complete * image_change_complete --> image_load_begin * image_load_begin --> image_loader_start * image_loader_start --> image_loader_start_thread * image_loader_start_thread --> image_loader_thread_run * image_loader_start_thread --> image_loader_setup_source * image_loader_setup_source --> exif_get_preview_ * image_loader_setup_source --> exif_get_preview : Try exiv2 if libraw fails * image_loader_setup_source --> libraw_get_preview * exif_get_preview_ ..> "il->memory_mapped" * exif_get_preview ..> "il->memory_mapped" * libraw_get_preview ..> "il->memory_mapped" * image_loader_thread_run --> image_loader_begin * image_loader_begin --> image_loader_setuploader * "il->memory_mapped" ..> image_loader_setuploader * note left of "il->memory_mapped" : Points to first byte of embedded jpeg (#FFD8)\n if preview found, otherwise to first byte of file * @enduml */ /** * @file * @ref image_load_overview "Image Load Overview" */ /** * @page diagrams Diagrams * @section duplicates_data_layout Duplicates Data Layout * * #_DupeWindow #_DupeItem #_DupeMatch * * @startuml * * database DupeWindow [ * DupeWindow->list * ==== * DupeItem * ---- * DupeItem * ---- * DupeItem * ---- * . * . * . * ] * note left * One entry for each file * dropped onto the dupes window * end note * * card DupeItem [ * DupeItem * (parent) * ==== * . * . * . * ---- * fd * ---- * group (list) * ---- * group_rank * ---- * . * . * . * ] * note right * group_rank: (sum of all child ranks) / n * end note * * database group [ * group (list) * (children) * ==== * DupeMatch * ---- * DupeMatch * ---- * DupeMatch * ---- * . * . * . * ] * note left * One entry for each file * matching parent * end note * * card DupeMatch [ * DupeMatch * ==== * DupeItem * ---- * rank * ---- * ] * * DupeWindow -r-> DupeItem * group -r-> DupeMatch * DupeItem --> group * @enduml */ BestImageViewer-geeqie-33ba319/doc/docbook/000077500000000000000000000000001515032643700205135ustar00rootroot00000000000000BestImageViewer-geeqie-33ba319/doc/docbook/CommandLineOptions.xml000066400000000000000000000347321515032643700250100ustar00rootroot00000000000000 GEEQIE 1 February 2026 Geeqie 2.7 GTK3 Geeqie GTK based multiformat image viewer DESCRIPTION Geeqie is an interactive GTK based image viewer that supports multiple image formats, zooming, panning, thumbnails and sorting images into collections. Generated for version: Usage: geeqie [OPTION…] [path...] Geeqie is an image viewer. Version: Geeqie 2.7 Help Options: -h, --help Show help options --help-all Show all help options --help-gapplication Show GApplication options --help-gtk Show GTK+ Options Application Options: --action=<ACTION> execute keyboard action (https://www.geeqie.org/help/GuideReferenceRemoteKeyboardActions.html) --action-list list available keyboard actions (some are redundant) -b, --back previous image --cache-metadata clean the metadata cache --cache-render=<folder> render thumbnails --cache-render-recurse=<folder> render thumbnails recursively --cache-render-shared=<folder> render thumbnails (see Help) --cache-render-shared-recurse=<folder> render thumbnails recursively (see Help) --cache-shared=clean|clear clear or clean shared thumbnail cache --cache-thumbs=clear|clean clear or clean thumbnail cache --close-window close window --config-load=<FILE> load configuration from FILE -d, --delay=<[H:][M:][N][.M]> set slide show delay to Hrs Mins N.M seconds, --dupes=<FOLDER> find duplicates in folder --dupes-export export duplicates search result --dupes-recurse=<FOLDER> find duplicates in folder recursively --file=<FILE>|<URL> open FILE or URL bring Geeqie window to the top --File=<FILE>|<URL> open FILE or URL do not bring Geeqie window to the top --file-extensions list known file extensions --first first image -f, --fullscreen start / toggle in full screen mode --geometry=<W>x<H>[+<XOFF>+<YOFF>] set main window location and geometry --get-collection=<COLLECTION> get collection content --get-collection-list get collection list --get-destination=<FILE> get destination path of FILE (https://www.geeqie.org/help/GuidePluginsConfig.html) --get-file-info get file info --get-filelist=[<FOLDER>] get list of files and class --get-filelist-recurse=[<FOLDER>] get list of files and class recursive --get-rectangle get rectangle coordinates --get-render-intent get render intent --get-selection get list of selected files --get-sidecars=<FILE> get list of sidecars of FILE --get-window-list get list of windows --id=<ID> window id for following commands --last last image -o, --log-file=<file> save log data to file --lua=<FILE>,<lua script> run lua script on FILE --new-window new window -n, --next next image --pixel-info print pixel info of mouse pointer on current image --print0 terminate returned data with null character instead of newline -q, --quit quit --raise bring the Geeqie window to the top --selection-add=[<FILE>] adds the current file (or the specified file) to the current selection --selection-clear clears the current selection --selection-remove=[<FILE>] removes the current file (or the specified file) from the current selection -w, --show-log-window show log window --slideshow-recurse=<FOLDER> start recursive slide show in FOLDER -s, --slideshow toggle slide show --tell print filename [and Collection] of current image -t, --tools toggle tools -v, --version print version info --view=<FILE> open FILE in new window --display=DISPLAY X display to use All other command line parameters are used as plain files if they exist, or a URL or a folder. The name of a collection, with or without either path or extension (.gqv) may be used. If more than one folder is on the command line, only the last will be used. If more than one file is on the command line: If they are in the same folder, that folder will be opened and those files will be selected. If they are not in the same folder, a new Collection containing those files will be opened. To run Geeqie as a new instance, use: GQ_NEW_INSTANCE=y[es] geeqie Normally a single set of configuration files is used for all instances. However, the environment variables XDG_CONFIG_HOME, XDG_CACHE_HOME, XDG_DATA_HOME can be used to modify this behavior on an individual basis e.g. XDG_CONFIG_HOME=/tmp/a XDG_CACHE_HOME=/tmp/b GQ_NEW_INSTANCE=y geeqie To disable Clutter use: GQ_DISABLE_CLUTTER=y[es] geeqie To run or stop Geeqie in cache maintenance (non-GUI) mode use: GQ_CACHE_MAINTENANCE=y[es] geeqie --help Note that bash command line completion does not work in this mode. User manual: https://www.geeqie.org/help/GuideIndex.html : https://www.geeqie.org/help-pdf/help.pdf BUGS Please send bug reports and feedback to https://github.com/BestImageViewer/geeqie/issues COPYRIGHT Copyright (C) 1999-2004 by John Ellis. Copyright (C) 2004-2026 by The Geeqie Team. Use this software at your own risk! This software released under the GNU General Public License. Please read the COPYING file for more information. BestImageViewer-geeqie-33ba319/doc/docbook/GuideCollections.xml000066400000000000000000000126431515032643700244770ustar00rootroot00000000000000
Collections Geeqie provides the ability to build lists of images, regardless of the location of the files on disk. A collection window displays the contents of a collection. It allows the collection to be modified and access to the images contained in the collection. To open a new empty collection window select C File New collection . To open an existing collection, select O File Open collection . A dialog will appear requesting the location of the collection file. A window will the open containing the selected collection. Recently opened or saved collections can also be opened by selecting the collection's file name from the Open recent sub menu of the file menu. To delete or rename a collection, select O File Open collection , right-click on the collection you wish to delete or rename, and then select Delete or Rename . The collection window consists of a pane to display the contents of the collection, and a status bar along the bottom of the window.
Icon pane The icon pane displays images contained in the collection as thumbnails in a grid, by default the file names also appear below each thumbnail. The Icon pane works exactly like the Icon view mode of the in a main window, but with the addition that the contents of the collection can be organized with drag and drop. A context menu is available for the icon pane by right clicking the mouse or pressing the Menu key. Keyboard Shortcuts are available in the collection window: The selection can be changed using the keyboard and mouse the same as in a of the main window.
Status bar The status bar displays the total number of images in the collection, and the number of selected images in parenthesis. A progress bar also displays whenever thumbnails are loading from disk.
Drag and Drop Drag and drop can be initialized with the primary or middle mouse buttons. Dragging an image that is selected will include all selected images in the drag. Dragging an image that is not selected will drag only that image. Dropping files and folders onto the collection window will add them to the collection, they will be inserted at the location of the drop. A red arrow will indicate the location of the drop as files are dragged over the collection window. When one or more folders are included in the drop list, a menu will appear to select how to handle the contents of the folders. To move images within the collection to change their order, initiate a drag for the selected image(s) and then move the mouse to the desired location within the window. A red arrow will appear to assist in determining the destination of the dragged images. Release the drag to move the images to the new location in the list. When renaming or moving files within Geeqie, the contents of collections located in the collections folder will automatically update to the new name or location.
Append Images Right-click menu items permit images to be appended from either another collection or from the currently selected folder.
Randomized Sort Right-click menu item Sort , in addition to the standard sort methods, permits images to be randomly arranged.
Infotext Right-click menu item Infotext , allows additional text to be placed against a thumbnail. See Collection file format.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideColorManagement.xml000066400000000000000000000004571515032643700252740ustar00rootroot00000000000000 Color Management TBD. BestImageViewer-geeqie-33ba319/doc/docbook/GuideCredits.xml000066400000000000000000000013041515032643700236060ustar00rootroot00000000000000 Credits Geeqie is maintained by The Geeqie Team (Colin Clark, Klaus Ethgen, Laurent Monin, Petr Ostadal, Vladimir Nadvornik and others). This software is a fork of GQview project by John Ellis. The ever growing list of contributors and language translators can be found in the README file included with the latest release of the program. The Credits can also be viewed by selecting the Credits button located in the About dialog (open Help Menu, select About, click Credits... button). BestImageViewer-geeqie-33ba319/doc/docbook/GuideFaq.xml000066400000000000000000000164441515032643700227330ustar00rootroot00000000000000 Frequently Asked Questions
Move to Trash failed
How do I fix move to trash failed? It appears that some distributions will only trash files that are in the same filesytem as where the Trash bin is located. The location of the Trash bin for some systems is $HOME/.local/share/Trash . If you attempt to trash a file not in this filesystem, an attempt is made to find directory <top of filesystem>/.Trash-<uid> where <uid> is your user id (in a terminal type id to display it). If this directory does not exist, then the action will fail. You may create this directory and set write access to it as follows: cd to the directory where the file to be deleted is df --human-readable . (Note the dot!) The "Mounted on" column shows the top of the filesystem. cd <the top of the filesystem shown above> sudo mkdir .Trash-<uid> sudo chown <your user name> .Trash-<uid> sudo chmod u+rwx .Trash-<uid>
Image viewing
Limiting enlargement of images How do I keep images smaller than the visible area from enlarging when the zoom is set to “fit to window”? In the Preferences Image dialog , disable “Allow enlargement of image for zoom to fit”.
Command line
How do I open an image in an existing Geeqie application ? Use command line options to send commands to an existing Geeqie instance, for a list of commands supported by the remote switch run: geeqie --help
Setting the slide show delay How do I set the slide show delay when starting Geeqie in slide show from the command line ? The delay can not be set when used with the standard --slideshow command line switch, as --slideshow uses the delay stored in the configuration file. For this, use the remote command --slideshow to start the slide show after setting the delay with --delay=. The order of the command line is important. For example for a 12 second slide show delay use: geeqie --delay=12 --slideshow Note that if geeqie is running prior to this command, the slide show should also be stopped prior to changing the delay: geeqie --slideshow --delay=12 --slideshow
Miscellaneous
How can I save and restore multiple Geeqie windows The option Exit program when this window is closed provides this facility.
I want to be able to edit images with Geeqie Geeqie is an image viewer . There is, and never will be, a plan to add editing features. I recommend gimp for image editing.
Exif Auto Rotation
How do the Exif auto-rotation commands work? Image auto-rotation works in either of two modes, set by Write altered image orientation to the metadata option. Write altered image orientation to the metadata - not set: If you change the orientation of an image using any of the available commands, the image will always be displayed in the modified orientation. This new orientation is stored in temporary data structures associated with each image file. When Geeqie closes, these changes will be lost. It is not possible to determine if the image as displayed is the original image or one which has been temporarily rotated. If the option Auto rotate image using EXIF information is selected, any images which have Exif orientation data will also be shown rotated. However, any rotation you have selected manually will always over-ride the embedded Exif rotation value. Write altered image orientation to the metadata - set: If you change the orientation of an image using any of the available commands, this new orientation is stored in a metadata write queue. If the option Auto rotate image using EXIF information is selected, any images which have Exif orientation data will be shown rotated, including any in the metadata write queue. However if the option Auto rotate image using EXIF information is not selected, no images will be auto-rotated. If you have manually rotated any images, the metadata write icon on the status bar will alert you to that fact. Clicking the icon will give a list of the modified files.
Dark Mode
How to set Geeqie to use a dark mode If Geeqie does not automatically change mode when a style is changed, use the following as an example to start Geeqie: GTK_THEME=Adwaita:dark geeqie
BestImageViewer-geeqie-33ba319/doc/docbook/GuideGnuFdl.xml000066400000000000000000000435501515032643700234010ustar00rootroot00000000000000 GNU Free Documentation License GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the program's name and a brief idea of what it does. Copyright (C) year name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageManagement.xml000066400000000000000000000015741515032643700252410ustar00rootroot00000000000000 File Management Geeqie includes a set of utilities to copy, move, rename, and delete images. Cache maintenance utilities are also provided. The standard commands for copy, move, rename, delete and create folder can be overridden by Special Plugins BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageManagementCopyMove.xml000066400000000000000000000207711515032643700267230ustar00rootroot00000000000000
Copy and Move To copy a file in Geeqie select Ctrl C File Copy and to move a file select Ctrl M File Move . These operations also appear in the context menu of all images and files. The Copy and Move operations and dialogs behave the same in Geeqie, with the only difference being the final result. The remaining text of this page applies equally to the Copy and Move operations, for the remainder of this page these will be referred to as a Copy/Move operation. Initiating a Copy/Move operation will display a dialog to select the destination folder to Copy/Move the selected file, after the destination folder is selected Geeqie will proceed to Copy/Move the images to the destination. If an error occurs or a file exists with the same name as one of the files being Copy/Moved, a dialog will appear prompting how to handle the situation.
The Copy/Move dialog This is the dialog that is displayed when initiating a Copy/Move operation. The dialog contains a row of buttons near the top, vertical list of bookmarks along the left side, a vertical list of folders in the current path, a text entry field, and a row of buttons along the bottom. Home button Activate this button to change the active path to your home folder. New Folder button Activate this to create a new empty folder as a sub folder of the active path. The new folder will appear in the folder list ready for you to type in the desired name. Show Hidden check box Enabling this check box will cause hidden folders to appear in the folder list. Bookmark list This list on the left side of the window allows you to save links to folders that are frequently used. Activating a bookmark will change the active path to that pointed to by the link. To add items to the bookmark list highlight a folder and press Ctrl B , select “Add bookmark” from the folder's context menu, or drag a folder onto the bookmark list. The bookmark has a context menu that can be displayed by clicking the right mouse button, or pressing the Menu key when a bookmark has the focus. From the context menu you can edit a bookmark, move it up or down in the list, or remove the bookmark from the list. A bookmark can also be moved by pressing Shift + Up or Shift + Down while it has the focus. A bookmark with the name "." is treated as a special case. Each time this bookmark is displayed, its path is loaded with Geeqie's current working folder. This bookmark, like any other, can be deleted and re-created at any time. Folder list This is the list that displays the folders contained in the active path. To change the active path to a folder displayed in this list double click the primary mouse button or highlight the folder with the keyboard and press Enter or Spacebar . This list has a context menu that allows renaming or bookmarking the selected folder. A folder can also be dragged onto the bookmark list to add a bookmark. Path entry This text entry displays the active path of the dialog. The path can be directly edited using this entry. Tab completion is supported, and the drop down arrow will display a list of recently selected folders. Copy/Move button The name of this button will differ depending on the selected operation, activating it will start the operation with the folder displayed in the path entry as the destination. Cancel button Activate this button to close the dialog, the operation will be aborted.
The error dialog If a problem occurs because Geeqie is unable to Copy or Move a selected file a dialog will appear to notify the user. The dialog will also ask if the operation should continue if one or more files remain to be Copied or Moved.
The overwrite dialog If a file with the same name exists in the selected destination a dialog will appear to notify the user and ask how to resolve the conflict. The dialog will also display the source and destination images. The following possible solutions will be offered: Auto rename Enabling this check box to have Geeqie select a unique name for the destination file, the proposed new name will appear in the rename entry field. Rename Enable this check box to manually enter a new name for the file. Overwrite Activate this will overwrite the existing file, or rename it if one of the rename check boxes are enabled. Overwrite all Activating this will perform the same operation as the Yes button, however any further file name conflicts will be handled quietly in the same method as is selected for the current file. Skip This button will skip doing anything to the file in question, and resume the operation with the next file. The source file will remain untouched. Skip All This will perform the same as the Skip button, however any further file name conflicts will be quietly ignored for all remaining files. Cancel This will close the dialog and stop the operation, all remaining files will be ignored.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageManagementDelete.xml000066400000000000000000000055331515032643700263630ustar00rootroot00000000000000
Delete To delete a file in Geeqie select Ctrl D File Delete . Delete is also available in the context menu of all images and files. If Enable delete key is enabled in Options, pressing the Delete key can also be used to delete files. The behavior when starting a delete operation depends on the Confirm file delete option in Options. If the option is enabled a dialog will appear to confirm the operation, if it is not enabled the files will be deleted without further interaction. In all cases if the file is unable to be deleted you will be notified by a dialog.
Confirm delete dialog The dialog that appears when delete confirmation is enabled will show the file or files to be deleted. To delete the file press Enter or activate the Delete button. Pressing Escape or activating the Cancel button will close the dialog and abort the operation. When deleting multiple files, the dialog will include two arrow buttons to step the image preview through the list of files to be deleted. Initially the preview will be blank, activate the right arrow to display the first file. The dialog will also display the status of the Safe Delete feature. Use this to determine if a file to be deleted will be immediately lost, or if the file can possibly be recovered from the Safe Delete folder. If a file is unable to be deleted, a dialog will appear to notify you. If multiple files were selected and any remain, the dialog will include a Continue button, activating this button or pressing Enter will delete the remaining files. Pressing Escape or activating the Cancel button will close the dialog and the remaining files will not be deleted.
Safe Delete Geeqie includes a feature to temporarily store deleted files in a selected folder, to use this feature enable Safe Delete on the advanced tab of the preferences dialog.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageManagementPlugins.xml000066400000000000000000000043401515032643700265750ustar00rootroot00000000000000 Plugins Geeqie provides the facility to execute external commands - any external command may be called via this facility. Actions may be performed on a single file, or on a set of selected files. Plugins can do anything from running simple operations like symlink to activating fully featured programs like Gimp. Nor does the action have to be performed on files - you may, for instance, configure a plugin to download images from your digital camera. To perform these actions, Geeqie uses standard desktop files. It is not necessary to understand the details of desktop file specifications because the dialogue presents you with an easy-to-use template. This dialogue is accessed via Edit Configure Plugins . Plugins will appear in the menu Plugins , unless specified otherwise in the desktop file. Commands that are set to display their output in a window will show a dialogue when the command is executed. The Result dialogue will display the command's text output. If the plugin command will result in multiple runs of the same command for each file, you can use the Stop button to stop Geeqie from executing the command for remaining files. Once all commands have completed, or if the Stop button was pressed and the pending command has completed, you can use the Close button, or press Escape , to close the Result dialogue. The Result dialogue can not be closed while a command is still running. The supplied standard plugins are described in the Reference section. BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageManagementRename.xml000066400000000000000000000156421515032643700263720ustar00rootroot00000000000000
Rename To rename a file in Geeqie select Ctrl R File Rename . Rename is also available in the context menu of all images and files. When renaming a file, a dialog will display allowing entry of the new name for the file. The dialog will be different depending on the number of files selected to be renamed. A simple dialog will appear when renaming a single file, however when renaming multiple files the dialog will include a list of the file to be renamed and additional options.
Rename single file dialog The dialog that appears when renaming a single file includes an image of the file, an entry to type the new name of the file, a Rename button, and a Cancel button. Type the new name into the text entry and press Enter or activate the Rename button to rename the file. Press Escape or activate the Cancel button to close the dialog and abort renaming the file. When renaming a file and the new name already exists on the file system a dialog will appear showing the renamed and existing files. To overwrite the existing file press Enter or activate the Overwrite button. Press Escape or activate the Cancel button to close the dialog abort renaming the file.
Rename multiple files dialog The dialog that appears when renaming multiple files includes the list of files to be renamed, a preview image of the active file, an entry to enter the new file name, an auto rename check box, a Rename button, and a Cancel button. Manually enter new file names To manually enter the new name of each file, the active file will be displayed in the image preview and it's original name will be displayed above the text entry. To rename the file type the new name and press Enter or activate the Rename button. When a file is successfully renamed it will be removed from the list and the next one will become the active file. After all files have been renamed, the dialog will close. Files do not have to be renamed in the order that they appear in the list, highlighting a name in the list will make it become the active file. When renaming a file and the new name already exists on the file system a dialog will appear showing the renamed and existing files. To overwrite the existing file press Enter or activate the Overwrite button. Press Escape or activate the Cancel button to return to the original rename dialog, the file that prompted the overwrite dialog will remain active. Automatic renaming of multiple files To automatically rename the files in the list, enable the Auto rename check box. The dialog will change to batch mode for numerical naming of files. The file name list will change to include a preview column that will show the resulting name of each file. The text entry will change to three entries; the first represents the text that appears in the new names before the number, the second will be the start number to use when incrementing the file number, and the third represents the text to append to the name after the number. The end text should include the file name extension, therefore batch renaming multiple types of files (those with different extensions) all at once is not recommended. The padding number can be used to change the minimum length of characters to use for the number portion of the new name. When the file number results in fewer characters than the padding size, the result will be padded with leading zeros to fill the remaining space. For example if padding size is 3, a file with the number 24 will appear in the file name as “024”. The order of the file list can be changed by dragging a name to the desired location within the list. The preview column will update to reflect the new order. When the preview of new names is satisfactory, press Enter or activate the Rename button to rename the files to match the name in the preview column. Press Escape or activate the Cancel button to close the dialog and abort the rename operation. If the resulting new names match any existing files, a warning dialog will notify you. The rename dialog will remain so that you can select a different set of names. Formatted renaming of multiple files Formatted rename permits file to be renamed in a pre-determined way whilst still including the original file name. In the Format box any alpha-numerics can be entered, but the special character * will be replaced by the current filename. One or more # characters can be included, and will be replaced by an incrementing number. The current file extension is automatically appended to new new file name. The order of the file list can be changed by dragging a name to the desired location within the list. The preview column will update to reflect the new order. When the preview of new names is satisfactory, press Enter or activate the Rename button to rename the files to match the name in the preview column. Press Escape or activate the Cancel button to close the dialog and abort the rename operation. If the resulting new names match any existing files, a warning dialog will notify you. The rename dialog will remain so that you can select a different set of names.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageMarks.xml000066400000000000000000000046641515032643700242450ustar00rootroot00000000000000
Marking Images Marks are intended as a temporary method of grouping and filtering sets of images. are intended as a permanent method of identifying sets of images, and to this end it is possible to link any mark with any keyword. The Select menu gives access to the marks operations of setting, filtering and intersection. There are 10 individual marks, any of which can be associated with an image simply by pressing the 0 to 9 keys on the keyboard, where key 0 represents mark 10. If the Show Marks menu has been selected, each image will have a set of 10 check-boxes displayed adjacent to it in the file pane in both icon and list mode. In addition a set of 10 check-boxes will be shown at the top of the files pane. Clicking any of these will filter the displayed list. Moving the mouse over any of the check-boxes at the top of the files pane will show mnemonic text for that mark. The text can be modified by right-clicking on the check box. If the is being displayed, the currently set marks for the image are shown. It is not necessary to include an entry into the overlay template for this to happen. A keyword can be associated with a single mark by right-clicking on the keyword in the sidebar panel. When a meta-data write operation for a file is triggered either manually or as defined in , the keyword data indicated by the current set of mark-to-keyword links will be written. The associations between keywords and marks is preserved when Geeqie is shut down. The current setting of marks can also be optionally saved - the setting is in the Behavior tab of Preferences .
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImagePresentation.xml000066400000000000000000000010211515032643700256230ustar00rootroot00000000000000 Image Presentation Geeqie can be used to display a set of images, showing each image for a period of time before changing to the next image. Images can also be set to fill the entire screen. BestImageViewer-geeqie-33ba319/doc/docbook/GuideImagePresentationFullscreen.xml000066400000000000000000000045211515032643700276560ustar00rootroot00000000000000
Full Screen Geeqie allows for the image pane to be expanded to fill the entire screen, this is referred to as full screen.
Turning on full screen Full screen can be activated in a number of ways: F View Full screen From a context menu - right click an image pane, and select Full screen .
Turning off full screen To return to the normal view: From the keyboard - press F or Esc to stop full screen. From a context menu - right click the image pane, and select Exit full screen . From the menu bar - the menu bar may be visible when using multiple monitors, select F View Full screen
Configuring full screen Full screen behavior and location can be adjusted on the Windows tab of the preferences dialog.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImagePresentationSlideshow.xml000066400000000000000000000150011515032643700275100ustar00rootroot00000000000000
Slide Show The image pane can be set to automatically change the displayed image after a period of time, in Geeqie this is referred to as a slide show.
Starting a slide show A slide show can be started in a number of ways: From the keyboard or mouse S View Toggle slide show From a context menu - right click an image pane, and select Start slide show , or Stop slide show ; the text will change depending on the state of the current slide show.
Stopping a slide show An active slide show can be stopped by using the same functions available to start one, as they work like a toggle switch. If slide show repeat is not enabled in the Preferences dialog , the slide show will stop when the last image in the sequence is displayed. Any action that changes the image pane to a new image will stop the active slide show, with the exception of the methods discussed in Slide show sequence navigation .
Slide show status The main window status bar can be used to determine when a slide show is active, Slide show will be displayed next to the file count field. An individual Image Window can also display a slide show, however the status will not be immediately visible. To determine the slide show status in an image window, open a context menu by right clicking or using the menu key, the slide show menu item will reflect the slide show status; if Start slide show is displayed, no slide show is active, conversely if Stop slide show is displayed a slide show is active. When a Slide show is paused, the main window status bar will display Paused instead of Slide show . Likewise, the image context menu will display Pause slide show or Continue slide show , depending on the current state.
Pausing a slide show An active slide show can be paused in two ways: From the keyboard - press the P key while a slide show is active. From a context menu - right click the image pane displaying the slide show, and select Pause slide show , or Continue slide show depending on the current slide show state.
Selecting the images to include in a slide show When a single image is selected, all images in the current folder are included in the slide show. The sequence will begin with the current image; however if random slide shows are enabled, the sequence will begin with a random image from the list. To only include some images in a slide show, use multiple selection to select the images to include before starting the slide show. An image collection can be used as the list of images, to do this drag an image from a collection window onto the image pane. Starting a slide show will then include the images from that collection. So far, the methods described are for slide shows in a main window, in an Image Window , the slide show will use all images referenced by that window.
Recursive slide show In the main window, a recursive slide show can be started from a folder's context menu; the folder's right click menu will include two slide show options: Slide show: This will start a slide show that includes all images in the selected folder. Slide show recursive: The slide show will include all images in the selected folder, and all images in the folders that are contained within the selected folder.
Slide show sequence navigation When a slide show is active, functions that normally change the image forward and backward can be used to step through those contained in the slide show.
Configuring a slide show The options that control the behavior of slide shows are located on the General tab of the options dialog.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageSearch.xml000066400000000000000000000045001515032643700243620ustar00rootroot00000000000000 Search and Select Geeqie provides comprehensive set of search methods, including not only the standard functions such as file date or size, but also image similarity. There is a duplicate file finder, which uses search parameters such as image dimensions or checksum. Two sets of image files may be compared. Geeqie also has a set of temporary "marks" or "tags" which may be allocated to any image as an aide to file organising.
Caching Data For Searches Searching large numbers of files for similarity can take significant cpu time. Part of this is the time to compute the similarity matrix for each file. If the Cache Thumbnails option is selected in Preferences/General, the similarity matrix, checksum, image size and Exif Date may also be cached. This will reduce the time needed for future searches. If you frequently search on similarity and your images are in a tree arrangement under a single point, the Create file similarity cache from the top of the tree will generate the similarity data for all images. Similarity data are stored in a folder hierarchy that mirrors the location of the source images. The data have the same name as the original appended by the file extension .sim. The root of the hierarchy is: $XDG_CACHE_HOME/geeqie/thumbnails/ or, if $XDG_CACHE_HOME is not defined: $HOME/.cache/geeqie/thumbnails/
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageSearchFindingDuplicates.xml000066400000000000000000000247351515032643700277130ustar00rootroot00000000000000
Finding Duplicates Geeqie provides a utility to find images that have similar attributes or content. To display a new Find Duplicates Window select File Find duplicates .
Adding files to be compared Add files to be compared using drag and drop. Drop files or folders onto the Find Duplicates window to add them to the list of files to compare. When one or more folders are dropped onto the window a menu will appear allowing you to choose the desired action: Add contents The contents of dropped folders will added to the window. Add contents recursive The contents of dropped folders and all sub folders will be added to the window. Skip folders Ignore folders contained in the drop list. When files are added to the window, the comparison is restarted to include the new files. Symbolic links to folders will be followed, but symbolic links to files will be ignored. Only actual files will be tested.
Comparison methods The attribute to use for two images to match can be selected with the Compare by: drop down menu. Each method is explained below: Name The file name. Name case-insensitive The file name but ignoring case. Size The file size. Date The file date. Dimensions The image dimensions. Checksum The MD5 file checksum. Path The complete path to file. Similarity (high) Very similar image content. Preset to 95%. Similarity Similar image content. Preset to 90%. Similarity (low) Slightly similar image content. Preset to 85%. Similarity (custom) The percentage value to used to consider two images a match is configured in the spin box at the bottom of the window. Setting a value to less than 85 is not likely to be useful. Name ≠ Content Show images with the same name but different content. Because pairs of files are being compared, when there are multiple hits care should be taken when analyzing the results. Name case-insensitive ≠ Content Show images with the same name, ignoring case, but different content. Because pairs of files are being compared, when there are multiple hits care should be taken when analyzing the results. Show all Do not compare. Show all images.
Results list Files that match with the selected comparison method will appear in the list. Matching files are grouped in alternating color. The order of the result list can be changed by clicking on the column header. This will re-order the images within each set. When comparing by image content similarity, the matching sets will be sorted by order of rank starting with the files that are most similar. A context menu is available for the result list by right clicking the mouse or pressing the Menu key when a row has the focus. Groups in the results list may be selected by using the keyboard. Refer to Keyboard Shortcuts. The selection can be changed using the keyboard and mouse the same as in a file pane of the main window. The image Dimensions column of the result list will only contain dimension information when comparing by dimensions, or when the data is easily available from memory or has been read from the cache.
Status bar Along the bottom of the Find Duplicates window is an area that displays the count of files contained in the window, and the number of files in the result list. The status bar will also display the status of an active compare operation using the progress bar. A compare operation involves 2 or 3 stages, depending on the type of comparison. These are the stages in order: If necessary, extra data is read into memory for the comparison stage and the progress bar will indicate this stage with text such as “Reading dimensions...”, “Reading checksums...”, or “Reading similarity data...”. The images are compared using the selected method, the progress bar will indicate this stage with the text “Comparing...”. The results are sorted for display, the progress bar will indicate this stage with the text “Sorting...”. Stage 1 is only used for the Dimensions, Checksum, and Similarity compare methods. If the time to complete a stage will be significant, an estimated time to completion will also be displayed in the progress bar. The estimated time only refers to the current stage, other stages are not included in the estimate. The time estimate is displayed using the format MINUTES:SECONDS.
Thumbnails Thumbnails can be displayed beside each image in the result list by enabling the Thumbnails check box.
Ignore Orientation When selected and a similarity compare is being used, the images are checked against 4 rotations: 0°, 90°, 180°, 270°, plus flip and mirror.
Sort The normal sort order is for groups (in the case of Similarity checks) with the highest number of near-100% matches to be at the top of the list. If this box is checked, groups with the lowest number of matches are placed at the top of the list.
Compare two file sets Sometimes it is useful to compare one group of files to another, different group of files. Enable this check box to compare two groups of files. When enabled, a second list will appear and files can be added to this list using the same methods for the main list. When comparing two file sets the results list will display matches between the two lists. For each match group, the first file is always from the main group, and the remaining files are always from the second group.
Drag and Drop Drag and drop can be initiated with the primary or middle mouse buttons. Dragging a file that is selected will include all selected files in the drag. Dragging a file that is not selected will first change the selection to the dragged file, and clear the previous selection.
Image Data Window Ctrl+Shift+Right Mouse click : Use this to display a dialog containing the data stored for the clicked image file. This is usually only useful for debugging purposes.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideImageSearchSearch.xml000066400000000000000000000327701515032643700255220ustar00rootroot00000000000000
Search Window Geeqie provides a utility to find one or more images based on various parameters. To display a new Search Window press F3 or select Search from the File menu. To start a search activate the Find button or press Ctrl + Enter . A search in progress can be stopped by activating the Stop button or press Ctrl + Enter . The progress of an active search is displayed as a progress bar at the bottom of the window. The progress bar will also display the total files that match the search parameters, and the total number of files searched. When a search is completed, the total number of files found and their total size will be displayed in the status bar.
Search location One of several locations can be chosen as the source to use in the search. Path The search will include files located in the selected folder, enable the Recurse check box to include the contents of all sub folders. Comments This option is only for use with GqView legacy metadata. The search will include all files that have a keyword or comment associated to it. Only keyword and comment associations stored in the user's home folder are included in this search type. Results The search will include all files currently listed in the results list. Use this to refine a previous search. Collection The search will include all files in the selected collection.
Search parameters Each search parameter can be enabled or disabled with the check box to its left. For a file to be a match, all enabled parameters must be true. File If "name is" is selected, the search will match if the text exactly matches the file name. If "name contains" or "path contains" is selected, the search will match if the entered text appears within the file name or path. The text comparison can be made to be case sensitive by enabling the Match case checkbox. The search can be restricted to symbolic links by enabling the Symbolic Link checkbox. If "contains" or "path contains" is selected, Perl Compatible Regular Expressions are used. File size The search will match if the file size on disk is equal to, less than, greater than, or between the entered value, depending on the method selected from the drop down menu. The between test is inclusive - for example a file of size 10 will match if the size parameters are between 10 and 15. File date The search will match if the file date is equal to, before, after, or between the entered date, depending on the method selected from the drop down menu. The between test is inclusive, for example a file with date of 10/04/2003 will match if the date parameters are between 10/04/2003 and 12/31/2003. For convenience, the button displays a pop up calendar to enter the date. One of four date types may be selected. They are described in the Reference section . If an image does not have an exif date, it will default to 01 January 1970. Image dimensions The search will match if the image dimensions are equal to, less than, greater than, or between the entered values, depending on the method selected from the drop down menu. The between test is inclusive. The image dimensions test is simple, both width and height must be within the allowed values for a match. Image content The search will match if the image contents are similar within the percentage value, inclusive. This uses the same test and data that is used to determine image similarity when Finding Duplicates . The entry is for entering the path for the image to use in this test. Keywords The search will match if the file's associated keywords match all, match any, or exclude the entered keywords, depending on the method selected from the drop down menu. Keywords can be separated with a space, comma, or tab character. Comment The search will match if the file's Comments field contains the entered pattern. Perl Compatible Regular Expressions are used. Exif The search will match if the file's Exif Tag contains the pattern entered in the Value box. Perl Compatible Regular Expressions are used. The value checked will be against the formatted value e.g. for focal length search for 67.5 mm and not 675/10. See also pre-formatted tags Geocoded position The search will match if the file's GPS position is less than or greater than the selected distance from the specified position, or is not geocoded, depending on the method selected from the drop down menu. The search location can be specified by Type in a latitude/longitude in the format 89.123 179.123 Drag-and-drop a geocoded image onto the search box If Geeqie's map is displayed, a left-click on the map will store the latitude/longitude under the mouse cursor into the clipboard. It can then be pasted into the search box. Copy-and-paste (in some circumstances drag-and-drop) the result of an Internet search. In this last case, the result of a search may contain the latitude/longitude embedded in the URL. This may be automatically decoded with the help of an external file:- $HOME/.config/geeqie/geocode-parameters.awk See Decoding Latitude and Longitude for details on how to create this file. Class The search will match if the file's class is, or is not, one of the following types. Unknown Image Raw Image Video Document Metadata Unknown Broken (Of class Image, Raw Image, Video, or Document, but Geeqie cannot display an image) Marks The search will match if the file does or does not have a mark attached to it. Refer to Marking Images .
Results list Files that match the parameters of the search are shown in the list. By default they are displayed in the order that they are found. To sort the results list by a column, activate or click the column title. Activating a column that is already used to sort the list will toggle between increasing and decreasing sort order. A context menu is available for the result list by right clicking the mouse or pressing the Menu key when a row has the focus. The Keyboard Shortcuts available are listed here. The image Dimensions column of the result list will only contain dimension information when dimensions are included in the search parameters.
Status bar At the bottom of the search window is an area that includes the following items from left to right: Thumbnails Enable this check box to display a thumbnail next to each image in the results list. File count display Displays the total count of files in the results list, and their size on disk. The count of selected files will appear in parenthesis. Search progress When a search is active, the text “Searching...” will appear here. Two numbers in parenthesis will also be displayed, the first number is the number of files that match the search parameters and the second number is the total number of files that were searched. Find Activate the find button to start a search with the selected parameters. Stop Activate the stop button to end a search that is in progress.
Drag and Drop Drag and drop can be initiated with the primary or middle mouse buttons. Dragging a file that is selected will include all selected files in the drag. Dragging a file that is not selected will first change the selection to the dragged file, and clear the previous selection.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideIndex.xml000066400000000000000000000072171515032643700232710ustar00rootroot00000000000000 The Geeqie User Manual Geeqie is an image viewer for Linux and compatible systems. 2004 John Ellis 2008-2024 The Geeqie Team The Geeqie Team John Ellis Geeqie Project geeqie@freelists.org Feedback Comments and general help: geeqie@freelists.org Bugs and Feature Requests: Geeqie Issues Website: geeqie.org 0.1 2004-01-01 John Ellis Gqview Project 0.2 2016-05-30 Colin Clark The Geeqie Team 0.3 2024-09-16 Colin Clark The Geeqie Team BestImageViewer-geeqie-33ba319/doc/docbook/GuideIntroduction.xml000066400000000000000000000110231515032643700246710ustar00rootroot00000000000000 Introduction Geeqie is an image viewer that makes navigation of images easy. Images can be viewed as thumbnails, in multiple windows or in full screen mode. Geeqie is an image manager, with complete copy, move, rename, and delete functions available at the press of a button. Extensive image collections can be easily handled using a combination of Geeqie's flexible Keyword facility and powerful Image searches. Image collections can be refined with a duplicate image finder. Geeqie is ideal for making presentations. A slide-show feature is built in, and Geeqie can be remotely controlled either via command line scripts or an infra-red device. Information such as f-stop, shutter speed and descriptive text can be overlaid onto the image display. There is no need to import images into Geeqie - simply point Geeqie to a folder containing images, and your data will be displayed. Geeqie is an image viewer, not an image editor. However, Geeqie can be configured to call external image editors such as the Gimp, resulting in a very powerful combination.
Features
Basic Features
Advanced Features Image Search based on many parameters Find image duplicates based on image content View IPTC, and view and edit Exif and XMP data stored in images Simple Sort Manager to quickly sort a folder of images into other folders Rename images in bulk Overlay the image with a panel showing user-definable data Add XMP keywords to images, and recall those images with the search function Geeqie is a very configurable application “An application that displays images.” - This was, and still is, the primary goal of Geeqie. Over time image management features have been added, but the core purpose of Geeqie remains the same.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideLicence.xml000066400000000000000000000014011515032643700235510ustar00rootroot00000000000000 Licence The Geeqie program is released under the "GNU General Public License", the complete GNU GPL text can be found in the COPYING file included with each Geeqie release. This Geeqie documentation is released under the . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindow.xml000066400000000000000000000120021515032643700242620ustar00rootroot00000000000000 Main Window Layout window Title bar Tools Main menu Main toolbar Location bar Shortcuts pane Folders pane Files pane Image pane Info sidebar (optional) Sort manager (optional) Status bar Status toolbar
The Geeqie main window is designed for quick and easy navigation of images. The window consists of three regions: the , the , and the (optionally bordered by ) , all bordered by and . Multiple instances of the main window may be started via the Ctrl N Windows New Window menu item, and the of each may be individually configured in the dialogue. If several instances of the main window are open, they may be closed individually or simultaneously. If Ctrl Q File Quit is pressed, all windows will be closed. When Geeqie is re-opened the same windows will be re-displayed. If Ctrl W Windows Close Window is pressed, only that window will be closed unless that window is the "main" window, in which case all windows will be closed. When Geeqie is restarted only the main window will be displayed. The main window may be recognised by the word "Geeqie" in the title bar, as opposed to other windows which have the word "geeqie". Several window layouts may be defined and displayed at any time, as described in the Windows menu .
BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindowFilePane.xml000066400000000000000000000227741515032643700257070ustar00rootroot00000000000000
File Pane The file pane displays the images contained in the active folder. It has two modes of display, allows multiple selection, and can initiate drag and drop operations. A context menu can be displayed by clicking the right mouse button on the file pane or pressing the menu key while the file pane has the focus.
List view This mode can be enabled by selecting List from the View menu, pressing Ctrl + L, or unselecting View as icons from the context menu. The list view mode displays images in a standard vertical list. Three columns provide the file name, size in bytes, and the time the contents were last modified. Thumbnails can be displayed next to each file in the list, to toggle thumbnails on or off by selecting Thumbnails from the View menu, pressing T, clicking on the tool bar, or selecting Show thumbnails from the context menu. Grouped sidecar files are represented by the main file with an expander. Clicking on the expander shows sidecar files.
Icon view This mode can be enabled by selecting Icons from the View menu, pressing Ctrl + I, or selecting View as icons from the context menu. The icon view mode displays images as thumbnails in a grid, and by default a file name below each thumbnail. The file name displayed below each thumbnail can be turned on or off by selecting Show filename text from the context menu. Grouped sidecar files are represented by the main file. For accessing sidecars switch to List mode.
File Filter A filter box can be opened by selecting Show File Filter from the View menu. Characters you type into this box will be used for pattern matching to select the files displayed. Regular expressions are used in this field. For basic pattern matching "JPG" will match any filename containing those characters. If you type a newline, the text will be saved in the dropdown box list. The last 10 items are saved. To delete an item, select it from the drop-down list, click on the text box to select the text, and then press Delete followed by Enter . By default filtering is case-insensitive. A checkbox labelled "Case" permits the filter to be made case-sensitive. Additionally a drop-down box permits any of the file Classes to be selected or deselected from the viewed list. Also additionally a drop-down box permits any of the file Rating to be selected or deselected from the viewed list.
Multiple selection It is possible to select more than one image from the file pane. Multiple files can be selected with several methods:
Mouse Ctrl + Primary mouse button will add or remove the file from the selection. Middle mouse button will toggle selection of the file. Shift + Primary mouse button will select all images between the clicked and focused image, or it will unselect all those images if the clicked image is already selected. Shift + Ctrl + Primary mouse button works as Shift + Primary mouse button, but will not change the selection of files outside the region between the focus and clicked image.
Keyboard Ctrl + Arrows will move the focus without changing the selection. Ctrl + Space will toggle selection of the focused image. Shift + Arrows will select a region of images. Shift + Ctrl + Arrows works as Shift + Arrows, but will not change the selection of files outside the current focus region. To select all files press Ctrl + A, or to unselect all image press Ctrl + Shift + A. These operations are also available from the Edit menu as Select all and Select none . The current number of selected images and their total size will be indicated in the File list section of the status bar .
Sorting The order of the images can be changed by clicking the sort area of the status bar or from the context menu. The sort methods are by file name, number, file date, or file size. The number method will sort file names by their natural order, for example files with names of file_10, file_12, and file_9 will appear in order file_9, file_10, and file_12. Selecting the ascending menu item will toggle between increasing and decreasing sort order.
Context menu Right clicking the mouse or pressing the menu key while the file pane has focus will display a menu. The menu functions will perform the same as those that match the window's menu bar , however a few functions are unique to the context menu: View in new window Opens a new window containing a list of the currently selected images. Sort Changes the sort order of file pane. View as icons Toggles between the list and icon view modes. Show thumbnails Toggles display of thumbnails in the list view display mode. Show filename text Toggles display of file names in the icon view display mode. Show star rating Toggles display of the "star rating" (Xmp.xmp.Rating).
Drag and Drop Drag and drop can be initialized with the primary or middle mouse buttons in the file pane. Dragging a file that is selected will include all selected files in the drag. Dragging a file that is not selected will first change the selection to the dragged file, and clear the previous selection.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindowFolderPane.xml000066400000000000000000000421541515032643700262350ustar00rootroot00000000000000
Folder pane The folder pane contains the menu bar, tool bar, path entry, and folder list.
Tool bar The tool bar includes buttons for often used operations. The tool bar can be hidden or shown by selecting Hide toolbar from the View menu. Tool bar Icon Tooltip Description Show thumbnails This button is active when the file list is in list view mode, and activating it will toggle the display of thumbnails. Back Move back in folder history Up Move up one folder Home Change the main window to display the contents of the user's home folder Refresh folder display Refresh the contents of the file pane Zoom in Increase the image display size. Zoom out Decrease the image display size. Zoom to fit This will size the image to fit within the window Zoom 1:1 Restore zoom to the image's original size. Preferences Displays the Preferences window . Float file list Toggle the folder pane, file pane, and status bar between the main window and a secondary window.
Path entry This displays the active folder of the window and allows typing a location. A folder or file can be typed into the entry to quickly change to a desired location or image, the main window will update after pressing the Enter key. Tab completion is also available in the path entry. Tab completion uses the Tab key, press the Down key to move the focus from the entry. Next to the path entry is a button with a down arrow, clicking this will display a drop down list containing the most recent locations viewed. The list is ordered such that the most recent location is at the top. Selecting a location from the drop down list will change the window to display the location. An Internet URL may be typed or drag-and-dropped into this field. The file will be downloaded to a temporary file and displayed.
Folder list This pane consists of two sections: a folder pane and a shortcuts pane. The shortcuts pane may be hidden or revealed simply by moving the vertical divider to or from the extreme left.
Folders This displays a list of sub folders contained in the active folder, or a tree that includes all folders in the file system. A context menu can be displayed by clicking the right mouse button on the folder pane or pressing the menu key while the folder pane has the focus
Shortcuts This is a list of shortcuts (bookmarks) to commonly used folders, images and collections. A context menu will appear by right clicking on an item, or pressing the menu key when the item has the focus. Folders or images can be added to the list by activating the Add button at the bottom of the pane, or dragging a folder or image onto the list. Collections may be added by opening the O File Open collection... dialog and dragging a collection onto the list. To edit an item select Properties from its context menu. A dialog will appear allowing the Name, Path, and Icon for the item to be changed. Select OK to close the dialog and apply the changes, or Cancel to close the dialog and discard the changes. To change the order of the list, select Move up or Move down from the item's context menu. To move an item with the keyboard move the focus to that item, then press Shift Up or Shift Down to move the item. To remove an item from the list select Remove from it's context menu.
List view This mode can be enabled by from the View menu, from the context menu, or pressing Ctrl + T . The list view mode displays sub folders contained in the active folder in a standard vertical list. The parent folder can be selected with the folder named “..”.
Tree view This mode can be enabled by selecting Tree from the View menu, pressing Ctrl + T , or selecting View as tree from the context menu. The tree view mode displays all folders in the file system, starting with the root folder and branching out to include sub folders. A folder branch can be expanded or collapsed by clicking the expander next to each folder icon, or by pressing the respective + or - keys when the folder branch has the focus.
Sorting The order of the folder names will match the order selected for the file pane. Sort order can be changed by clicking the sort area of the status bar or from the context menu of the file pane.
Context menu Right clicking the mouse or pressing the menu key while the folder pane has focus will display a menu. The menu functions will perform the same as those that match the window's menu bar , however a few functions are unique to the context menu: Context menu Icon Text Description Up to parent This will change the window to display the contents of the parent folder. Slide show Start a slide show that contains all images in the selected folder. Slide show recursive Start a slide show that contains all images in the selected folder, and all images in the sub folders of that folder. Find duplicates This will open a new find duplicates window containing all images in the selected folder. Find duplicates recursive This will open a new find duplicates window containing all image in the selected folder, and all images in the sub folders of that folder. New folder Creates a new folder that is a sub folder of the selected folder. Rename Renames the selected folder. Warning: Renaming a folder will not update metadata, such as keywords, or cached thumbnails for images contained in that folder, the data will be lost. Delete Delete file or folder Copy path Copy selected item-path(s) to clipboard The clipboard used is selected here. . Each data item copied will be enclosed in quotes. Copy path unquoted Copy selected item-path(s) to clipboard. The data will not be enclosed in quotes. View as list Switches to list tree mode of the folder pane. View as tree Switches to tree mode of the folder pane. Show hidden files Switches to list tree mode of the folder pane. Refresh Switches to tree mode of the folder pane.
Drag and drop Image files can be dropped onto folders displayed in the folder pane. A menu will appear allowing you to select to move or copy the dropped images into the target folder. The list will automatically scroll up or down when the drag pointer is near the respective top or bottom of the list. When in tree mode, hovering over a folder for a brief period of time will expand that folder. The folders can used as a drag source for drag and drop, for example to add images in a folder to a collection window. However drag and drop can not be used to move or copy folders in Geeqie. Using Shift key while dragging is a shortcut to move action. Menu will not appear but move will occur. Using Ctrl key while dragging is a shortcut to copy action. Menu will not appear but copy will occur.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindowImagePane.xml000066400000000000000000000230371515032643700260430ustar00rootroot00000000000000
Image Pane The image pane is the region of the main window that displays the selected image. The image pane allows adjustment of display size and orientation; it also provides several methods to manipulate the image with the mouse and keyboard.
Image display The image is drawn to the screen as it is decoded from disk. The image can be panned and zoomed while it is still loading. Image adjustment operations for rotation, mirror, and flip will delay until the image is completed. The adjustment queue will remember one operation and will retain the most recently requested function, which will be performed once the image has finished loading. The quality of the image, especially when using the zoom feature, is dependent on the settings that are available on the Image tab of the preferences dialog. To increase the speed of loading the next image when navigating the image list in sequence, enable the Preload next image option.
Image Overlay An image overlay can be turned on and off by repeatedly pressing I . This overlay can either display image data such as f-stop, shutter speed and descriptive text, or a histogram. Data the overlay will always show is: Marks , if they are selected If the histogram is being displayed, K will switch the histogram between colors, and J will toggle between a linear or logarithmic histogram. Data the overlay displays is customizable through the Image Overlay Template option in the Windows tab in the Preferences dialog.
Image panning and manipulation When the image size is larger than the image pane, the visible region can be changed with the keyboard or mouse. The keyboard can also be used to adjust the orientation of the image.
Keyboard and mouse Keyboard Shortcuts describes how you may manipulate the image displayed. The rotation, mirror, and flip functions do not change the image data, they merely change the image as you view it. You may store the modified orientation into metadata manually with Edit Orientation Apply the orientation to image content , or this may happen automatically if Write altered image orientation to the metadata is set in Metadata Options
Mouse Press the left mouse button on the image and hold it, then move the mouse to pan the image in the desired direction. Releasing the mouse button will stop the panning operation. The mouse wheel can also be used to scroll the image when holding down the Shift key The mouse wheel behavior for scrolling and image step can be swapped with the "Mouse wheel scrolls image" option located on the Behaviour tab of the preferences dialog. . To scale the image size hold down the Ctrl key and scroll the mouse wheel up to zoom in, or down to zoom out.
Smooth Scroll To start the smooth scroll function hold down the Control key and click the left mouse button. An icon will appear at the location of the mouse pointer, the mouse can then be positioned to pan the image. The image will pan in the direction of the mouse pointer relative to the icon. The pan speed will increase in proportion to the distance that the pointer is from the center of the icon. To end the smooth scroll function click the left mouse button within the image pane.
Mouse Wheel Mode A single click on the mouse middle button will toggle the function of the mouse wheel between "change image" and "change zoom". This option cannot be used if either the Preference Mouse wheel scrolls image or Navigation by left or middle click on image are selected. In Split View mode, each window can be clicked individually so that, in Quad View for example, Connected Zoom can be on 2, 3 or all 4 windows.
Context menu Right clicking the mouse or pressing the menu key while the image has the focus will display a menu. The menu functions will perform the same as those that match the window's menu bar , however a few functions are unique to the context menu: View in new window Opens a new window containing a second copy of the current image. Pause slide show, Continue slide show Controls the pause state of an active slide show, the text of the menu will change to reflect the action that will be performed. Copy image to clipboard Copy the pixbuf to the clipboard. This may be used by programs such as Gimp.
Drag and Drop Files and folders can be dropped onto the image pane, dropping a file will display the file and dropping a folder will change the main window to display the contents of the folder. When dropping multiple items on the image pane, only the first item in the list will be used, all additional items will be ignored. A drag and drop operation can be initiated from the image pane with the middle mouse button, the dragged item will contain the file path of the displayed image.
Displaying images side by side Using View Split item from the main menu, image pane can be split into either two, three or four panes, allowing one to display images side by side. You may use drag'n drop to change images in each pane. Connected zoom is possible through the View Zoom Connected Zoom menu item. Zoom is then applied to all displayed images. Connected scrolling is also possible using Shift and primary mouse button. As a general rule, hotkeys and mouse without shift affects just one image and with shift all images.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindowLayout.xml000066400000000000000000000050631515032643700254710ustar00rootroot00000000000000
Layout The main window consists of four areas, the folder pane , file pane , image pane , and the status bar . The status bar is always at the bottom of the window. The three remaining areas, or panes, can be arranged and sized by the user.
Selecting the location of each pane The arrangement of the folder, file, and image pane is selected on the dialogue.
Changing the size of a pane Between the panes of the main window are two dividers that can be moved with the mouse to adjust the size of each pane. Press and hold the primary button, then move the divider to the desired location and release the button.
Folder pane The folder pane contains the menu bar, tool bar, path entry, and folder list. The list can be set to display the sub folders of the active folder or a tree that starts with the root folder and contains all folders in the file system.
File pane The file pane lists the images contained in the active folder. The file pane can be set to display as a vertical list or an icon view.
Image pane The image pane is where the active image is displayed.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindowMenus.xml000066400000000000000000001551221515032643700253050ustar00rootroot00000000000000
Menus This section describes the functions of each item on the menu bar in the Geeqie main window.
File Menu Ctrl N Open File Opens a file using the system default dialog. A limited range of file types may be displayed in the preview pane. C New collection Opens a new collection window, the new collection will be empty. O Open collection Displays a dialog to open a collection stored on disk, the selected collection will then appear in a new window. Open recent This menu item lists the recently active collections, selecting an item from the list will open that collection in a new window. The most recent item will appear at the top of the list. Maximum number of entries can be modified through Open recent list maximum size option. F3 Search… Opens a new Search window. D Find duplicates... Opens a new Find Duplicates window. Shift P Print.. Opens a print dialog. Ctrl F New folder… Creates a new folder in the current path. Ctrl C Copy… Opens a dialog to select a destination to copy the currently selected files. Ctrl M Move… Opens a dialog to select a destination to move currently selected files. Ctrl R Rename… Renames the current file selection. Open With... Calls the standard GTK application chooser for a single file. Ctrl D Delete… Deletes the current file selection. Symlink Creates a symbolic link. This is implemented via a plugin . Ctrl W Close window Closes the window containing the menu, if the window is the last main window Geeqie will quit. Ctrl Q Quit Quits the Geeqie application, if collections or image metadata have been changed but not saved, the user will be prompted for confirmation.
Go menu The Page commands are for files which contain multiple images e.g. .tiff files Home First Image Goes to the first image. Backspace Previous Image Goes to the previous image. Space Next Image Goes to the next image End Last Image Goes to the last image Image Back Each image you view is appended to a chain. You may traverse forwards and backwards through this chain using this and the following key. Move to the previous image in the chain. Image Forward Move to the next image in the chain. Back Back Goes to the previous folder Home Home Goes to the the Home folder as defined in Ctrl Home First Page Goes to the first page. Ctrl End Last Page Goes to the last page. Ctrl PageUp Previous Page Goes to the previous page. Ctrl PageDown Next Page Goes to the next page.
Select menu Ctrl A Select all Selects all files in the current list Ctrl Shift A Select none Deselects all files Ctrl Shift I Invert selection Inverts current selection Alt R Rectangular selection Toggles rectangular selection mode for icons Copy to clipboard Copy selected item-path(s) to clipboard The clipboard used is selected here. . Each data item copied will be enclosed in quotes. Copy to clipboard (unquoted) Copy selected item-path(s) to clipboard. The data will not be enclosed in quotes. Ctrl X Cut to clipboard Perform a standard control-X operation. M Show marks Displays marks in the file list Clear marks Clear all marks for all images Marks that are linked to keywords will also be cleared. This may result in a metadata write operation being triggered. Mark n Opens submenu for manipulating mark n n Mark n Toggle Mark n Set or unset mark n on selected files Mark n Set mark n Set mark n on selected files Mark n Reset mark n Unset mark n on selected files Ctrl n Mark n Select mark n Selects all files having mark n set Mark n Add mark n Adds files having mark n set to selection Mark n Intersection with mark n Intersects current selection and mark n Mark n Unselect mark n Removes files having mark n set from current selection Mark n Filter mark n Shows only the images that have mark n set.
Edit menu Orientation Adjust image orientation ] Orientation Rotate clockwise Rotates the current image clockwise 90 degrees, does not modify the file on disk. [ Orientation Rotate counterclockwise Rotates the current image counterclockwise 90 degrees, does not modify the file on disk. Shift R Orientation Rotate 180 Rotates the current image 180 degrees, does not modify the file on disk. Shift M Orientation Mirror Swaps the left and right sides of the image so that the result is similar to that of looking at the image in a mirror, does not modify the file on disk. Shift F Orientation Flip Swaps the top and bottom sides of the image, does not modify the file on disk. The above orientation commands - Rotate, Mirror and Flip - do not change the image on disk. The changes will be lost when Geeqie closes. Refer to the Metadata tab of the Preferences Dialog if you wish these changes to be written to metadata. Refer also to the FAQ . Shift O Orientation Original state Removes all temporary effects applied through the above commands, reverting the image according to its Exif Orientation tag. Auto rotate image using EXIF information Auto rotates images based on metadata stored in images that have Exif data. Refer also to the FAQ . Orientation Apply the orientation to image content This command affects only jpeg, tiff and png files. The image file on disk is rotated to the orientation as specified by its Exif Orientation tag. The file rotate.desktop, using external commands exiftran, exiv2 and mogrify, is used to implement this command. Refer to Plugins section for details. [ Orientation Rotate counterclockwise Rotates the current image counterclockwise 90 degrees, does not modify the file on disk. Shift R Orientation Rotate 180 Rotates the current image 180 degrees, does not modify the file on disk. Orientation Write orientation to file Saves the current image orientation to the disk file. This operation can only be carried out on jpeg, tiff and png files. Jpeg rotations are lossless. The Preferences/Metadata option "Write altered image orientation to the metadata" must be off. Exiftran and mogrify must be installed. Orientation Write orientation to file (preserve timestamp) As above, but the file date and time are preserved. Rating Set a Rating value for each image. Alt+Keypad+n Rating n "n" is in the range 0 to 5. Sets the Rating value for the image. Alt+Keypad+Minus Rating -1 Sets the Rating value to -1 for the image. Ctrl S Save metadata Saves queued metadata changes. Autosave can be configured too. Alt K Keyword Autocomplete Refer to Info Sidebar. Draw rectangle Press and drag the mouse left button to draw a rectangle. Aspect ratio Select an aspect ratio for the above action. Crop rectangle Crop the image rectangle set above. See also Image Crop plugin. Ctrl O Preferences Opens the Preferences Dialog for changing of global preferences. Configure Plugins… Opens the Plugins Dialog for changing of desktop files. Configure This window… Opens the Window Preferences Dialog for changing of options that can differ for each window. Cache maintenance Opens a dialog with utilities for thumbnail and keyword . Set as wallpaper Renders the current image to the root window (desktop). The resulting image will be tiled to fit the root window if zoom is not set to Fit to window ; when zoom is set to Fit to window , the image will be scaled to fill the root window.
Plugins menu Plugins This menu contains the plugins (desktop files) that were found on the system. See the Plugins section for details.
View menu Ctrl V View in new window Opens selected image in its own window Ctrl J Pan view Opens current folder in Pan view window Ctrl E Exif data Toggles display of the Exif sidebar. Meta L Files and Folders Folder List Set the folder view mode to list. Ctrl T Files and Folders Folder Tree Set the folder view mode to tree. Ctrl L Files and Folders Image List Changes the file list to display files in list format. Ctrl I Files and Folders Icons Changes the file list to display files as icons. Files and Folders Show Thumbnails Toggles the display of image thumbnails in the file list, this item is not available when the file list is in icon view mode. A check appears next to this item when thumbnails are enabled. L Files and Folders Float file list Splits the 3-pane main window into two parts: File pane and Folder pane, along with menu and status bar Image pane and its associated sidebar and sort manager (if displayed) Ctrl H Files and Folders Hide file list Hides the File and Folder panes, along with menu and status bar. Right-click on the Image pane provides a menu item to redisplay these items. Zoom Zoom Connected zoom Actions in this menu are identical to those in Zoom menu, but apply to all images displayed in split view. Zoom Zoom in Increases the zoom by one increment, resulting in a larger image. Zoom Zoom out Decreases the zoom by one increment, resulting in a smaller image. Zoom Zoom to fit Automatically adjusts the zoom so that the image will fit within the display pane. The effect on images with an original size smaller than the display pane can be changed with the Allow enlargement of image for zoom to fit option located on the Image tab of the preferences dialog. Zoom Fit Horizontally Adjusts the zoom so image height fit within the display pane. Zoom Fit Vertically Adjusts the zoom so image width fit within the display pane. New Z Zoom Zoom n:m Set zoom to the n:m value. 1:1 is the original size of the image. When n is greater than m, zoom in occurs else zoom out occurs. Z Zoom Zoom n:m Split Split Horizontal Splits main image view in two horizontal panes. U Split Vertical Splits main image view in two vertical panes. Split Triple Splits main image view in three horizontal panes. Split Quad Splits main image view in four panes. Y Split Single Reverts to normal view mode (one image). Image Overlay Image Overlay Displays Image Overlay information box (OSD), use twice to add histogram to it. Image Overlay Histogram channels Switches channels displayed in the histogram (red, green, blue, RGB, value, maximum value). Image Overlay Histogram log mode Toggles between linear and logarithmical histogram. Full screen Toggles the full screen window display. Shift E Over/Under Exposure Toggles highlighting of pixels that are either over or under exposed. This function operates on the displayed pixels. If a raw file is being displayed, the embedded jpeg data is being used. If the image is zoomed, the zoom type affects the results. Two-pass rendering also has some influence. If a pixel has any channel at zero or full-scale, the pixel is displayed in red. Keywords Toggles display of the Keywords sidebar. Sort manager Toggles display of the Sort Manager sidebar. ` Hide Bars and Files This item is intended to be used by its shortcut key. When pressed, the info sidebar, sort manager, file list, menu and status bars will be hidden (if displayed). Pressing the shortcut key again will revert the display to its previous layout. Control ` Hide Selectable Bars This item is intended to be used by its shortcut key. When pressed, bars selected in Preferences/General will be hidden. Pressing shortcut key again will revert the display to its previous layout. Toggle slideshow Begins or ends a slide show, the slide show status is displayed in the status bar. Pause slideshow Pauses a slide show, the slide show status is displayed in the status bar. Faster Decreases slide show interval in units of 0.5 seconds. Slower Increases slide show interval in units of 0.5 seconds. Refresh Updates the contents of the folder and file lists to match what is currently on disk, the current image will also be reread from disk.
Windows menu This menu permits you to define several different window layouts that can be recalled at any time. Ctrl N New window default Opens a new window with the default layout. The window is given a name in the form "lw<n>". New window from current Opens a new window with the layout of the window that has focus. The window is given a name in the form "lw<n>". Rename window If a window is given a name that does not begin with the characters "lw", the layout will be saved and be available for loading at a later time.. Delete window Delete a saved window layout from the list. Close window Close the window. If the window is the "main" window, close all windows.
Help menu F1 Contents Opens the Geeqie user manual in a new browser window. / Search and Run Commands Opens a text box in which you may type characters to find a command. The characters you type will be matched to the first characters of any word in all the commands in Geeqie - both built-in commands and plugins - and matching actions will be displayed in a pop-up. You may scroll to any of the matching commands and press Enter to execute the command. Pressing Enter without selecting from the list will execute the first action in the list. Press Esc to close the box. On-line help search Use a web browser to search Geeqie's on-line help files. The search engine used is defined in Preferences General . Keyboard shortcuts Displays a window listing the default keyboard shortcuts. Keyboard Map Displays an image showing the currently allocated keyboard shortcuts. Release notes Displays a window containing the release notes for the version of Geeqie in use. About Opens a window containing the Geeqie version, credits, website, and email contact information. Log window Opens the log window, mostly used for debugging purposes.
Tear off menus Menus can be permanently displayed by selecting the dotted line item at the top of each menu category. A tear off menu will behave the same as an ordinary window. To close a tear off menu, select the dotted line item at the top of the menu.
Changing the main window menu bar keyboard shortcuts The section describes how to modify the keyboard shortcuts used in the main menu.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindowNavigation.xml000066400000000000000000000053031515032643700263100ustar00rootroot00000000000000
Navigation
Moving around in the file system To select the folder containing the desired images for display, change to the image's folder using the folder view. Single clicking a folder with the primary mouse button will change the main window to display that folder's contents. When the folder view is displayed as a list, use the folder named “..” to change to the parent folder (the parent folder is the folder that contains the current folder). To select a folder with the keyboard, move the focus to the desired folder and press the Space or Enter key.
Moving around within a folder After selecting the desired folder as above, the desired image can be viewed by selecting it from the file list. To select a file for display single click it with the primary mouse button. To select a file with the keyboard, move the focus to the desired file. As you move the focus within the file list the image display will update to match the highlighted file.
Going home To change to your home folder, click the Home button in the tool bar. Home folder can be set in window preferences.
Direct path entry The current path is displayed in an entry field above the folder list. A folder or file can be typed into the entry to quickly change to a desired location or image, the main window will update after pressing the Enter key. Tab completion is also available in the path entry. Next to the path entry is a button with a down arrow, clicking this will display a drop down list containing the most recent locations viewed. The list is ordered such that the most recent location is at the top. Selecting a location from the drop down list will change the window to display the location.
Stepping through images sequentially To change the displayed image to next or previous one within the same folder, use the respective PageDown and PageUp keys. The mouse can also be used to change the image by clicking the image display with the respective primary and middle buttons. To change to beginning or end of the image list, use the respective Home or End keys.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideMainWindowStatusBar.xml000066400000000000000000000222131515032643700261200ustar00rootroot00000000000000
Status Bar The status bar contains information and details about the contents of the main window. Information displayed includes the progress of generating thumbnails, the number of files in the file list with byte size, the current file selection count including byte size, details about the currently displayed image, and the zoom and image scroll settings. The current sort preference is also displayed, and can be adjusted from the status bar. The status bar is comprised of five sections, from left to right these are a progress bar, sort method, file list counts, image details, and zoom and scroll setting. Each section is described below.
Progress Bar The Progress bar updates to display the current state of thumbnail generation, or the reading of metadata in the current folder. When “Loading thumbs...” is displayed, thumbnails are currently being generated when Geeqie is idle; the progress bar will update to display the percentage of thumbnails that are completed. When “Loading meta...” is displayed, certain metadata is being loaded when Geeqie is idle; the progress bar will update to display the percentage of files that have been read. Refer to Preferences metadata.
Sort method This is the method used to sort image names in the file list. Clicking or activating this field will display a menu to allow selection of the sort method. Name Images are sorted by file name. Number Images are sorted by natural numerical order, such that, for example, 9_name.jpg will be listed before 10_name.jpg. Date Images are sorted by file modification date. File Date Images are sorted by one of four types of file date. They are described in the Reference section . Size Images are sorted by file size on disk. Rating Image are sorted by Xmp.xmp.Rating. Class Image are sorted by class. The class types, and sort order, is: Unknown Image Raw Image Video Metadata Ascending Toggles between increasing and decreasing sort order. A check will appear next to this entry to indicate ascending sort order. When images have equal rank, for example in rating or class sorts, within each section images will be sorted by filename.
File list This section displays the count of files that appear in the file list, including the total byte size. The number of files selected is displayed in parenthesis, including the total byte size of the selected files. The slide show status is also displayed here; when a slide show is running, “Slideshow” will appear, the text will change to “Paused” when a slide show is in the paused state.
Image Details This section displays the dimensions (width x height) and file byte size of the image that is active in the image pane. When the format of the file in the image pane can not be determined the dimensions will show as “(0 x 0)”, in addition “(no read permission)” may appear if the file permissions do not allow reading the contents of the file.
Zoom and Scroll The button label displays the current zoom ratio. A ratio of 1:1 is the image's original size. When the left number is larger the image is displayed larger than original size, when the right number is larger the image is displayed smaller. A tilde (~) appears within the ratio display when the zoom is set to fit the image within the display area. In this zoom mode the ratio is automatically adjusted, and the displayed ratio may not be the actual ratio because the status bar display rounds the actual value to the nearest tenth (0.1). Clicking this button permits control of the behavior of the zoom and scroll settings used when changing the displayed image. Zoom to original size The new image is set to its original size. Fit image to window The new image's zoom is changed so that the image will fit within the current view area. Leave zoom at previous setting The zoom setting is unchanged, the new image will be scaled the same as the previous image. Scroll to top left corner The new image is displayed from top left corner. Scroll to image center The new image is centered Keep the region from previous image The new image is positioned as the previous one, whenever possible.
Buttons The Status bar toolbar buttons, the defaults are shown below, correspond to selected menu action. The buttons displayed may be changed in the Toolbar tab of Preferences.
Exif rotate Toggles the auto-rotation of images if they have Exif orientation data. Refer also to the FAQ .
Show Pixel Info Shows coordinates and RGB[A] value under cursor.
Enable Color Management Enables color profiles.
Save Metadata Opens dialog for review and saving of metadata changes.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsAdditional.xml000066400000000000000000000014251515032643700256410ustar00rootroot00000000000000 Additional Preferences There are two sets of preferences in Geeqie: those set via the main Preferences tabbed dialogue, and those set either via a menu entry or by editing a configuration file. This chapter explains in detail the Geeqie preferences that are set via a menu entry or by editing a configuration file. BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsAdvanced.xml000066400000000000000000000062101515032643700252730ustar00rootroot00000000000000
Advanced
External preview extraction The intention of this feature is to give the user the possibility to display image previews of files that the standard libraries cannot decode. An example is the .dng files produced by LG V30 cameras. Neither exiv2 nor libraw can extract a preview, but the command line program dcraw can. This feature allows a work-around until the standard libraries provide a solution. Two command files are required: one to identify which files to process, and one to extract or decode the preview image. The format for the identification tool is: Parameter 1: (input) full path name to the current image. Returns: 0 for file match, any other value for no match. The format for the extraction tool is: Parameter 1: (input) full path name to the current image. Parameter 2: (output) a temporary file name generated by Geeqie. Returns: not used. The tool should load the output file with the decoded image. This is an example of an identification tool using a shell script: #! /bin/bash filename=$(basename -- "$1") extension="${filename##*.}" shopt -s nocasematch if [[ $extension == "DNG" ]] then cameramodel=$(exiv2 -K Exif.Image.UniqueCameraModel -Pt "$1" ) if [[ $cameramodel == "LG-H930" ]] then exit 0 else exit 1 fi else exit 1 fi This is an example of an extraction/decode tool using a shell script: #! /bin/bash dcraw -e -c "$1" > "$2" Alternatively: #! /bin/bash gm convert "$1" "$2" If the decode tool requires an output file with a particular extension, use this method: #! /bin/bash tmpfile=$(mktemp --tmpdir=$tempdir geeqie_tmp_XXXXXX.jpg) gm convert "$1" $tmpfile mv $tmpfile "$2"
Thread Pools This option will limit the number of threads (cores) that are used when performing a duplicate image search. A value of 0 means use all available threads. This will give the fastest processing time, but will slow other processes including user input response time.
Alternate Algorithm Alternate Similarity Algorithm
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsBehavior.xml000066400000000000000000000325731515032643700253400ustar00rootroot00000000000000
Behavior Options This section describes the options presented under the Behavior Tab of the preferences dialog.
Delete Confirm permanent file delete Prompts for confirmation before deleting files. Confirm move file to Trash Prompts for confirmation before moving files to the trash bin. Enable Delete key Disable this to disassociate the delete file function from the Delete key. If Confirm file delete , above, is disabled, accidentally hitting the Delete can result in files being erroneously deleted without warning. Disabling the Delete key will prevent this. The Ctrl + D key sequence is not affected. Use Geeqie trash location Moves deleted files to a temporary folder, for easy retrieval of deleted files. Files in the temporary folder are retained until the maximum size is reached, at which point deleting additional files will result in the removal of the oldest files to reclaim the space needed for the new files. Files moved to the Safe Delete folder are prefixed with a six digit number in the format: nnnnnn_FILENAME This is used by the delete feature to distinguish which files to remove first when clearing space for new files. The digit counter increments with each deleted file. Use system Trash bin Moves deleted files to the system-defined trash bin. Folder The location of the folder used by the Safe Delete feature. Maximum size The size to use for the Safe Delete folder, in megabytes. Note that setting this value to 0 (zero) will disable any limit. Clear button Removes all files contained in the Safe Delete folder. View button Changes the Geeqie main window to display the contents of the Safe Delete folder.
Behavior Descend folders in tree view This will allow Geeqie to read sub folder content to determine if it should display expander indicators in the folder tree view. Disable this if Geeqie wakes up auto mounted network shares, or takes too long to initially display the folder view. In place renaming When renaming a single file, this will allow the rename entry to appear directly over the original filename. List directory view uses single click to enter If selected, a single click will enter a directory, rather than the GTK+ default of a double click. Circular selection lists If selected, when traversing a list of selected images using Next or Previous Image, when the last or first image is encountered the focus moves to the beginning or end of the list. When deselected, focus will go no further than the start or end of the list. Save marks on exit Save all marks that have been set. Note that marks that are linked to a keyword will always be saved irrespective of this setting. Use "With Rename" as default for Copy/Move dialogs Move the "With Rename" button to the default position. Permit duplicates in Collections If this option is set, an image can be inserted into a Collection any number of times. Open Collections on top Open collection windows with "Always on Top" set. Hide window in fullscreen When alt-tabbing, prevent Geeqie window showing twice. Hide OSD in fullscreen Hide Overlay Screen Display in fullscreen mode. Recent folder list maximum size This is the maximum number of entries to be displayed in the recent open folder list drop-down box. Recent folder-image list maximum size The last image viewed in a folder is stored in a list. This value is the maximum number of entries in the list. When a folder is subsequently re-opened, focus moves to the last image viewed in that folder. Drag'n drop icon size This is the width and height of the icon generated from image and displayed when doing drag and drop actions. High resolution screens may require to increase this number. Drag'n drop default action When using drag and drop to copy or move files, the default action is to use a pop-up menu to permit you to select which action is to be taken. This option allows you to set the default action to either Copy or Move. When using the pop-up menu, the menu will also include an option for a symbolic link and any other plugins that are defined as being a filter. If you set the default action to Copy or Move these additional options will not be available to you. Copy path clipboard selection This option determines which clipboard selection is used for the "Copy path" menu item. The exact method of the paste operation will depend on the operating system, but in general will be: Primary Paste using mouse middle-click, or shift-insert. Clipboard Paste using mouse right-click and select paste, or control-v. Both Paste using either method.
Debugging Debug level Displayed when compiled with the option --enable-debug-log. This defines the verbosity of debug info sent to console and log window (0 disables the debug output). Log Window max. lines The maximum number of data lines to be displayed. The window will show the most recent data.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsColor.xml000066400000000000000000000027521515032643700246530ustar00rootroot00000000000000
Color management options Use of this function requires LCMS to be installed. If you are compiling from sources, LCMS functionality will be available if the development files dependencies are met. If you are using a pre-compiled distribution, availability depends on the package maintainer. Here one can defined color profiles to use. Color management can be enabled or disabled from View Color Management or on the status bar. Type Either input color profile or screen color profile. Menu name Name of the menu entry corresponding to the color profile. File Path to the color profile file.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsFiltering.xml000066400000000000000000000212551515032643700255170ustar00rootroot00000000000000
File Filters Options This section describes the options presented under the File Filters Tab of the preferences dialogue.
Filters Show hidden files or folders Enables the display of hidden files and folders, also known as dot files. Use dot prefix as hidden file indicator Use only the file dot prefix as a method of identifying hidden files. This may speed up file operations. However, the contents of a .hidden file will be ignored, as will some other methods of hiding files. Show parent folder Enables the display of the parent folder as a double dot in the directories views. Case sensitive sort (Collection and Search windows, and tab completion) Files and folders are sorted such that upper case letters occur before lower case letters. Enabled result: A, B, C, a, b, c Disabled result: A, a, B, b, C, c Disable file extension checks During rename operations, allows files to be renamed to a different extension with no warning issued. Disable file filtering Enable this to allow Geeqie to list all files, even those that do not contain images.
Grouping sidecar extensions This field defines which extensions will lead to file grouping. Grouped files will appear as a single entry in file views. This is useful, for example, when browsing directories containing two files for the same image (such as raw+jpeg files generated by some cameras). The group is represented by the first extension in the list for which a file exists. Each extension should include the starting dot and should be separated by a semi-colon from following entries. It is possible to use wild-cards corresponding to entries in the File Types Class below: %unknown expands to all files listed in class Unknown , %image expands to all files listed in class Image , %raw expands to all files listed in class RAW Image %meta expands to all files listed in class Metadata
File types This list contains the image formats that are understood by Geeqie. To disable a specific file type from being displayed, uncheck it's corresponding check-box. Filters can be edited by first selecting the line containing the item to be changed, then clicking the filter or description field, making any changes, then pressing Enter ; press Escape to cancel an active edit. Unlike all other options in the dialogue, filter list changes are applied immediately. The table consists of: Enabled Whether or not the filter is used. Filter List of extensions this filter applies to, separated by a ; . Each extension must be preceded by a dot. Description Brief description. This is not used elsewhere. Class This may be used to define sets of file types, for use in the Grouping function described above. The drop-down list has 7 entries: Unknown Image RAW Image Metadata Video Collection Document Archive (.zip, .rar etc.) Writable If this option is checked, Geeqie will try to write metadata to the image file itself. This, and the following option, are mutually exclusive. Sidecar is allowed If this option is checked, Geeqie will try to write metadata to a sidecar file associated with the image. This, and the previous option, are mutually exclusive. Add Adds a new blank line to the filter list, change the parameters to match the desired file type. Remove Removes the selected line from the filter list. Defaults Resets the filter list to the default values, discarding any customizations made by the user. Column Sorting Columns other than Filter can be sorted in ascending or descending order by clicking on the column header. Filter Search A search of the file extensions listed in the Filter column can be initiated either by typing Ctrl + F or by pressing any alpha-numeric key when the File Types table has focus.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsGeneral.xml000066400000000000000000000304371515032643700251530ustar00rootroot00000000000000
General Options This section describes the options presented under the General Tab of the preferences dialog.
Thumbnails Size Selects the size of the thumbnails displayed throughout Geeqie, dimensions are width by height in pixels. Quality Selects the method to use when scaling an image down for thumbnails: Nearest Fastest scaler, but results in poor thumbnail quality. Tiles Thumbnail results are very close to bilinear, with better speed. Bilinear High quality results, moderately fast. Cache thumbnails and sim. files Enable this to save thumbnails and sim. files to disk. Subsequent requests for a thumbnail will be faster, as will searches and find duplicates. Use Geeqie thumbnail style and cache Thumbnails are stored in a folder hierarchy that mirrors the location of the source images. Thumbnails have the same name as the original appended by the file extension .png. The root of the hierarchy is: $XDG_CACHE_HOME/geeqie/thumbnails/ or, if $XDG_CACHE_HOME is not defined: $HOME/.cache/geeqie/thumbnails/ Store thumbnails local to image folder (non-standard) When enabled, Geeqie attempts to store cached thumbnails closer to the source image. This way multiple users can benefit from a single cache, thereby reducing wasted disk space. Thumbnails have the same name as the original appended by the file extension .png. The resulting location is the source image's folder, in a sub folder with the name .thumbnails When the image source folder cannot be written, Geeqie falls back to saving the thumbnail in the user's home folder. Use standard thumbnail style and cache, shared with other applications This will use a thumbnail caching method that is compatible with applications that use the standard thumbnail specification. When this option is enabled thumbnails will be stored in: $XDG_CACHE_HOME/thumbnails/ or, if $XDG_CACHE_HOME is not defined: $HOME/.cache/thumbnails/ All thumbnails are stored in the same folder, with computer-generated filenames. Refer to Thumbnails Reference for additional details. Use EXIF thumbnails when available Geeqie will extract thumbnail from EXIF data if available, instead of generating one. This will speed up thumbnails generation, but the EXIF thumbnail may be not in sync with the image if it was modified by a tool which did not also update the thumbnail data. Thumbnail color management Where possible store thumbnails with an sRGB color profile. Selecting this option will increase the time taken to generate thumbnails. You probably will want to deselect the "Use EXIF thumbnails" option. Collection preview If thumbnail caching is enabled and you open the Collections folder , Geeqie will display a preview of the collections as a thumbnail montage. This option limits the number of thumbnails displayed in each preview. ImageMagick is required for this feature.
Star Rating The characters used to display the Star Rating are defined here. They are defined as a hexadecimal Unicode character. The complete list of Unicode characters can be found in many places on the Internet.
Slide show Delay between image change Specifies the delay between images for slide shows, in seconds. Random When enabled, slide show images will appear in random order. Random images are displayed such that each image appears once per cycle of all images. When the slide show repeat option is enabled, the image order is randomized after completing each cycle. Repeat This will cause the slide show to loop indefinitely, it will continue with the first image after displaying the last image in the slide show list.
Image loading and caching Decoded image cache size Limit the amount of memory available for caching images. Preload next image Enabling this option will cause Geeqie to read the next logical image from disk when idle, it will also retain the previously viewed image in memory. By reading the nearest images into memory, time to display the next image is reduced. This option will increase Geeqie memory requirements, and may cause performance issues with very large images. If the use of Geeqie results in the system noticeably swapping memory to disk, try disabling this feature. Refresh on file change Geeqie will monitor currently active images and folders for changes in their modification time, and update the display if it changes. Disable this if the system will not go into sleep mode due to occasional disk activity from the time check, or if Geeqie updates too often for folders with continuously changing content.
Expand menu/toolbar Expand the menu/toolbar to the full width of the window. Geeqie must be restarted for changes to take effect.
Hide Selectable Bars The menu item Hide Selectable Bars will toggle display of the bars selected here. The default keystroke for this action is control + backtick Geeqie must be restarted for changes to take effect.
AppImage updates notifications Show a notification on start-up if the server has a newer version than the current. Requires an Internet connection. Displayed only if an AppImage is being run.
Show predefined keyword tree Deselecting this option will hide the list of predefined keywords on the right-hand side of the keywords pane of the info sidebar. Geeqie must be restarted for the change to take effect.
Timezone Database The timezone database is used to correct exif time and date for UTC offset and Daylight Saving Time as described here. This option allows you to install or update the database. An Internet connection is required.
On-line help search An internet search engine may be used to search the help files on Geeqie's website. The string used to conduct the search is defined here. In most cases it will be in one of two formats: https://www.search-engine.com/search?q=site:geeqie.org/help https://www.search-engine.com/?q=site:geeqie.org/help'
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsHidden.xml000066400000000000000000000042631515032643700247670ustar00rootroot00000000000000
Legacy Configuration File Options This section describes the options not accessible by the graphical interface, these options exist to maintain behavior of older releases of Geeqie. To change these settings, edit the Geeqie configuration file . lazy_image_sync: [true false ] : This will suppress the image view from changing when selecting a new folder; the current image will remain displayed until the user manually selects another image. place_dialogs_under_mouse: [true false ] : Enabling this will cause new dialogs to initially position themselves such that they are under the current mouse position. scroll_reset_method: value : This will set the method used to set the scroll position, or visible region of a new image, value can be: 0: Move to upper left corner. 1: Center image. 2: Maintain same visible region as previous image, if possible. thumbnails.use_xvpics = [true false ] : xvpics is a common thumbnail caching format used by several applications. Thumbnails are stored locally to the source image in a sub folder with the name .xvpics . Enabling this option will allow Geeqie to read thumbnails saved in the xvpics format. Support for xvpics is read only, Geeqie can not generate thumbnails in this format.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsImage.xml000066400000000000000000000131451515032643700246150ustar00rootroot00000000000000
Image Options This section describes the options presented under the Image Tab of the preferences dialog.
Zoom Quality Selects the method used to scale the size of an image: Nearest Fastest scaler, but results in poor image quality. Tiles Results are somewhat close to bilinear, with better speed. Bilinear High quality results, moderately fast. Two pass zooming Enables Geeqie to first display a scaled image using the Nearest zoom quality. After image decoding is complete, the image is scaled again using the selected Zoom Quality method. This allows faster display of an image as it is decoded from the source file. Zoom increment Adjusts the step size when zooming in or out on an image. Zoom style Selects whether the zoom step size is applied as a geometric (n * step) or arithmetic (n + step) factor.
Fit Image To Window Allow enlargement of image (max. size in %) Enable this to allow Geeqie to increase the image size for images that are smaller than the current view area when the zoom is set to Fit image to window . This value sets the maximum expansion permitted in percent i.e. 100% is full-size. Virtual window size (% of actual window) This value will set the virtual size of the window when Fit image to window is set. Instead of using the actual size of the window, the specified percentage of the window will be used. It allows one to keep a border around the image (values lower than 100%) or to auto zoom the image (values greater than 100%). It affects fullscreen mode too.
Tile Size Tile size in pixels This option is only available when GPU acceleration is not selected. It sets the size in pixels that large images are split into during rendering. Setting a larger value will reduce the tiling effect seen as the image is displayed, but will also slightly increase the delay until the first part of the image is seen.
Appearance Custom border color Enable this to draw the image background (the area around the image) in the specified color. Border color Use this color chooser to define the color to use as image background. You may use the Virtual window size (see above) option to keep a border around the image in fullscreen mode. Alpha channel color 1/2 These two colors define the checkerboard background used when images with an alpha channel are displayed.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsKeyboard.xml000066400000000000000000000014551515032643700253340ustar00rootroot00000000000000
Keyboard Options This dialogue enables changes to be be made to the default key short-cut allocated to menu items. The data displayed may be ordered by clicking at the top of each column. To change or create a new short-cut, double click on the KEY column of the relevant item. The text displayed will change to "New accelerator...". Press the key combination required for this action. Only shortcuts in the main window can be redefined. Shortcuts in other windows are fixed. A text search may be made in any of the columns. Click anywhere in a column and type characters. The search is case-insensitive
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsKeywords.xml000066400000000000000000000016311515032643700253770ustar00rootroot00000000000000
Keywords This section describes the keywords list used for autocompletion.
Keyword Search Pressing the Search button will open a dialog which permits a recursive search to be made for keywords already attached to images. The result of the search is automatically appended to the existing list.
Keyword List The list shows all keywords currently used for autocompletion. Text may be copy-pasted into the list or deleted from the list. When the list is saved, duplicates will automatically be removed and the list sorted into alphabetical order.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsLayout.xml000066400000000000000000000061421515032643700250470ustar00rootroot00000000000000
Window Layout This item is accessed via Edit Configure this window . Home Path The path to be moved to when is clicked. Show date in directories list view The folder pane will show dates. Start-up directory This may be set for each instance of Geeqie. No change: Use the Current Working Directory. If called from a system menu rather than the command line, the Home directory will probably be used. Restore last path: Use the folder in use when Geeqie was previously closed. Home path: Use the folder specified in the Home Path box. Layout The Geeqie main window consists of three main panes: the folder pane , file pane and the image pane . Their position and order can be changed here. The four choices shown represent the basic layout of the main window, the difference being that each has the larger pane in a different location: right, bottom, left, and top. The numbers within each selection represent the order of the pane content. The order in which the panes are filled is determined by the three row list located below the layout selection. The three numbered rows correspond to the three numbered regions of the selected layout. To change the order of the list, drag a row to the desired location within the list. In this dialogue the file and image panes are labeled as such, however for historical reasons the folder pane is labeled as tools.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsMain.xml000066400000000000000000000040051515032643700244520ustar00rootroot00000000000000 Preferences There are two sets of preferences in Geeqie: those set via the main Preferences tabbed dialogue, and those set either via a menu entry or by editing a configuration file. This chapter explains in detail the main Geeqie preferences dialog, which is accessed via Ctrl O Edit Preferences or on the Toolbar. BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsMetadata.xml000066400000000000000000000227661515032643700253240ustar00rootroot00000000000000
Metadata This section describes the options for metadata writing. Refer also to in the Reference section.
Metadata writing process When writing metadata, Geeqie will follow these steps. This process will stop when the first successful write occurs. A flowchart showing the sequence is here . Save metadata in image files or sidecar files, according to the XMP standard If checked, Geeqie will attempt to write metadata to the file itself, or to an associated XMP sidecar file The destination is dependent on the settings in the "Writable" and "Sidecar Is Allowed" columns of the File Filters tab . Save metadata in '.metadata' folder, local to image folder (non-standard) If checked, Geeqie will attempt to write to an xmp file in a local .metadata folder Save metadata in Geeqie private directory If neither of the above are successful, Geeqie will write to an xmp file in the folder $HOME/.local/share/geeqie/metadata When writing to local metadata folders, the directory structure duplicates that of the location of the source files.
Step 1 Options: If Step 1 above was successful, the following options take effect: Store metadata also in legacy IPTC tags (converted according to IPTC4XMP standard) If checked, Geeqie will write IPTC tags as defined in The conversion from XMP tag to IPTC tag is performed by exiv2. A list of the XMP-IPTC conversions is at the end of this table . Warn if the image files are not writeable If checked, open a warning dialogue if the file is not writeable Ask before writing to image files If checked, open a confirmation dialogue before writing to the file Create sidecar files named image.ext.xmp (as opposed to image.xmp) If checked, new sidecar files will use image.ext.xmp naming scheme. This scheme is used by Darktable.
Steps 2 and 3 Option: If Step 2 or 3 above was successful, the following option takes effect: Use GQview legacy metadata format (supports only keywords and comments) instead of XMP If checked, Geeqie will write metadata in GQview legacy files (file extension .meta) format
Miscellaneous Write the same description tags to all grouped sidecars If checked the same descriptive tags are written to all files in a group. File grouping is as defined in the File Filters tab of main Preferences. Technical tags (exif) are handled separately for each file. The tags written are: "Xmp.dc.title" "Xmp.photoshop.Urgency" "Xmp.photoshop.Category", "Xmp.photoshop.SupplementalCategory", "Xmp.dc.subject", "Xmp.iptc.Location", "Xmp.photoshop.Instruction", "Xmp.photoshop.DateCreated", "Xmp.dc.creator", "Xmp.photoshop.AuthorsPosition", "Xmp.photoshop.City", "Xmp.photoshop.State", "Xmp.iptc.CountryCode", "Xmp.photoshop.Country", "Xmp.photoshop.TransmissionReference", "Xmp.photoshop.Headline", "Xmp.photoshop.Credit", "Xmp.photoshop.Source", "Xmp.dc.rights", "Xmp.dc.description", "Xmp.photoshop.CaptionWriter", "Xmp.xmp.Rating", Allow keywords to differ only in case If checked, permits keywords to be case-sensitive (e.g. Place and place are two different keywords) Write altered image orientation to the metadata If checked, the results of orientation commands (Rotate, Mirror and Flip) issued on an image will be written to metadata either automatically as specified below or when manually initiated. This option also affects the Auto rotate image using EXIF information menu item. If this option is not checked, the results of orientation commands will be lost when Geeqie closes. Do not change this option while you have temporary rotations applied to images.
Auto-save options Write metadata after timeout If checked, metadata writes will be made automatically at the defined interval. Warning dialogues will be issued if required. Write metadata on image change If checked, metadata writes will be made when you move focus to another image. Write metadata on directory change If checked, metadata writes will be made when you move focus to another folder.
Spelling Checks If selected, spelling checks will be enabled on the following panes: Title Comment Headline
Pre-load metadata Read metadata in background Using the folder sorting options: Exif date original Exif date digitized Rating requires metadata to be read from all files in a folder before the sort action can be made. If a folder contains a large number of file, this can take a noticeable period of time. If this option is checked, Geeqie will automatically read the required metatada in the background as soon as a folder is opened. This will reduce the amount of time you have to wait until the sort is completed. If you do not use these sort options, leave this option unchecked.
Metadata Write Sequence Flowchart
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsOSD.xml000066400000000000000000000201251515032643700242140ustar00rootroot00000000000000
OverlayScreen Display This section describes the options presented under the OSD Tab of the preferences dialog.
Overlay Screen Display The contents of the Overlay Screen Display is defined by the Image Overlay Template. This template is easily customised to display a wide range of data. The format of each entry is: %tag[:max_length][:extra]% Overlay Screen Display templates Tag Replaced by name Filename of the picture path Full path, including filename, of the picture collection Name of the collection number Current number of image in the list total Total number of images date File date size File size width Image width height Image height res Image resolution keywords Image keywords from metadata comment Image comment from XMP metadata imagecomment JPEG image comment rating Image rating <meta_tag> The Exif, XMP, or IPTC tag from metadata lua/<lua_script>/ The output of a Lua script file lua//<lua_command> The output of a Lua command
As an aide, in addition to standard metadata tags, Geeqie provides a number of pre-formatted tags . Examples of usage are: %keywords% %Exif.Photo.DateTimeOriginal% %lua/jpeg_comment.lua/:12% %lua//return(os.date())% Refer to Lua Extensions for further information. The length of displayed data can be limited by using the :max_length parameter. The following example will truncate the displayed data to 20 characters and will add 3 dots at the end to denote the truncation. %formatted.Camera:20% If two or more variables are connected with the | character, the variables are displayed with a separator. For example:: %formatted.ShutterSpeed%|%formatted.ISOSpeedRating%|%formatted.FocalLength% could show: "1/20s - 400 - 80 mm" Or, if there is no ISO information in the Exif data: "1/200 - 80 mm" If there is no data for a requested tag, the line is not displayed. The :extra parameter may be used to format the output by prepending and appending a text string to the displayed item. The special character * is used to mark the position of the Tag data item. If no * is present, the extra string is just appended to the standard data displayed. Any "\n" is replaced by a newline on display. Pango mark up is accepted in both left and right parts. If the data item is empty, nothing will be displayed. Examples: Overlay Screen Display template examples Template Example display %name: <i>*</i>\n% filename001.jpg %size:\n% 123456 %formatted.ISOSpeedRating:ISO *% ISO 100 %collection:Collection: <b>*</b> \n% Collection: my_new_collection
Font , Text , Background The font used for the Overlay Screen Display, as well as the font colour and background colour, may be set via these buttons. Colour transparency can also be set. Help Show syntax help Defaults Restore default image overlay template
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsStereo.xml000066400000000000000000000002201515032643700250220ustar00rootroot00000000000000
Stereo image management TBD
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsToolbar.xml000066400000000000000000000015531515032643700251750ustar00rootroot00000000000000
Toolbar This dialogue enables you to change the items displayed on either the Main Toolbar or the Status Toolbar. The initial display shows the current setup. You may re-order these items by right-clicking on any item. Additional items may be included by clicking on the "Plus" symbol at the bottom of the tab. A list of all available options is displayed. Most of the Geeqie menu items are available, plus any desktop (Plugins) files. If you select a desktop file, ensure that it includes an icon - the desktop file format is described in the Standards section
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOptionsWindow.xml000066400000000000000000000143261515032643700250440ustar00rootroot00000000000000
Window Options This section describes the options presented under the Windows Tab of the preferences dialog.
State Remember session This will maintain windows size and position between Geeqie sessions. Use saved window positions also for new windows A new window opened by menu Ctrl N File New Window will use the saved window positions also. Remember window workspace Remember which workspace a window was displayed in. Remember tool state Maintains the selection set by L View File and Folders Float File List Remember dialog window positions This will maintain dialog windows size and position between Geeqie sessions. Hide window decorations By default, windows are decorated with a title bar, resize controls, etc. If this option is selected, some window managers may be able to disable these decorations, creating a borderless window. Show window IDs Show the window ID in the titlebar of each window. When multiple Geeqie windows are opened, this option shows a unique identifier for each window. It may be used in conjunction with the command line option: --id=<ID> Use current layout for default Press the Set button to store the current window layout for use as the default for all new windows.
Size Fit window to image when tools are hidden/floating The main window will be resized to accommodate each image's size and proportions when the image pane is the only one visible within the window. Limit size when auto-sizing window This will restrict the maximum size a window can grow to automatically fit an image. The value represents the percentage of the desktop size in width and height.
Full Screen Location Selects the location and position of the full screen window. 'Determined by window manager' will leave the window placement up to the window manager. 'Active screen' places the window on the same screen as the Geeqie main window. 'Active monitor' does the same, but limits the full screen window size to the monitor containing the main window. The remaining choices are dependent on the multiple monitor configuration. Smooth image flip This option delays the image change in full screen until the next image is entirely decoded into memory, the result is a smoother transition between images. Disable screen saver This option will execute xscreensaver-command --deactivate once per minute to avoid the screen saver from activating when Geeqie is displayed full screen.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOtherSoftware.xml000066400000000000000000000072271515032643700250170ustar00rootroot00000000000000 Useful Software This is a list of other software that users might find useful in conjunction with Geeqie.
Entangle Tethered photography: https://entangle-photo.org/
Photini Digital photograph metadata editor: https://photini.readthedocs.io/en/latest/
Unison Unison allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other. It is available in some distributions. This is the project site: https://github.com/bcpierce00/unison/
Keyword Merge This program will merge the keyword tree of one Geeqie configuration file into another. The keyword trees are simply concatenated. When Geeqie loads the resulting configuration file, any duplicates are discarded: keyword_merge.sh
Keyword Marks This program will list the current keyword-mark links that have been set in the Info Sidebar. The Geeqie configuration file is scanned to produce this list, therefore changes to keyword-marks will not be listed until Geeqie is closed and the config. file updated: keyword-mark.sh
Install Geeqie from sources on Debian This script will clone the Geeqie repository, fulfill all dependencies, and install Geeqie on a Debian based system: geeqie-install-debian.sh
Generic install script This script will install Geeqie to a defined location, and will run under any system. However, it is left to you to make sure dependencies are fulfilled: build-geeqie
Recently used Collections This script will list recently used Collections. This may be of use to someone who has Collections stored outside the default Collections folder: recent-collections.sh
Decoder for .sim files This program is unlikely to be of interest to most users. It shows a summary of the contents of a .sim file. (Requires perl to be installed): decode_sim
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOtherWindows.xml000066400000000000000000000014261515032643700246520ustar00rootroot00000000000000 Stand-alone Windows This section describes the windows that may be displayed simultaneously with the Geeqie main window. They are initiated via the View and File menus. BestImageViewer-geeqie-33ba319/doc/docbook/GuideOtherWindowsExif.xml000066400000000000000000000022461515032643700254670ustar00rootroot00000000000000
Exif Window The Exif window shows the Exif, IPTC and XMP metadata that are present in the image file. Unlike the other parts of the program, this window shows the "raw" metadata read from the file, without any post-processing. Thus, this window is ideal for metadata debugging. The Exif pane in the Info Sidebar is more suitable for general use, as it displays merged data from sidecar and private metadata files. To facilitate including extra items in the Exif pane in the Info Sidebar , it is possible to drag-and-drop an item from the Exif window onto the Sidebar pane. A search of the Exif data can be initiated by clicking anywhere on the column you wish to search, and then type Ctrl + F or press any alpha-numeric key. The search is case-insensitive
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOtherWindowsImageWindow.xml000066400000000000000000000077641515032643700270200ustar00rootroot00000000000000
Image Window An image window is a window that displays only the image, without menus or sidebars. An image window can always be opened from the context menu of all images and files. Keyboard shortcuts exist for most windows that display images or files, however the shortcut can vary dependent on the type of window containing them. The image pane contained in an image window behaves and operates similar to the of a Main Window, including the . The keyboard shortcuts are the same, and the context menu is the same except Hide file list is replaced by Close window . The slide show and full screen functions are also available.
Drag and Drop Images can be dragged and dropped onto an image window, but the process is somewhat different to that of an . If multiple images, a folder or an image from a collection window is dropped onto the image window, you can cycle through all these images using the navigation keys. The dropped item can be one or more files, folders, or an image from a collection window: One or more files The image window will display the first image; the list of dropped images can be navigated similar to a main window's image pane. One or more folders When the dropped list of items includes a folder, a menu will appear allowing to skip the folders, add their contents, or add their contents recursively. After choosing from the menu the requested files will be added to the image window. Image from a collection The image window will change to display the image and become linked to the collection containing the image. Images in the collection can then be navigated and viewed from the image window. Changing the image window by dropping a new item onto it will cause the previous list of images or linked collection to be discarded. To update the image display in the event that the source file has changed, press R .
BestImageViewer-geeqie-33ba319/doc/docbook/GuideOtherWindowsPanView.xml000066400000000000000000000153511515032643700261460ustar00rootroot00000000000000
Pan View This window offers alternative views of the current directory and its children . It may be opened by Ctrl J View Pan view . You can pan the view as you pan an image in normal view mode, using left mouse button and drag. A primary mouse button click on any image will display information about the image. Secondary mouse button will show a context menu. The Keyboard Shortcuts available are listed in the Reference section. Pan view recursively visits each folder under the specified folder. This can consume considerable computer resources.
Select a folder Location The initial location is the current Geeqie folder when the Pan view window is opened.
Choose a view mode A select box let you choose among different view modes: Timeline Shows images grouped by date. Calendar Shows a calendar with the number of images indicated for each day (as dots and number). Left mouse button click will show images in a pop-up. Folders Show images grouped by folder. Each box represents a folder. Parent and children folders are shown as boxes enclosing other boxes. Folders (flower) Show images grouped by folder. Each box represents a folder. Parent folders are linked to children by a line. The top folder is the center of the flower. Grid All images are shown on a grid.
How each image should be represented Another select box let you choose the representation of each image: Dots Each image is represented by a dot. No images Each image is represented by a square box. Small thumbnails Each image is represented by a small thumbnail. Normal thumbnails Each image is represented by a normal thumbnail. Large thumbnails Each image is represented by a large thumbnail. 1:10 (10%) Each image is represented by reduced image (1/10 of the original's dimensions). 1:4 (25%) Each image is represented by reduced image (1/4 of the original's dimensions). 1:3 (33%) Each image is represented by reduced image (1/3 of the original's dimensions). 1:2 (50%) Each image is represented by reduced image (1/2 of the original's dimensions). 1:1 (100%) The original image is shown at its normal dimensions.
Find At the bottom of the window: Find button Shows a text field for image search. One can enter either: filename or part filename file date in any of the following forms, where the separator may one of / - , . or a space: yyyy-mm-dd yyyy-mm yyyy Enter will start the search, pressing it again will move to the next match. The matched file is made visible and details are shown for it.
BestImageViewer-geeqie-33ba319/doc/docbook/GuidePluginsConfig.xml000066400000000000000000000231001515032643700247560ustar00rootroot00000000000000
Plugins Configuration
Plugins Configuration Dialog This dialog allows user to add new plugins or modify the system ones. It is available in the menu Edit Configure Plugins . The Plugins dialog shows list of all relevant plugins i.e. all installed desktop files that are designated either: > Categories=Graphics Categories=X-Geeqie The list has the following columns: Disabled If the checkbox is ticked, the plugin will not be displayed in Geeqie menus. Name Plugin name as specified in desktop file, and is the name displayed in menus. Hidden A plugin can be Hidden for one of these reasons: the desktop file contains Hidden=TRUE or NoDisplay=TRUE TryExec binary was not found MimeType list does not contain images MimeType list is empty and Categories does not contain X-Geeqie Desktop file Name of the desktop file, used as an identifier in . Path Full path to the desktop file. Desktop files in user directories override the system ones with the same name.
Adding new plugin New opens a text editor with a desktop file template. You must amend the line Exec=command %f to contain the command you wish to execute. If it is more than a single command, you must create a script file and call that. If the location of the script file is not in your $PATH environment variable, you must include the full pathname.
Modifying an existing plugin Edit opens a text editor with existing desktop file. For desktop files that are not writable by user, it allows saving to a Geeqie specific directory, where it overrides the system file (but only for Geeqie).
Deleting a plugin Delete can delete user writable desktop files. System desktop files can't be deleted directly, but it is possible to edit them and set Hidden=TRUE , see above.
Special plugins A desktop file with one of the following names has a special function. It will replace the corresponding internal command. geeqie-copy-command.desktop geeqie-move-command.desktop geeqie-rename-command.desktop geeqie-delete-command.desktop geeqie-folder-command.desktop This can be used for example for a custom trash command or for manipulation of files under version control.
Geeqie desktop file keys A desktop file for use only by Geeqie should have the following entries: Categories=X-Geeqie; OnlyShowIn=X-Geeqie; A menu path where the plugin will appear, instead of in the default Plugins , can be set by including: X-Geeqie-Menu-Path=<FileMenuPath> Possible vales for FileMenuPath are: FileMenu FileMenu/OpenSection FileMenu/SearchSection FileMenu/PrintSection FileMenu/FileOpsSection FileMenu/QuitSection GoMenu SelectMenu SelectMenu/SelectSection SelectMenu/ClipboardSection SelectMenu/MarksSection EditMenu/EditMenu EditMenu/EditSection EditMenu/OrientationMenu EditMenu/RatingMenu EditMenu/PropertiesSection EditMenu/PreferencesSection PluginsMenu ViewMenu ViewMenu/WindowSection ViewMenu/FileDirMenu ViewMenu/FileDirMenu/FolderSection ViewMenu/FileDirMenu/ListSection ViewMenu/DirSection ViewMenu/ZoomMenu ViewMenu/ZoomMenu/ConnectZoomMenu ViewMenu/SplitMenu ViewMenu/StereoMenu ViewMenu/ColorMenu ViewMenu/OverlayMenu ViewMenu/ViewSection ViewMenu/ToolsSection ViewMenu/SlideShowSection HelpMenu HelpMenu/HelpSection If you want a plugin to use a user-definable path, the following entry must be made in the desktop file: X-Geeqie-Filter=true Desktop files containing this entry will be displayed in the Folder action list of the . The path of the bookmark clicked will be used by the desktop file. If the desktop file is called from the menu, when the plugin is executed you are presented with a dialogue which enables a path to be selected. The path selected, appended by the filename currently being processed, is made available to the shell script either as an environment variable or via a call to geeqie. The following code demonstrates the use of both methods: for file in "$@" do destination=$(geeqie --get-destination:"$file") echo "$destination" echo $GEEQIE_DESTINATION done A restart of Geeqie is required for this plugin to be registered If you want to run a plugin in full-screen mode and wish full-screen to be maintained, include the following entry in the desktop file: X-Geeqie-Keep-Fullscreen=true Any terminal output from the plugin command can be displayed with the following command: X-Geeqie-Verbose=true Any terminal output from the plugin command can be displayed, only when multiple files are selected, with the following command: X-Geeqie-Verbose-Multi=true The plugin can be restricted to run on only certain file types, for example: X-Geeqie-File-Extensions=.jpg; .cr2 The entries are case insensitive. The key or key combination to execute this function can be set with: X-Geeqie-Hotkey= Key combinations are of the form: X-Geeqie-Hotkey=<control>y This value may conflict with a setting in
BestImageViewer-geeqie-33ba319/doc/docbook/GuidePrinting.xml000066400000000000000000000032631515032643700240110ustar00rootroot00000000000000 Printing To print an image select Shift P File Print . Printing is provided by the standard Gtk printer services. The Options tab provides Geeqie-specific features.
Options tab Image Text This text will be attached to each image printed. It may contain any combination of plain text and predefined tags. Page Text This text will also be attached to each image printed. It may contain only plain text. It is probably of value only when one image per page is printed. Header 1/2 Footer 1/2 These checkboxes define the layout for Image Text and Page Text. Image and Page Text may be printed above or below each image and in the order defined by these checkboxes.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReference.xml000066400000000000000000000034611515032643700241150ustar00rootroot00000000000000 Reference BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceCollectionFiles.xml000066400000000000000000000022671515032643700271170ustar00rootroot00000000000000
Collection file format Collection files have the following format: #Geeqie collection #created with Geeqie version 2.6+git20250705-01d997ed #geometry: 0 0 1080 1106 "<filepath1>" "<filepath2>" #end It is possible to include informational text along with an image. The format is: #i Some informational text for the following file "<filepath1>" #end This text can be displayed via a right-click menu option from a window. It is assumed that you insert such text into a .gqv file via a script or program file. If you wish a facility to do this to be included within Geeqie, please raise a feature request on https://github.com/BestImageViewer/geeqie/issues
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceCommandLine.xml000066400000000000000000000003561515032643700262240ustar00rootroot00000000000000
Command Line Options
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceConfig.xml000066400000000000000000000062071515032643700252440ustar00rootroot00000000000000
Configuration Files and Locations The following data lists the locations Geeqie uses for various actions. The uppercase symbols are environment variables. If they are not set on your system the fallback locations are listed in parentheses. Geeqie will first attempt to load a configuration file from: /etc/geeqie/geeqierc.xml It will then continue with the following locations. Most of Geeqie's configuration files are contained in the folder, and sub-folders of: $XDG_CONFIG_HOME/geeqie/ ($HOME/.config/geeqie/) Geeqie's standard configuration file is: .../geeqierc.xml An alternative configuration file may be used by executing: geeqie --config-load:<filename> Saved window layout files are in the folder: .../layouts Geeqie-created desktop files used by Plugins are in the folder: .../applications Lua script files for Lua Extensions are in the folder: .../lua Historic data such as last several folders visited, bookmarks, and recently used collections, as well as default print settings are contained in this text file: .../history Keyboard shortcut maps are contained in this text file: .../accels The location for Collections is in the folder: $XDG_DATA_HOME/geeqie/collections ($HOME/.local/share/geeqie/collections) Thumbnails are stored in a location specified in Thumbnail Preferences Metadata is stored either in the image file or in the location specified in Metadata Similarity files are stored in the folder: ($HOME/.cache/geeqie/) The safe delete folder is specified in the Safe Delete tab of main Preferences
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceDecodeLatLong.xml000066400000000000000000000024241515032643700265000ustar00rootroot00000000000000
Decoding Latitude and Longitude This section is relevant to geocode searches and the map display of Geeqie. The result of some internet or other searches for placenames can contain a latitude and longitude embedded in a text string. For example an openstreetmap.org search can give a URL such as: https://www.openstreetmap.org/search?query=51.5542%2C-0.1816#map=12/51.5542/-0.1818 If you paste such a string into the search box, the latitude/longitude can be automatically extracted and used as the origin of the search. You may also drag-and-drop a URL of this type onto the map to cause the map to be re-centered. This feature uses the file: /usr/local/lib/geeqie/geocode-parameters.awk You may create your own decodes by using the above file as an example, and storing the file in: ~/.config/geeqie/applications/geocode-parameters.awk If a successful decode was not made from the first file, your local version will then be used.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceFileDates.xml000066400000000000000000000017631515032643700257010ustar00rootroot00000000000000
File date types Geeqie understands 4 types of file dates: Standard date (mtime) - The date the file contents were last modified, or when the file was created if since unchanged. Status changed (ctime) - The date the file status was last changed. This includes change of owner, change of read/write permission and change of contents. Exif date original (Exif.Photo.DateTimeOriginal) - For images from a digital camera, this is the time the photo was taken. Exif date digitized (Exif.Photo.DateTimeDigitized) - For scanned images, this the time the scan was made. For images from a digital camera, it may be identical to the above date.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceLua.xml000066400000000000000000000116411515032643700245560ustar00rootroot00000000000000
Lua Extensions Lua scripts allow the functionality of Geeqie to be extended. Lua scripts may only be used in conjunction with the Overlay Screen Display , List panes on the Info Sidebar, and the geeqie --lua: command line option. Some knowledge of the Lua programming language is required.
Requirements Use of Lua within Geeqie requires Lua to be installed. If you are compiling from sources, Lua functionality will be available if the development files dependencies are met. If you are using a pre-compiled distribution, availability depends on the package maintainer.
How to use Lua Lua scripts must be stored in a single folder as defined in . A link to a Lua script must be inserted into the overlay template. Refer to the Overlay Screen Display section of Window Options. The full extent of the Lua language is available.
Geeqie Lua built-in functions The following functions are built in to Geeqie: Function Returns Image:get_path() The full path of the file, including filename and extension Image:get_name() The full filename including extension Image:get_extension The file extension including preceding dot Image:get_date() The file date in Unix timestamp format. Image:get_size() The file size in bytes Image:get_marks() An integer representing the marks set for the file Image:get_exif() A data structure containing the entire exif data <exif_str>:get_datum("<exif_tag>") A single exif tag extracted from a structure output by the above command The keyword "Image" refers to the file currently being displayed by Geeqie.
Examples The following example, which outputs the jpeg comment of a file, demonstrates the use of a built-in function and how to call a system command from a Lua script: path=Image:get_path() commentfile=io.popen("exiv2 -p c \"" .. path .. "\"" ) comment = commentfile:read("*a") commentfile:close() return (comment) Note that it is necessary to have escape characters surrounding path and filenames. The following example demonstrates how to extract exif data from a file: --Retrieve the DateTimeDigitized exif tag exif_structure = Image:get_exif(); DateTimeDigitized = exif_structure:get_datum("Exif.Photo.DateTimeDigitized"); return (os.date(DateTimeDigitized))
Warning Lua is a powerful programming language. Errors in script files, besides having undesirable side-effects, may cause Geeqie to crash.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceLuaAPI.xml000066400000000000000000000003141515032643700251030ustar00rootroot00000000000000
Lua API The Lua API document
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceManagement.xml000066400000000000000000000145711515032643700261160ustar00rootroot00000000000000
Cache and Data Maintenance Thumbnails and other cached data can be maintained from the dialog accessible by selecting Edit Cache maintenance .
Geeqie thumbnail and sim. cache The utilities listed here operate on the Geeqie caching mechanism. This also includes the data cached for the search and find duplicates utilities. Clean up Removes thumbnails, sim. files, and data for which the source image is no longer present, or has been modified since the thumbnail was generated. Clear cache Removes all thumbnails, sim. files, and data stored in the designated folder.
Shared thumbnail cache The utilities listed here operate on the shared thumbnail mechanism. Clean up Removes thumbnails for which the source image is no longer present, or has been modified since the thumbnail was generated. Clear cache Removes all thumbnails stored in the designated folder.
Create thumbnails This utility will render thumbnails using the current thumbnail caching mechanism, as determined in Preferences . Render Pre-render thumbnails for a specific folder, the utility has the following options: Include subfolders Enable to include all images contained in the subfolders of folder. Store thumbnails local to source images The generated thumbnails will be stored local to the source images, if you have the permissions to write to the folder containing the images.
Create file similarity cache Some file operations, such as search and find duplicates , are speeded up if similarity data files for the images have been created. This utility will create sim. files recursively under the specified folder. The sim. files contain some or all of the following fields: Dimensions width x height Date Exif date in time_t format checksum MD5sum 32 character ascii text digest SimilarityGrid [32 x 32] = 3072 bytes of data (1024 pixels in RGB format, 1 pixel is 24bits)
Metadata This utility operates on the data store for Metadata located in the folder: $HOME/.local/share/Geeqie/metadata Clean up Removes keywords and comments for which the source image is no longer present.
Background Cache Maintenance This facility will run the command line program described below as a stand-alone background job.
Command line program Geeqie can be run as a command line program: GQ_CACHE_MAINTENANCE=y[es] geeqie --cache-maintenance=<path to images>. It will recursively remove orphaned thumbnails and .sim files, and create thumbnails and similarity data for all images found. It may also be called from cron or anacron thus enabling automatic updating of the cached data for all your images.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceMetadata.xml000066400000000000000000000112171515032643700255540ustar00rootroot00000000000000
Metadata Processing This section describes the metadata reading and writing process.
Metadata handling
Read algorithm Read Exif, IPTC and XMP from the file. Display this "raw" data in the Exif Window . Read XMP sidecar or Geeqie private metadata file. This data will override the XMP data read from the file. Synchronise XMP data with Exif and IPTC data. This process corresponds to the section "Reconciling metadata properties" as described in the XMP Specification . detect which of Exif and Xmp.exif is newer and copy the data in the appropriate direction detect which of IPTC and XMP is newer and copy the data in the appropriate direction Use this "processed" data within Geeqie, with the exception of in the Exif Window
Metadata modification Metadata is written to a single file or group of files as specified in the Metadata tab of main Preferences. Modifying the keywords, comment, orientation, etc. does not ask for confirmation, but immediately modifies the metadata in memory and adds the file to "write queue" Writing of the queued changes is triggered either manually or as defined in . It is possible to review the changes and exclude selected files.
Write algorithm Exif and IPTC are updated from XMP (for example Exif.Image.Orientation is updated from Xmp.exif.orientation ). See XMP and IPTC4XMP specifications for the list of corresponding tags. Try to write metadata in the order specified in the section of Preferences. After the first successful write attempt delete old metadata files in all possible locations.
Options that influence the process File types with allowed sidecars are listed in the tab of the main Preferences.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferencePCRE.xml000066400000000000000000000015111515032643700245610ustar00rootroot00000000000000
Perl Compatible Regular Expressions The Filename and Comment sections on the search window use Perl Compatible Regular Expressions . In general use there are a number of differences to the wildcard expansion used on the command line: Use "." and not "?" for a single character. Use "abc.*ghk" and not "abc*ghk" for multiple characters Use "\." to represent the dot in a file extension Use "(?i)" to make the following characters case-insensitive
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferencePixbufLoaders.xml000066400000000000000000000012331515032643700266000ustar00rootroot00000000000000
Additional pixbuf loaders Geeqie can display files for which there are existing pixbuf loaders. In addition to the standard ones included with most distributions, the following loaders may also be available to you. However, in some cases you are required to compile and install them yourself.
JP2/JPC/JPX/J2K/JPF If your distribution has the libpixbufloader-jasper.so loader, these file formats will also be displayed.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceRemoteKeyboardActions.xml000066400000000000000000000015141515032643700302700ustar00rootroot00000000000000
Remote Keyboard Actions The command: geeqie --action=<action> can be used to simulate keyboard actions. An example is: geeqie --action="ZoomIn" The actions available are shown in the Edit/Preferences/Keyboard dialog. The two end columns are relevant. The final component of the Accel column is the action code that should be used. The Tooltip column provides a description of the action. Both columns can be sorted by clicking the header. The available action codes may also be listed by: geeqie --action-list
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceSimilarityAlgorithms.xml000066400000000000000000000053201515032643700302120ustar00rootroot00000000000000
Similarity Algorithms This function is intended to find images with similar color content. For example when an image was saved at different compression levels or dimensions (scaled down/up) the contents are similar, but these files do not match by file size, dimensions, or checksum. A 32 x 32 array is created for each image. Imagine the image cut into 1024 rectangles, 32 across and 32 down. For each array element, the average value of all the red and the green and the blue pixels is computed and stored in the array. Therefore the array represents the average color of each corresponding part of the image. This data is stored in a file with the same name is the image and with the extension .sim. It is stored in the same location as thumbnails. If many images are to be compered, run-time is reduced by having these .sim files already created. This can be done via Edit/Cache Maintenance or by the command line instruction: GQ_CACHE_MAINTENANCE=y geeqie --cache-maintenance=<path>
Standard Algorithm To compare two images, each array element of each image is compared in turn. The computed value is the percent match of all elements of the two images. For this, simple comparisons are used - basically the value is an average of the corresponding array differences. The value computed is in the range 0% to 100%. 100% for exact matches (an image is compared to itself) 0% for exact opposite images (compare an all black to an all white image) Generally only a match of >85% is significant at all, and >95% is useful to find images that have been re-saved to other formats, dimensions, or compression. If the Ignore Orientation checkbox on the Duplicates window is selected, images are also checked for 90°, 180°, 270°, rotations and mirror and flip. This will increase run-time.
Alternate Algorithm The alternate algorithm can be enabled on the Advanced tab of Preferences. It does not check for rotations, mirror or flip. After comparing two array elements of two images, the difference from the preceding element comparison is included in the computation. There is an additional option to reduce the fingerprint to grayscale before comparisons are made.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceStandardPlugins.xml000066400000000000000000000175111515032643700271410ustar00rootroot00000000000000
Standard Plugins The following plugins are supplied as standard with Geeqie.
Apply the orientation to image content This command affects only jpeg, tiff and png files. The image file on disk is rotated to the orientation as specified by its Exif Orientation tag. External commands exiftran, exiv2 and mogrify, are used to implement this command. This item is displayed in the Edit/Orientation menu.
Camera import Imports images from an attached camera to the current folder. If a file with the same name already exists it will not be overwritten, and the new image will not be downloaded. File names on digital cameras are not necessarily unique. In some cases the same file name can exist in more than one sub-folder on the camera. As existing images will not be overwritten, subsequent files of the same name will not be downloaded. In this case a dialog will be shown to warn you of this. You may use the gphoto2 option --filename option to ensure that all filenames are unique when downloading. Refer to the gphoto2 documentation. This item is displayed in the Plugins menu.
Exif datetime to file Sets the file datetime (mtime) to the Exif.Image.DateTimeOriginal value. If the exif tag does not exist, no action is taken. This may be useful if you wish to sort on Exif.Image.DateTimeOriginal. This requires that the metadata for all files in the folder must be read each time. This is time consuming. If this operation is carried out when images are imported from the camera, future sorting can utilize file datetime which will be much faster. This item is displayed in the Plugins menu.
Export jpeg Extracts an embedded jpeg from a raw image to a file in the /tmp folder. If you wish to to keep this image, it must be copied or moved. If jpgicc is installed, the image will be colour-corrected for the currently selected rendering intent. This item is displayed in the Plugins menu.
Image crop If rectangle coordinates have been set by Edit/Draw Rectangle , a cropped image will be stored in the /tmp folder. If you wish to to keep this image, it must be copied or moved. This item is displayed in the Plugins and Edit menus.
Open With Call the standard GTK application chooser for a single file. This item is also displayed in the File menu.
Random image Selects and displays a random image from a list of all images in Collections and the currently displayed folder. This item is displayed in the Plugins menu.
Resize image Reduce the size of an image. Resize image options Option Meaning Required size kB desired output file size in kilobytes Tolerance % tolerance or allowed size of result greater than desired size expressed as percent of desired Max. iterations maximum number of iterations to stop Copy if unchanged copy to output when not downsizing and no image format change Strip metadata strip all meta data Show computation show the values of each iteration Open output file in Geeqie on successful conversion set Geeqie focus to the file
This plugin uses the Downsize script. The original may be found here. It is subject to the following copyright: Copyright © Fred Weinhaus My scripts are available free of charge for non-commercial (non-profit) use, ONLY. For use of my scripts in commercial (for-profit) environments or non-free applications, please contact me (Fred Weinhaus) for licensing arrangements. My email address is fmw at alink dot net. If you: 1) redistribute, 2) incorporate any of these scripts into other free applications or 3) reprogram them in another scripting language, then you must contact me for permission, especially if the result might be used in a commercial or for-profit environment. Usage, whether stated or not in the script, is restricted to the above licensing arrangements. It is also subject, in a subordinate manner, to the ImageMagick license, which can be found at: http://www.imagemagick.org/script/license.php
Tethered photography If a camera is connected to the computer via USB, photos taken are immediately downloaded to the current folder and displayed on the computer. If a file already exists with the same name, it is not overwritten but the download will not take place. Auto-rename can be achieved with the --filename option of gphoto2. In file $HOME/.config/gphoto2/settings , set the option: gphoto2=filename=<see the gphoto2 manual> This item is displayed in the Plugins menu.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceStandards.xml000066400000000000000000000017701515032643700257620ustar00rootroot00000000000000
Standards Desktop files: https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html Desktop files: https://standards.freedesktop.org/desktop-entry-spec/ XMP: IPTC4XMP: Pango mark up: Thumbnails:
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceSupportedFormats.xml000066400000000000000000000017701515032643700273600ustar00rootroot00000000000000
Supported File Formats 3FR ANI ARW AVIF BMP CR2 CR3 CRW CUR DDS DJVU DNG ERF EXR GIF GQV HEIC HEIF ICO JP2 JPE JPEG JPG JPS JXL KDC MEF MOS MPO MRW NEF NPY NRW ORF PBM PDF PEF PGM PNG PNM PPM PSD QIF QTIF RAF RAW RW2 SCR SR2 SRF SVG SVGZ TGA TIF TIFF WEBP XBM XPM Images in archive files (.ZIP, .TAR etc) can be displayed. Animated GIF and WEBP files are supported. Refer to for additional information. Preview and thumbnails of video clips can be displayed. Clips can be run via a defined external program - see Play video by left click on image .
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceTags.xml000066400000000000000000000570661515032643700247460ustar00rootroot00000000000000
XMP, Exif and IPTC The tables below show the XMP, Exif and IPTC tags used by Geeqie.
Geeqie pre-formatted tags Pre-formatted tags Geeqie Tag Exif tags used Description formatted.Camera Exif.Image.Make Exif.Image.Model Exif.Image.Software Camera and software name formatted.DateTime Exif.Photo.DateTimeOriginal Exif.Photo.SubSecTimeOriginal Exif.Image.DateTime Exif.Photo.SubSecTime Image Date formatted.ShutterSpeed Exif.Photo.ExposureTime Exif.Photo.ShutterSpeedValue Shutter speed in seconds (e.g. 1/60s) formatted.Aperture Exif.Photo.Fnumber Exif.Photo.ApertureValue Aperture (e.g. f5.6) formatted.ExposureBias Exif.Photo.ExposureBiasValue Exposure bias (e.g. +0.3) formatted.ISOSpeedRating Exif.Photo.ISOSpeedRatings ISO sensitivity (e.g. 100) formatted.FocalLength Exif.Photo.FocalLength Focal length formatted.FocalLength35mmFilm Exif.Photo.FocalLengthIn35mmFilm Exif.Photo.FocalLength Exif.Photo.FocalPlaneXResolution Exif.Photo.FocalPlaneYResolution Exif.Photo.FocalPlaneResolutionUnit Exif.Photo.PixelXDimension Exif.Photo.PixelYDimension Focal length 35mm formatted.SubjectDistance Exif.Photo.SubjectDistance Subject distance formatted.Flash Exif.Photo.Flash Flash formatted.Resolution Exif.Image.Xresolution Exif.Image.Yresolution Exif.Image.ResolutionUnit Resolution formatted.ColorProfile Exif.Image.InterColorProfile Exif.Photo.ColorSpace Exif.Iop.InteroperabilityIndex Color profile formatted.GPSAltitude Exif.GPSInfo.GPSAltitudeRef Exif.GPSInfo.GPSAltitude Altitude above sea level formatted.GPSPosition Exif.GPSInfo.GPSLatitude Exif.GPSInfo.GPSLatitudeRef Exif.GPSInfo.GPSLongitude Exif.GPSInfo.GPSLongitudeRef Latitude, Longitude formatted.localtime Exif.GPSInfo.GPSLatitude Exif.GPSInfo.GPSLatitudeRef Exif.GPSInfo.GPSLongitude Exif.GPSInfo.GPSLongitudeRef Exif.GPSInfo.GPSDateStamp Exif.GPSInfo.GPSTimeStamp Local time corrected for UTC offset, DST correction Refer to UTC and DST section. formatted.timezone Exif.GPSInfo.GPSLatitude Exif.GPSInfo.GPSLatitudeRef Exif.GPSInfo.GPSLongitude Exif.GPSInfo.GPSLongitudeRef Timezone indicated by lat/long Refer to UTC and DST section. formatted.countryname Exif.GPSInfo.GPSLatitude Exif.GPSInfo.GPSLatitudeRef Exif.GPSInfo.GPSLongitude Exif.GPSInfo.GPSLongitudeRef ISO 3166 country name indicated by lat/long formatted.countrycode Exif.GPSInfo.GPSLatitude Exif.GPSInfo.GPSLatitudeRef Exif.GPSInfo.GPSLongitude Exif.GPSInfo.GPSLongitudeRef ISO 3166 two-letter abbreviated country name indicated by lat/long formatted.star_rating Xmp.xmp.Rating Rating shown as a set of 🟊 characters
Info sidebar panes Fixed panes Tag Pane title Xmp.dc.description Comment Xmp.dc.subject Keywords Xmp.dc.title Title Xmp.xmp.Rating Rating Xmp.photoshop.Headline Headline
Location and GPS pane Tag Field formatted.GPSPosition GPS position formatted.GPSAltitude GPS altitiude formatted.timezone Time zone Xmp.photoshop.Country Country Xmp.iptc.CountryCode Country Code Xmp.photoshop.State State Xmp.photoshop.City City Xmp.iptc.Location Location
Copyright pane Tag Field Xmp.dc.creator Creator Xmp.dc.contributor Contributor Xmp.dc.rights Rights
Exif pane Tag Field formatted.Camera Camera formatted.DateTime Date formatted.localtime Local time formatted.ShutterSpeed Shutter speed formatted.Aperture Aperture formatted.ExposureBias Exposure bias formatted.ISOSpeedRating ISO sensitivity formatted.FocalLength Focal length formatted.FocalLength35mmFilm Focal length 35mm formatted.SubjectDistance Subject distance formatted.Flash Flash formatted.Resolution Resolution formatted.ColorProfile Color profile Exif.Photo.ExposureProgram Exposure Program Exif.Photo.MeteringMode Metering Mode Exif.Photo.LightSource Light Source
Exif IPTC alternative keys Conversion table Tag Field Xmp.tiff.Orientation Exif.Image.Orientation Xmp.dc.title Iptc.Application2.ObjectName Xmp.photoshop.Urgency Iptc.Application2.Urgency Xmp.photoshop.Category Iptc.Application2.Category Xmp.photoshop.SupplementalCategory Iptc.Application2.SuppCategory Xmp.dc.subject Iptc.Application2.Keywords Xmp.iptc.Location Iptc.Application2.LocationName Xmp.photoshop.Instruction Iptc.Application2.SpecialInstructions Xmp.photoshop.DateCreated Iptc.Application2.DateCreated Xmp.dc.creator Iptc.Application2.Byline Xmp.photoshop.AuthorsPosition Iptc.Application2.BylineTitle Xmp.photoshop.City Iptc.Application2.City Xmp.photoshop.State Iptc.Application2.ProvinceState Xmp.iptc.CountryCode Iptc.Application2.CountryCode Xmp.photoshop.Country Iptc.Application2.CountryName Xmp.photoshop.TransmissionReference Iptc.Application2.TransmissionReference Xmp.photoshop.Headline Iptc.Application2.Headline Xmp.photoshop.Credit Iptc.Application2.Credit Xmp.photoshop.Source Iptc.Application2.Source Xmp.dc.rights Iptc.Application2.Copyright Xmp.dc.description Iptc.Application2.Caption Xmp.photoshop.CaptionWriter Iptc.Application2.Writer
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceThumbnails.xml000066400000000000000000000035001515032643700261360ustar00rootroot00000000000000
Thumbnails This page only refers the Geeqie thumbnail caching mechanism, the shared thumbnail cache mechanism is described in Thumbnail Standards .
Format Thumbnails are stored in PNG image format. The thumbnail name is the name of the source image with “.png” appended. The modification time (mtime) of the thumbnail is set to match the source file. Thumbnails are regenerated when the timestamps of the thumbnail and source file do not match.
Location Thumbnails are stored in a location specified in Thumbnail Preferences . The directory structure of the thumbnail cache duplicates that of the location of the source files.
Size Geeqie allows the following sizes for thumbnails: 24x24, 32x32, 48x48, 64x64, 96x72, 96x96, 129x96, 128x128, 160x120, 160x160, 192x144, 192x192, 256x192, 256x256, custom Custom size has a maximum of 512x512. The thumbnail is scaled to fit within the preferred size maintaining the aspect ratio. Thumbnails are not cached for images that are equal to or smaller than the preferred thumbnail size. When a cached thumbnail's width and height do not match the preferred size, the thumbnail is regenerated.
BestImageViewer-geeqie-33ba319/doc/docbook/GuideReferenceUTC.xml000066400000000000000000000020321515032643700244620ustar00rootroot00000000000000
UTC and Daylight Saving Time (DST) Geeqie can display the local time at which a photo was taken, adjusted for UTC offset and Daylight Saving Time. If the image exif data contains the required parameters (see Pre-formatted tags ), Geeqie will use the latitude and longitude to determine which timezone the image was taken in. The UTC offset and Daylight Saving Time Correction for that timezone, combined with the GPS UTC value, will then be used to compute the correct local time. This value may be displayed in either the Info Sidebar or Overlay Screen Display by using the parameter formatted.localtime The timezone for the image may also be displayed by using the parameter formatted.timezone .
BestImageViewer-geeqie-33ba319/doc/docbook/GuideSidebars.xml000066400000000000000000000010671515032643700237530ustar00rootroot00000000000000 Sidebars A sidebar is a panel that appears next to an , and displays additional information about the image. BestImageViewer-geeqie-33ba319/doc/docbook/GuideSidebarsInfo.xml000066400000000000000000000443131515032643700245700ustar00rootroot00000000000000
Info Sidebar The Info Sidebar shows various information about the image and can also be used for metadata editing. To toggle display of the Sort Manager select Ctrl K View Info Sidebar . It consists of several panes. Left-clicking on the pane title expands or collapses the pane. Right-clicking on the pane title or on empty space opens a context menu allowing you to add and remove panes, or move them up and down.
Histogram This histogram is identical to that shown in the . It can be configured by right-click to modify the display of color or linear/logarithmic scale.
Title > Title text is stored in the Xmp.dc.title tag.
Comment Comment text is stored in the Xmp.dc.description tag.
Keywords Keywords, together with a flexible search tool, are essential for handling large image collections. Geeqie has free-form keywords and a hierarchical method of adding new keywords to an image. Keywords are stored in the Xmp.dc.subject tag. Keywords are not case-sensitive unless selected as so in Preferences The Keyword pane in the sidebar consists of two sections: The left hand section which is for free-form keywords The right hand section which is a hierarchical structure, allowing sets of keywords to be added. The contents of the left-hand box is the data written to file. The right-hand section has two types of entries : Keywords Helpers An example of keyword hierarchy is: [ ] animal [ ] mammal [ ] dog [ ] cat [ ] insect [ ] fly [ ] dragonfly daytime [ ] morning [ ] afternoon In this example daytime is a Helper, and all the others are keywords. Helpers are not stored in metadata - their purpose is only as an organisational aide. In the above example if cat is clicked, both mammal and animal will also automatically be checked, and all three transferred to the left hand box, ready for writing as metadata. If a hierarchy of keywords are checked, and the top-level item then un-checked, all lower level keywords will also be unchecked and will be removed from the left-hand pane. This action cannot be undone. Irrespective of their position in a hierarchy in the right-hand box, all keywords are written as individual entries into metadata. When metadata for an image is read in, Geeqie will attempt to recreate any hierarchies within the data, and display it accordingly in the right-hand box. Right-click on the left-hand box allows the selected keywords to be written to the currently selected files - the keywords may be either added to the existing contents, or entirely replace the existing content. Keyword completion is used when selecting keywords. If the selected area includes part of a keyword, the selection will automatically be expanded to cover the whole keyword. If no text is selected, all keywords will be used. Right-click on the right-hand box allows a connection to be made between a keyword and a mark. The section shows how marks and keywords inter-operate. The ordering of keywords in the right-hand box may be changed by drag-and-drop. The meta-data write operation for a file is triggered either manually or as defined in . If the right-click menu item Revert is executed at any time after a Show all or Collapse all , the keyword layout will be restored to the state prior to the Show all or Collapse all . If the right-click menu item Revert is executed at any time before a Show all or Collapse all , the keyword layout will be restored to the state existing at start-up. The selections in the sub-menu On any change will affect the operation of the Revert option.
Keyword Autocompletion The text box at the bottom of the keywords pane is used for autocompletion. Any keywords typed into the standard keyword box or the autocompletion box will be remembered as candidates for future autocompletion. Frequently used sets of keywords can be entered as comma-delimited lists. The list of keywords used for autocompletion can be edited on the Keywords tab of the Preferences dialog. The menu action "Keyword autocomplete", set to Alt + K by default, will shift the keyboard focus to the autocomplete box. Pressing Alt + K a second time will shift the keyboard focus back to the previous object.
List panes There are five list panes, whose contents can be configured to display Exif, XMP or IPTC metadata tags. The five panes are: Title Exif File Info Location and GPS Copyright Any metadata tag can be displayed in any pane - the pane titles merely exist as an organisational aide. It is possible to reorganise the data displayed by drag-and-dropping any item within a pane, or from one pane to another (although in some cases it makes little sense to do so). It is not possible to undo these actions, nor is there a way to reset the display to its original settings. It is also possible to drag new items from the onto any pane. As an aide, in addition to standard metadata tags, Geeqie can call lua scripts and also provides certain pre-formatted tags. These tags are: Pre-formatted tags Tag Replaced by Meta data formatted.Camera Camera and software name formatted.DateTime Image Date formatted.ShutterSpeed Shutter speed in seconds (e.g. 1/60s) formatted.Aperture Aperture (e.g. f5.6) formatted.ExposureBias Exposure bias (e.g. +0.3) formatted.ISOSpeedRating ISO sensitivity (e.g. 100) formatted.FocalLength Focal length formatted.FocalLength35mmFilm Focal length 35mm formatted.SubjectDistance Subject distance formatted.Flash Flash formatted.Resolution Resolution formatted.ColorProfile Color profile formatted.GPSAltitude Altitude above sea level formatted.GPSPosition Latitude, Longitude formatted.localtime Local time corrected for UTC offset, DST correction Refer to UTC and DST section. formatted.timezone Timezone indicated by GPS lat/long values Refer to UTC and DST section. formatted.countryname ISO 3166 country name indicated by GPS lat/long values formatted.countrycode ISO 3166 two-letter abbreviated country name indicated by GPS lat/long values file.size file size in bytes file.date file date and time in human readable form file.mode file mode flags file.ctime refer to operating system documentation for the meaning of ctime file.owner the file's owner. Refer to operating system documentation for the meaning of file permissions file.group the file's group. Refer to operating system documentation for the meaning of file permissions file.class the file's class e.g. Image, RAW image etc. file.link if the file is a symbolic link, shows the path of the source file file.page_no if the file is a multi-page file, e.g. .tiff, the current page number and page total is displayed (e.g. [2/10]) lua.lensID lens identification data Requires lua and exiftool. This function may be slow. lua.<lua script> Call a lua script The output is expected to be text.
Right-clicking on an item opens the context menu: Add entry Key Exif, IPTC, XMP or Geeqie formatted exif tags. Title Displayed title text. Show only if set Inhibit display if the tag is empty. Editable Displays the value as editable. Geeqie internally converts Exif and IPTC metadata to XMP on read and back on write, thus any changes made to Exif and IPTC here will be lost on write. You must edit the corresponding XMP instead. An exception is Makernote tags which don't have an equivalent in XMP. However Makernotes cannot be written to an external file (a sidecar or Geeqie metadata file). Show hidden Shows all entries regardless of Show only if set .
Map Display Geeqie can display maps created by the openstreetmap.org . To use this facility, Geeqie must have been compiled with the --enable-map option. Image location display All geocoded images in the currently displayed folder will show as small icons on the map. Clicking the icon will expand the icon to show an image thumbnail, plus other pre-defined image data. Right-click on the map will show other map options. Middle-click controls the map-centering function. Geo-coded search Left-click stores the latitude/longitude under the cursor into the clipboard. This may be used to define the origin of a geocode search . Geo-coding Images If an image is not geocoded, the filename or icon on the file pane can be dragged-and-dropped onto the map. The image latitude and longitude xmp meta-data will be updated to the drop position on the map. Map Centering If an internet URL containing a valid latitude and longitude is dropped on the map, the map will be re-centered on that location. The zoom level will not change. Refer to Decoding Latitude and Longitude .
BestImageViewer-geeqie-33ba319/doc/docbook/GuideSidebarsSortManager.xml000066400000000000000000000137341515032643700261220ustar00rootroot00000000000000
Sort Manager Sidebar The Sort Manager sidebar provides a convenient method to quickly sort many files into a set of folders or collections. To toggle display of the Sort Manager select Shift S View Sort Manager . The mode of the Sort Manager is selected by the drop down list under the sidebar title. The Folder mode allows moving or copying the visible image to a folder, and the Collection mode allows adding the visible image or file selection to a collection.
Folder view The Sort Manager folder view consists of a vertical list for bookmarking folders, a section to select the operation to perform, and a set of buttons along the bottom. Clicking or activating an item in the list will copy, move, or link the active image's file to that location. The active image will then change to the next image.
Bookmark list This is a list of possible folders to use as a destination for the selected operation. A context menu will appear by right clicking on an item, or pressing the menu key when the item has the focus. Folders can be added to the list by activating the Add button at the bottom of the sidebar, or dragging a folder onto the list. To edit an item select Properties from its context menu. A dialog will appear allowing the Name, Path, and Icon for the item to be changed. Select OK to close the dialog and apply the changes, or Cancel to close the dialog and discard the changes. To change the order of the list, select Move up or Move down from the item's context menu. To move an item with the keyboard move the focus to that item, then press Shift Up or Shift Down to move the item. To remove an item from the list select Remove from it's context menu.
Add button Activate this button to add a folder to the bookmark list. A dialog will appear to allow selection of the folder to use for the new item.
Undo button Activate this button to undo the last copy, move, or link operation. The undo function can only reverse the most recent operation.
Collection view The Sort Manager collection view consists of a vertical list of collection, a section to determine the current selection, and a set of buttons along the bottom. Clicking or activating an item in the list will add the selected image to that collection.
Collection list This is the list of collections located in the folder listed in Configuration Files . Activating a member of this list will result in the current image selection to be added to the collection. If the image already exists within the collection, it will not be added a second time. A new empty collection can be added to the list by activating the Add button at the bottom of the sidebar.
Choosing the selection style The images to add when activating a collection is determined by the selection style: Add image The visible image is added to the collection. Add selection All images selected in the file list will be added to the collection.
Add button Activate this button to add a new empty collection to the visible list. A dialog will appear to allow entry of the name to use for the new collection.
Undo button Activate this button to undo the last add operation. The undo function can only reverse the most recent operation.
BestImageViewer-geeqie-33ba319/doc/doxygen.conf000066400000000000000000003743321515032643700214330ustar00rootroot00000000000000# Doxyfile 1.10.0 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). # # Note: # # Use doxygen to compare the used configuration file with the template # configuration file: # doxygen -x [configFile] # Use doxygen to compare the used configuration file with the template # configuration file without replacing the environment variables or CMake type # replacement variables: # doxygen -x_noenv [configFile] #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the configuration # file that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = $(PROJECT)-$(VERSION) # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # With the PROJECT_ICON tag one can specify an icon that is included in the tabs # when the HTML document is shown. Doxygen will copy the logo to the output # directory. PROJECT_ICON = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = $(DOCDIR) # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format # and will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to # control the number of sub-directories. # The default value is: NO. CREATE_SUBDIRS = NO # Controls the number of sub-directories that will be created when # CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every # level increment doubles the number of directories, resulting in 4096 # directories at level 8 which is the default and also the maximum value. The # sub-directories are organized in 2 levels, the first level always has a fixed # number of 16 directories. # Minimum value: 0, maximum value: 8, default value: 8. # This tag requires that the tag CREATE_SUBDIRS is set to YES. CREATE_SUBDIRS_LEVEL = 8 # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, # Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English # (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, # Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with # English messages), Korean, Korean-en (Korean with English messages), Latvian, # Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, # Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, # Swedish, Turkish, Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = $(SRCDIR) # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO # If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be # interpreted by doxygen. # The default value is: NO. JAVADOC_BANNER = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # By default Python docstrings are displayed as preformatted text and doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the # doxygen's special commands can be used and the contents of the docstring # documentation blocks is shown as doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". Note that you cannot put \n's in the value part of an alias # to insert newlines (in the resulting output). You can put ^^ in the value part # of an alias to insert a newline as if a physical newline was in the original # file. When you need a literal { or } or , in the value part of an alias you # have to escape them by means of a backslash (\), this can lead to conflicts # with the commands \{ and \} for these it is advised to use the version @{ and # @} or use a double escape (\\{ and \\}) ALIASES = FIXME=@todo # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice # sources only. Doxygen will then generate output that is more tailored for that # language. For instance, namespaces will be presented as modules, types will be # separated into more groups, etc. # The default value is: NO. OPTIMIZE_OUTPUT_SLICE = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, JavaScript, # Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, # VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the # default for Fortran type files). For instance to make doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. When specifying no_extension you should add # * to the FILE_PATTERNS. # # Note see also the list of default file extension mappings. EXTENSION_MAPPING = sh=C \ pl=c \ awk=C # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. # Minimum value: 0, maximum value: 99, default value: 5. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 0 # The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to # generate identifiers for the Markdown headings. Note: Every identifier is # unique. # Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a # sequence number starting at 0 and GITHUB use the lower case version of title # with any whitespace replaced by '-' and punctuation characters removed. # The default value is: DOXYGEN. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. MARKDOWN_ID_STYLE = DOXYGEN # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. GROUP_NESTED_COMPOUNDS = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 # The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use # during processing. When set to 0 doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple # threads. Since this is still an experimental feature the default is set to 1, # which effectively disables parallel processing. Please report any issues you # encounter. Generating dot graphs in parallel is controlled by the # DOT_NUM_THREADS setting. # Minimum value: 0, maximum value: 32, default value: 1. NUM_PROC_THREADS = 1 # If the TIMESTAMP tag is set different from NO then each generated page will # contain the date or date and time when the page was generated. Setting this to # NO can help when comparing the output of multiple runs. # Possible values are: YES, NO, DATETIME and DATE. # The default value is: NO. TIMESTAMP = NO #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = YES # If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual # methods of a class will be included in the documentation. # The default value is: NO. EXTRACT_PRIV_VIRTUAL = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = YES # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = YES # If this flag is set to YES, the name of an unnamed parameter in a declaration # will be determined by the corresponding definition. By default unnamed # parameters remain unnamed in the output. # The default value is: YES. RESOLVE_UNNAMED_PARAMS = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # will also hide undocumented C++ concepts if enabled. This option has no effect # if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # With the correct setting of option CASE_SENSE_NAMES doxygen will better be # able to match the capabilities of the underlying filesystem. In case the # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly # deal with such files in case they appear in the input. For filesystems that # are not case sensitive the option should be set to NO to properly deal with # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On # Windows (including Cygwin) and MacOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. # Possible values are: SYSTEM, NO and YES. # The default value is: SYSTEM. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = YES # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_HEADERFILE tag is set to YES then the documentation for a class # will show which file needs to be included to use the class. # The default value is: YES. SHOW_HEADERFILE = YES # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = YES # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. See also section "Changing the # layout of pages" for information. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as documenting some parameters in # a documented function twice, or documenting parameters that don't exist or # using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete # function parameter documentation. If set to NO, doxygen will accept that some # parameters have no documentation without warning. # The default value is: YES. WARN_IF_INCOMPLETE_DOC = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong parameter # documentation, but not about the absence of documentation. If EXTRACT_ALL is # set to YES then this flag will automatically be disabled. See also # WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = NO # If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about # undocumented enumeration values. If set to NO, doxygen will accept # undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: NO. WARN_IF_UNDOC_ENUM_VAL = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS # then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but # at the end of the doxygen process doxygen will return with a non-zero status. # If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves # like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not # write the warning messages in between other messages but write them at the end # of a run, in case a WARN_LOGFILE is defined the warning messages will be # besides being in the defined file also be shown at the end of a run, unless # the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case # the behavior will remain as with the setting FAIL_ON_WARNINGS. # Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. # The default value is: NO. WARN_AS_ERROR = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # See also: WARN_LINE_FORMAT # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # In the $text part of the WARN_FORMAT command it is possible that a reference # to a more specific place is given. To make it easier to jump to this place # (outside of doxygen) the user can define a custom "cut" / "paste" string. # Example: # WARN_LINE_FORMAT = "'vi $file +$line'" # See also: WARN_FORMAT # The default value is: at line $line of file $file. WARN_LINE_FORMAT = "at line $line of file $file" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). In case the file specified cannot be opened for writing the # warning and error messages are written to standard error. When as file - is # specified the warning and error messages are written to standard output # (stdout). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = $(SRCDIR) # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. # See also: INPUT_FILE_ENCODING # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # This tag can be used to specify the character encoding of the source files # that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify # character encoding on a per file pattern basis. Doxygen will compare the file # name with each pattern and apply the encoding instead of the default # INPUT_ENCODING) if there is a match. The character encodings are a list of the # form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding # "INPUT_ENCODING" for further information on supported encodings. INPUT_FILE_ENCODING = # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # # Note the list of default checked file patterns might differ from the list of # default file extension mappings. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, # *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, # *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, # *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to # be provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, # *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.idl \ *.ddl \ *.odl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.cs \ *.d \ *.php \ *.php4 \ *.php5 \ *.phtml \ *.inc \ *.m \ *.markdown \ *.md \ *.rb \ *.mm \ *.dox \ *.py \ *.pyw \ *.f90 \ *.f95 \ *.f03 \ *.f08 \ *.f \ *.for \ *.tcl \ *.vhd \ *.vhdl \ *.ucf \ *.qsf \ *.sh \ *.pl \ *.awk # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = build \ subprojects # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # ANamespace::AClass, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = * # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = $(SRCDIR)/docs/images # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # # Note that doxygen will use the data processed and written to standard output # for further processing, therefore nothing else, like debug statements or used # commands (so in case of a Windows batch file always use @echo OFF), should be # written to standard output. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. FILTER_PATTERNS = *.sh=doxygen-bash.sed \ *.pl=doxygen-bash.sed \ *.awk=doxygen-bash.sed # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = # The Fortran standard specifies that for fixed formatted Fortran code all # characters from position 72 are to be considered as comment. A common # extension is to allow longer lines before the automatic comment starts. The # setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can # be processed before the automatic comment starts. # Minimum value: 7, maximum value: 10000, default value: 72. FORTRAN_COMMENT_AFTER = 72 #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # multi-line macros, enums or list initialized variables directly into the # documentation. # The default value is: NO. INLINE_SOURCES = $(INLINE_SOURCES) # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = $(STRIP_CODE_COMMENTS) # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # entity all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = YES # The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) # that should be ignored while generating the index headers. The IGNORE_PREFIX # tag works for classes, function and member names. The entity will be placed in # the alphabetical list under the first letter of the entity name that remains # after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = $(GENERATE_HTML) # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). # Note: Since the styling of scrollbars can currently not be overruled in # Webkit/Chromium, the styling will be left out of the default doxygen.css if # one or more extra stylesheets have been specified. So if scrollbar # customization is desired it has to be added explicitly. For an example see the # documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = ./doc/image-style.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output # should be rendered with a dark or light theme. # Possible values are: LIGHT always generate light mode output, DARK always # generate dark mode output, AUTO_LIGHT automatically set the mode according to # the user preference, use light mode if no preference is set (the default), # AUTO_DARK automatically set the mode according to the user preference, use # dark mode if no preference is set and TOGGLE allow to user to switch between # light and dark mode via a button. # The default value is: AUTO_LIGHT. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE = AUTO_LIGHT # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a color-wheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will # consists of multiple levels of tabs that are statically embedded in every HTML # page. Disable this option to support browsers that do not have JavaScript, # like the Qt help browser. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = YES # If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be # dynamically folded and expanded in the generated HTML source code. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_CODE_FOLDING = YES # If the HTML_COPY_CLIPBOARD tag is set to YES then doxygen will show an icon in # the top right corner of code and text fragments that allows the user to copy # its content to the clipboard. Note this only works if supported by the browser # and the web page is served via a secure context (see: # https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: # protocol. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COPY_CLIPBOARD = YES # Doxygen stores a couple of settings persistently in the browser (via e.g. # cookies). By default these settings apply to all HTML pages generated by # doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store # the settings under a project specific key, such that the user preferences will # be stored separately. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_PROJECT_COOKIE = # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: # https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To # create a documentation set, doxygen will generate a Makefile in the HTML # output directory. Running make will produce the docset in that directory and # running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy # genXcode/_index.html for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag determines the URL of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDURL = # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # on Windows. In the beginning of 2021 Microsoft took the original page, with # a.o. the download links, offline the HTML help workshop was already many years # in maintenance mode). You can download the HTML help workshop from the web # archives at Installation executable (see: # http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo # ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = $(GENERATE_HTMLHELP) # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = ../$(PROJECT).chm # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = $(HHC_PATH) # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the main .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = $(GENERATE_CHI) # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = YES # The SITEMAP_URL tag is used to specify the full URL of the place where the # generated documentation will be placed on the server by the user during the # deployment of the documentation. The generated sitemap is called sitemap.xml # and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL # is specified no sitemap is generated. For information about the sitemap # protocol see https://www.sitemaps.org # This tag requires that the tag GENERATE_HTML is set to YES. SITEMAP_URL = # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location (absolute path # including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine tune the look of the index (see "Fine-tuning the output"). As an # example, the default style sheet generated by doxygen has an example that # shows how to put an image at the root of the tree instead of the PROJECT_NAME. # Since the tree basically has the same information as the tab index, you could # consider setting DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = YES # When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the # FULL_SIDEBAR option determines if the side bar is limited to only the treeview # area (value NO) or if it should extend to the full height of the window (value # YES). Setting this to YES gives a layout similar to # https://docs.readthedocs.io with more room for contents, but less room for the # project logo, title, and description. If either GENERATE_TREEVIEW or # DISABLE_INDEX is set to NO, this option has no effect. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. FULL_SIDEBAR = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email # addresses. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. OBFUSCATE_EMAILS = YES # If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. # Possible values are: png (the default) and svg (looks nicer but requires the # pdf2svg or inkscape tool). # The default value is: png. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FORMULA_FORMAT = png # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands # to create new LaTeX commands to be used in formulas as building blocks. See # the section "Including formulas" for details. FORMULA_MACROFILE = # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # https://www.mathjax.org) which uses client side JavaScript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # With MATHJAX_VERSION it is possible to specify the MathJax version to be used. # Note that the different versions of MathJax have different requirements with # regards to the different settings, so it is possible that also other MathJax # settings have to be changed when switching between the different MathJax # versions. # Possible values are: MathJax_2 and MathJax_3. # The default value is: MathJax_2. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_VERSION = MathJax_2 # When MathJax is enabled you can set the default output format to be used for # the MathJax output. For more details about the output format see MathJax # version 2 (see: # http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 # (see: # http://docs.mathjax.org/en/latest/web/components/output.html). # Possible values are: HTML-CSS (which is slower, but has the best # compatibility. This is the name for Mathjax version 2, for MathJax version 3 # this will be translated into chtml), NativeMML (i.e. MathML. Only supported # for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This # is the name for Mathjax version 3, for MathJax version 2 this will be # translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from https://www.mathjax.org before deployment. The default value is: # - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 # - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # for MathJax version 2 (see # https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # For example for MathJax version 3 (see # http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): # MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: # http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /