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
新增話題