跳至內容

sxiv

出自 Arch Linux 中文维基

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 ~/.trashCtrl+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}"

另請參閱