sxiv - Arch Linux 中文维基

跳转到内容

# sxiv

来自 Arch Linux 中文维基

翻译状态：

- 本文（或部分内容）译自 Sxiv，最近一次同步于 2026-07-27，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

相关文章

- feh

sxiv，Simple X Image Viewer（简单的 X 图像查看器）是一个用 C 实现的轻量且可脚本的图像查看器。

## 安装

安装以下其中一个软件包：

- nsxiv包，一个基于现在不维护 sxiv 的分支，旨在作为 sxiv 的（大致）下位替代，维护他的界面并添加简单的、合理的功能。
- sxiv包，原始的软件包。已经不再维护。

## 用法

### 配置快捷键

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.

分类：​

- 图片

sxiv
添加话题