Change all .desktop files to RDNS style
authorColin Clark <colin.clark@cclark.uk>
Sat, 28 Oct 2023 10:19:33 +0000 (11:19 +0100)
committerColin Clark <colin.clark@cclark.uk>
Sat, 28 Oct 2023 10:19:33 +0000 (11:19 +0100)
24 files changed:
plugins/camera-import/meson.build
plugins/camera-import/org.geeqie.camera-import.desktop.in [moved from plugins/camera-import/camera-import.desktop.in with 100% similarity]
plugins/export-jpeg/meson.build
plugins/export-jpeg/org.geeqie.export-jpeg.desktop.in [moved from plugins/export-jpeg/export-jpeg.desktop.in with 100% similarity]
plugins/image-crop/meson.build
plugins/image-crop/org.geeqie.image-crop.desktop.in [moved from plugins/image-crop/image-crop.desktop.in with 100% similarity]
plugins/meson.build
plugins/org.geeqie.template.desktop.in [moved from plugins/template.desktop.in with 100% similarity]
plugins/random-image/meson.build
plugins/random-image/org.geeqie.random-image.desktop.in [moved from plugins/random-image/random-image.desktop.in with 100% similarity]
plugins/refresh-thumbnail/geeqie-refresh-thumbnail [new file with mode: 0755]
plugins/refresh-thumbnail/geeqie-refresh-thumbnail.sh [new file with mode: 0755]
plugins/refresh-thumbnail/meson.build [new file with mode: 0644]
plugins/refresh-thumbnail/org.geeqie.refresh-thumbnail.desktop.in [new file with mode: 0644]
plugins/resize-image/meson.build
plugins/resize-image/org.geeqie.resize-image.desktop.in [moved from plugins/resize-image/resize-image.desktop.in with 100% similarity]
plugins/rotate/meson.build
plugins/rotate/org.geeqie.rotate.desktop.in [moved from plugins/rotate/rotate.desktop.in with 100% similarity]
plugins/symlink/meson.build
plugins/symlink/org.geeqie.symlink.desktop.in [moved from plugins/symlink/symlink.desktop.in with 100% similarity]
plugins/tethered-photography/meson.build
plugins/tethered-photography/org.geeqie.tethered-photography.desktop.in [moved from plugins/tethered-photography/tethered-photography.desktop.in with 100% similarity]
plugins/video-player/meson.build
plugins/video-player/org.geeqie.video-player.desktop.in [moved from plugins/video-player/video-player.desktop.in with 100% similarity]

