sxiv
sxiv,Simple X Image Viewer(简单的 X 图像查看器)是一个用 C 实现的轻量且可脚本的图像查看器。
安装
安装以下其中一个软件包:
用法
配置快捷键
sxiv 支持外部按键事件。首先您需要按下 Ctrl-x 才能发送下一个按键给外部按键处理器。外部按键处理器需要一个可执行文件 ~/.config/sxiv/exec/key-handler 并通过参数传入按下的按键组合,以及当前标记的图像名称作为标准输入(或者当前选择的图片,如果没有标记的图片)。一个示例的按键处理器当安装 sxiv 后存在于:/usr/share/sxiv/exec/key-handler。这个示例是一个作为自定义快捷键的绝佳开始。
$ mkdir -p ~/.config/sxiv/exec/ $ cp /usr/share/sxiv/exec/key-handler ~/.config/sxiv/exec/key-handler
确保标记脚本为可执行。
在接下来的例子中,我们将会添加一个按键绑定 Ctrl+d 来执行 mv filename ~/.trash,Ctrl+c 来复制当前图片的名字到剪切板通过 xclip包,以及 Ctrl+w 通过 nitrogen 来设定当前壁纸。显然,一些命令可能只能传递单个图片作为参数才行,所以您可能想修改一下来处理那些传递不止一个的情况。
~/.config/sxiv/exec/key-handler
#!/bin/sh
while read file
do
case "$1" in
"C-d")
mv "$file" ~/.trash ;;
"C-r")
convert -rotate 90 "$file" "$file" ;;
"C-c")
echo -n "$file" | xclip -selection clipboard ;;
"C-w")
nitrogen --save --set-zoom-fill "$file" ;;
esac
done
创建 .trash 文件夹如果它不存在:
$ mkdir ~/.trash
mv "$2" ~/.trash.提示和技巧
在打开单个文件之后浏览目录中的图片
sxiv 的开发者曾多次被请求让他的程序可以浏览一个目录下的所有的图片当给出一个文件名作为参数(参见 [1] 和 [2])。有一些分支已添加此功能:doronbehar 的分支,qsmodo 的分支 以及 sammoth 的分支。
除此之外,您可以使用官方版的 sxiv包 并将 此脚本 置于 /usr/local/bin 然后像这样使用它:
$ scriptname a_single_image.jpg
如脚本中的注释所述,当从 ranger 内打开图片时,它可能会被用于此模式。
此 Shell 脚本来自 [3] sxiv 只有当传递的文件参数是一个目录时才启动略缩图模式:
~/bin/sxiv.sh
#!/bin/sh
if command -v sxiv >/dev/null 2>&1; then
if [ -d "${@: -1}" ] || [ -h "${@: -1}" ]; then
sxiv -t "$@"
else
sxiv "$@"
fi
elif command -v feh >/dev/null 2>&1; then
feh "$@"
else
echo "Please install SXIV or FEH!"
fi
在状态栏中显示图片大小
请将以下可执行脚本置于 ~/.config/sxiv/exec/image-info 并确保您安装了 exiv2包 软件包:
~/.config/sxiv/exec/image-info
#!/bin/sh
# Example for ~/.config/sxiv/exec/image-info
# 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.
s=" | " # field separator
filename=$(basename "$1")
filesize=$(du -Hh "$1" | cut -f 1)
# The '[0]' stands for the first frame of a multi-frame file, e.g. gif.
geometry=$(identify -format '%wx%h' "$1[0]")
tags=$(exiv2 -q pr -pi "$1" | awk '$1~"Keywords" { printf("%s,", $4); }')
tags=${tags%,}
echo "${filesize}${s}${geometry}${tags:+$s}${tags}${s}${filename}"
另请参阅
- Arch Linux forum thread.
- Sxiv for keyboard layout bépo (keyboard layout in the spirit of Dvorak for French speakers) : Sxiv bépo.