diff options
-rw-r--r-- | exec/image-info | 9 | ||||
-rw-r--r-- | main.c | 5 | ||||
-rw-r--r-- | sxiv.1 | 3 |
3 files changed, 12 insertions, 5 deletions
diff --git a/exec/image-info b/exec/image-info index a14ee7a..8e1b805 100644 --- a/exec/image-info +++ b/exec/image-info @@ -1,16 +1,19 @@ #!/bin/sh # Example for $XDG_CONFIG_HOME/sxiv/exec/image-info -# Called by sxiv(1) whenever an image gets loaded, -# with the name of the image file as its first argument. +# Called by sxiv(1) whenever an image gets loaded. # The output is displayed in sxiv's status bar. +# Arguments: +# $1: path to image file +# $2: image width +# $3: image height s=" | " # field separator filename=$(basename -- "$1") filesize=$(du -Hh -- "$1" | cut -f 1) -geometry=$(identify -format '%wx%h' ":$1[0]") +geometry="${2}x${3}" tags=$(identify -format '%[IPTC:2:25]' ":$1" | tr ';' ',') echo "${filesize}${s}${geometry}${tags:+$s}${tags}${s}${filename}" @@ -224,6 +224,7 @@ void open_info(void) { static pid_t pid; int pfd[2]; + char w[12], h[12]; if (info.f.err != 0 || info.open || win.bar.h == 0) return; @@ -239,7 +240,9 @@ void open_info(void) if ((pid = fork()) == 0) { close(pfd[0]); dup2(pfd[1], 1); - execl(info.f.cmd, info.f.cmd, files[fileidx].name, NULL); + snprintf(w, sizeof(w), "%d", img.w); + snprintf(h, sizeof(h), "%d", img.h); + execl(info.f.cmd, info.f.cmd, files[fileidx].name, w, h, NULL); error(EXIT_FAILURE, errno, "exec: %s", info.f.cmd); } close(pfd[1]); @@ -366,7 +366,8 @@ The information displayed on the left side of the status bar can be replaced with the output of a user-provided script, which is called by sxiv whenever an image gets loaded. The path of this script is .I $XDG_CONFIG_HOME/sxiv/exec/image-info -and the first argument to this script is the path of the loaded image. +and the arguments given to it are: 1) path to image file, 2) image width, +3) image height. .P There is also an example script installed together with sxiv as .IR PREFIX/share/sxiv/exec/image-info . |