Provide image width and height to image-info script; fixes issue #159

This commit is contained in:
Bert Münnich 2016-08-06 12:22:47 +02:00
parent f32771a647
commit aabc2bddbd
3 changed files with 12 additions and 5 deletions

View File

@ -1,16 +1,19 @@
#!/bin/sh #!/bin/sh
# Example for $XDG_CONFIG_HOME/sxiv/exec/image-info # Example for $XDG_CONFIG_HOME/sxiv/exec/image-info
# Called by sxiv(1) whenever an image gets loaded, # Called by sxiv(1) whenever an image gets loaded.
# with the name of the image file as its first argument.
# The output is displayed in sxiv's status bar. # The output is displayed in sxiv's status bar.
# Arguments:
# $1: path to image file
# $2: image width
# $3: image height
s=" | " # field separator s=" | " # field separator
filename=$(basename -- "$1") filename=$(basename -- "$1")
filesize=$(du -Hh -- "$1" | cut -f 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 ';' ',') tags=$(identify -format '%[IPTC:2:25]' ":$1" | tr ';' ',')
echo "${filesize}${s}${geometry}${tags:+$s}${tags}${s}${filename}" echo "${filesize}${s}${geometry}${tags:+$s}${tags}${s}${filename}"

5
main.c
View File

@ -224,6 +224,7 @@ void open_info(void)
{ {
static pid_t pid; static pid_t pid;
int pfd[2]; int pfd[2];
char w[12], h[12];
if (info.f.err != 0 || info.open || win.bar.h == 0) if (info.f.err != 0 || info.open || win.bar.h == 0)
return; return;
@ -239,7 +240,9 @@ void open_info(void)
if ((pid = fork()) == 0) { if ((pid = fork()) == 0) {
close(pfd[0]); close(pfd[0]);
dup2(pfd[1], 1); 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); error(EXIT_FAILURE, errno, "exec: %s", info.f.cmd);
} }
close(pfd[1]); close(pfd[1]);

3
sxiv.1
View File

@ -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 with the output of a user-provided script, which is called by sxiv whenever an
image gets loaded. The path of this script is image gets loaded. The path of this script is
.I $XDG_CONFIG_HOME/sxiv/exec/image-info .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 .P
There is also an example script installed together with sxiv as There is also an example script installed together with sxiv as
.IR PREFIX/share/sxiv/exec/image-info . .IR PREFIX/share/sxiv/exec/image-info .