aboutsummaryrefslogtreecommitdiffstats
path: root/etc/examples
diff options
context:
space:
mode:
authorNRK <nrk@disroot.org>2022-08-09 16:21:52 +0200
committerNRK <nrk@disroot.org>2022-08-09 16:21:52 +0200
commitfb9686c6505475f342ad94fa5ed1351f554f97fe (patch)
treea98e1fa77e8bdb49109bba0118ab09bc871a2c6c /etc/examples
parent8dc126194fc72f641ca097ab4f8433cd9c268b67 (diff)
downloadnsxiv-fb9686c6505475f342ad94fa5ed1351f554f97fe.tar.zst
Move uncritical files into `etc/` (#350)
This is mainly just to reduce the amount of files in the project root. The criteria of what gets into `etc/` are the following: * The file should not be necessary for building nsxiv. This excludes the `icon/*` stuff since that's needed by `window.c`. * The file shouldn't have any valid reason to stay in the project root. This excludes things like `README.md`, `.gitignore` etc. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/350 Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
Diffstat (limited to 'etc/examples')
-rwxr-xr-xetc/examples/image-info21
-rwxr-xr-xetc/examples/key-handler41
-rwxr-xr-xetc/examples/thumb-info20
-rwxr-xr-xetc/examples/win-title27
4 files changed, 109 insertions, 0 deletions
diff --git a/etc/examples/image-info b/etc/examples/image-info
new file mode 100755
index 0000000..5f06123
--- /dev/null
+++ b/etc/examples/image-info
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Example for $XDG_CONFIG_HOME/nsxiv/exec/image-info
+# Called by nsxiv(1) whenever an image gets loaded.
+# The output is displayed in nsxiv's status bar.
+# Arguments:
+# $1: path to image file (as provided by the user)
+# $2: image width
+# $3: image height
+# $4: fully resolved path to the image file
+
+s=" " # field separator
+
+exec 2>/dev/null
+
+filename=$(basename -- "$1")
+filesize=$(du -Hh -- "$1" | cut -f 1)
+geometry="${2}x${3}"
+
+echo "${filesize}${s}${geometry}${s}${filename}"
+
diff --git a/etc/examples/key-handler b/etc/examples/key-handler
new file mode 100755
index 0000000..3fe741d
--- /dev/null
+++ b/etc/examples/key-handler
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# Example for $XDG_CONFIG_HOME/nsxiv/exec/key-handler
+# Called by nsxiv(1) after the external prefix key (C-x by default) is pressed.
+# The next key combo is passed as its first argument. Passed via stdin are the
+# images to act upon: all marked images, if in thumbnail mode and at least one
+# image has been marked, otherwise the current image. nsxiv(1) will block until
+# the handler terminates. It then checks which images have been modified and
+# reloads them.
+
+# By default nsxiv(1) will send one image per-line to stdin, however when using
+# -0 the image list will be NULL separated and the environment variable
+# "$NSXIV_USING_NULL" will be set to 1.
+
+# The key combo argument has the following form: "[C-][M-][S-]KEY",
+# where C/M/S indicate Ctrl/Meta(Alt)/Shift modifier states and KEY is the X
+# keysym as listed in /usr/include/X11/keysymdef.h without the "XK_" prefix.
+# If KEY has an uppercase equivalent, S-KEY is resolved into it. For instance,
+# K replaces S-k and Scedilla replaces S-scedilla, but S-Delete is sent as-is.
+
+rotate() {
+ degree="$1"
+ tr '\n' '\0' | xargs -0 realpath | sort | uniq | while read file; do
+ case "$(file -b -i "$file")" in
+ image/jpeg*) jpegtran -rotate "$degree" -copy all -outfile "$file" "$file" ;;
+ *) mogrify -rotate "$degree" "$file" ;;
+ esac
+ done
+}
+
+case "$1" in
+"C-x") xclip -in -filter | tr '\n' ' ' | xclip -in -selection clipboard ;;
+"C-c") while read file; do xclip -selection clipboard -target image/png "$file"; done ;;
+"C-e") while read file; do urxvt -bg "#444" -fg "#eee" -sl 0 -title "$file" -e sh -c "exiv2 pr -q -pa '$file' | less" & done ;;
+"C-g") tr '\n' '\0' | xargs -0 gimp & ;;
+"C-r") while read file; do rawtherapee "$file" & done ;;
+"C-comma") rotate 270 ;;
+"C-period") rotate 90 ;;
+"C-slash") rotate 180 ;;
+esac
+
diff --git a/etc/examples/thumb-info b/etc/examples/thumb-info
new file mode 100755
index 0000000..b422f9c
--- /dev/null
+++ b/etc/examples/thumb-info
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Example for $XDG_CONFIG_HOME/nsxiv/exec/thumb-info
+# Called by nsxiv(1) whenever the selected thumbnail changes.
+# The output is displayed in nsxiv's status bar.
+# Arguments:
+# $1: path to image file (as provided by the user)
+# $2: empty
+# $3: empty
+# $4: fully resolved path to the image file
+
+s=" " # field separator
+
+exec 2>/dev/null
+
+filename=$(basename -- "$4")
+filesize=$(du -Hh -- "$4" | cut -f 1)
+
+echo "${filesize}${s}${filename}"
+
diff --git a/etc/examples/win-title b/etc/examples/win-title
new file mode 100755
index 0000000..31994ef
--- /dev/null
+++ b/etc/examples/win-title
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Example for $XDG_CONFIG_HOME/nsxiv/exec/win-title
+# Called by nsxiv(1) whenever any of the relevant information changes.
+# The output is set as nsxiv's window title.
+#
+# Arguments, "Optional" arguments might be empty:
+# $1: resolved absolute path of the current file
+# $2: current file number
+# $3: total file number
+# $4: image width (Optional: Disabled on thumbnails mode)
+# $5: image height (Optional: Disabled on thumbnails mode)
+# $6: current zoom (Optional: Disabled on thumbnails mode)
+#
+# The term file is used rather than image as nsxiv does not
+# precheck that the input files are valid images. Total file
+# count may be different from the actual count of valid images.
+
+exec 2>/dev/null
+
+filename="${1##*/}"
+
+if [ -n "$4" ]; then # image mode
+ printf "%s" "nsxiv - ${filename} | ${4}x${5} ${6}% [${2}/${3}]"
+else
+ printf "%s" "nsxiv - ${filename} [${2}/${3}]"
+fi