index 9920664..e57bc35 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-camera-import', 'geeqie-camera-import-hook-script', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'camera-import.desktop.in',
-    output : 'camera-import.desktop',
+    input : 'org.geeqie.camera-import.desktop.in',
+    output : 'org.geeqie.camera-import.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index 14c6983..47828d8 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-export-jpeg', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'export-jpeg.desktop.in',
-    output : 'export-jpeg.desktop',
+    input : 'org.geeqie.export-jpeg.desktop.in',
+    output : 'org.geeqie.export-jpeg.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index a293716..13aa433 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-image-crop', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'image-crop.desktop.in',
-    output : 'image-crop.desktop',
+    input : 'org.geeqie.image-crop.desktop.in',
+    output : 'org.geeqie.image-crop.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index 2476acd..65d55bb 100644 (file)
@@ -24,8 +24,8 @@ subdir('tethered-photography')
 subdir('video-player')
 
 i18n.merge_file(
-    input : 'template.desktop.in',
-    output : 'template.desktop',
+    input : 'org.geeqie.template.desktop.in',
+    output : 'org.geeqie.template.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index 9a6070a..4739660 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-random-image', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'random-image.desktop.in',
-    output : 'random-image.desktop',
+    input : 'org.geeqie.random-image.desktop.in',
+    output : 'org.geeqie.random-image.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
diff --git a/plugins/refresh-thumbnail/geeqie-refresh-thumbnail b/plugins/refresh-thumbnail/geeqie-refresh-thumbnail
new file mode 100755 (executable)
index 0000000..86ca6cc
--- /dev/null
@@ -0,0 +1,169 @@
+#!/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 --width=200 --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/pixmaps/geeqie.png --width=250 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 --width=500 --height=250 --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 -F ':' '{print $1}' | awk '{print $NF}')
+camera=$(printf '%s\n' "$camera_selected" | awk -F "$port_type" '{print $1}')
+port_address=$(printf '%s\n' "$camera_selected" | awk -F ':' '{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<b>$PWD</b>" --ok-label="OK" --cancel-label="Cancel" --window-icon=/usr/local/share/pixmaps/geeqie.png --width=350 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 '/#/ {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/pixmaps/geeqie.png --width=250
+
+error=$(grep -i error /tmp/geeqie-camera-import.log)
+
+if [ -n "$error" ]
+then
+       zenity --text-info --title="Geeqie camera import" - --window-icon=error --width=250 < /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" --width=400 --window-icon=/usr/local/share/pixmaps/geeqie.png 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" --width=250 --window-icon=usr/local/share/pixmaps/geeqie.png 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" --width=370 --text="Downloading: total: $files_to_load existing: $existing_file_count\n" --auto-close --auto-kill --percentage=0 window-icon=/usr/local/share/pixmaps/geeqie.png 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
diff --git a/plugins/refresh-thumbnail/geeqie-refresh-thumbnail.sh b/plugins/refresh-thumbnail/geeqie-refresh-thumbnail.sh
new file mode 100755 (executable)
index 0000000..2520385
--- /dev/null
@@ -0,0 +1,181 @@
+#!/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 [ $XDG_CACHE_HOME ]
+then
+       
+       thumb_dir="$XDG_CACHE_HOME"
+else
+       thumb_dir="$HOME/.cache/geeqie/thumbnails"
+fi
+echo $thumb_dir
+
+exit
+
+
+if ! [ -x "$(command -v gphoto2)" ]
+then
+       zenity --title="Geeqie camera import" --info --width=200 --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/pixmaps/geeqie.png --width=250 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 --width=500 --height=250 --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 -F ':' '{print $1}' | awk '{print $NF}')
+camera=$(printf '%s\n' "$camera_selected" | awk -F "$port_type" '{print $1}')
+port_address=$(printf '%s\n' "$camera_selected" | awk -F ':' '{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<b>$PWD</b>" --ok-label="OK" --cancel-label="Cancel" --window-icon=/usr/local/share/pixmaps/geeqie.png --width=350 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 '/#/ {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/pixmaps/geeqie.png --width=250
+
+error=$(grep -i error /tmp/geeqie-camera-import.log)
+
+if [ -n "$error" ]
+then
+       zenity --text-info --title="Geeqie camera import" - --window-icon=error --width=250 < /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" --width=400 --window-icon=/usr/local/share/pixmaps/geeqie.png 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" --width=250 --window-icon=usr/local/share/pixmaps/geeqie.png 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" --width=370 --text="Downloading: total: $files_to_load existing: $existing_file_count\n" --auto-close --auto-kill --percentage=0 window-icon=/usr/local/share/pixmaps/geeqie.png 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
diff --git a/plugins/refresh-thumbnail/meson.build b/plugins/refresh-thumbnail/meson.build
new file mode 100644 (file)
index 0000000..9877a39
--- /dev/null
@@ -0,0 +1,22 @@
+# This file is a part of Geeqie project (https://www.geeqie.org/).
+# Copyright (C) 2008 - 2022 The Geeqie Team
+#
+# 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
+#
+
+install_data('geeqie-refresh-thumbnail', install_dir : gq_bindir)
+
+i18n.merge_file(
+    input : 'org.geeqie.refresh-thumbnail.desktop.in',
+    output : 'org.geeqie.refresh-thumbnail.desktop',
+    type : 'desktop',
+    po_dir : podir,
+    install : true,
+    install_dir : desktopdir)
diff --git a/plugins/refresh-thumbnail/org.geeqie.refresh-thumbnail.desktop.in b/plugins/refresh-thumbnail/org.geeqie.refresh-thumbnail.desktop.in
new file mode 100644 (file)
index 0000000..14d5725
--- /dev/null
@@ -0,0 +1,20 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=Refresh Thumbnail
+Comment=Refresh Thumbnail
+
+# Requires gphoto2
+# The gphoto2 file $HOME/.gphoto2/settings can
+# be used to set auto-rename on download
+
+Exec=geeqie-refresh-thumbnail
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
index 23db14b..ae75039 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-resize-image', 'downsize', 'resize-help.sh', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'resize-image.desktop.in',
-    output : 'resize-image.desktop',
+    input : 'org.geeqie.resize-image.desktop.in',
+    output : 'org.geeqie.resize-image.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index f815525..7110e53 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-rotate', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'rotate.desktop.in',
-    output : 'rotate.desktop',
+    input : 'org.geeqie.rotate.desktop.in',
+    output : 'org.geeqie.rotate.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index f4e7bc5..bbc3e84 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-symlink', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'symlink.desktop.in',
-    output : 'symlink.desktop',
+    input : 'org.geeqie.symlink.desktop.in',
+    output : 'org.geeqie.symlink.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index 26a5c71..5544b0a 100644 (file)
@@ -14,8 +14,8 @@
 install_data('geeqie-tethered-photography', 'geeqie-tethered-photography-hook-script', install_dir : gq_bindir)
 
 i18n.merge_file(
-    input : 'tethered-photography.desktop.in',
-    output : 'tethered-photography.desktop',
+    input : 'org.geeqie.tethered-photography.desktop.in',
+    output : 'org.geeqie.tethered-photography.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,
index 861e9bd..1f25ed6 100644 (file)
@@ -12,8 +12,8 @@
 #
 
 i18n.merge_file(
-    input : 'video-player.desktop.in',
-    output : 'video-player.desktop',
+    input : 'org.geeqie.video-player.desktop.in',
+    output : 'org.geeqie.video-player.desktop',
     type : 'desktop',
     po_dir : podir,
     install : true,