sxiv (Українська)

From ArchWiki


sxiv, це простий переглядач зображень для X написаний на мові C. Він невибагливий до ресурсів, а також дозволяє писати до нього скрипти.

Як встановити?

Встановіть пакунок sxiv або sxiv-gitAUR для версії в розробці.

Використання

Як задати гарячі клавіші?

Ви можете використовувати сторонній скрипт для обробки комбінацій клавіш в sxiv. Для цього натисніть Ctrl-x та ще одну клавішу. Вона буде передана до стороннього скрипта. Цей скрипт має знаходитися у файлі ~/.config/sxiv/exec/key-handler. Він приймає комбінацію натиснутих клавіш як аргумент, а назви виділених зображень — через stdin. Якщо жодне зображення не вибране, то скрипт отримає те зображення, що зараз на екрані. Приклад такого скрипта-обробника можна знайти в /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 назва файлу ~/.trash, Ctrl+c копіюватиме назви обраних зображень в буфер обміну, а 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
Порада: Краще буде скористатися однією із загальноприйнятих програм смітників (на кшталт trash-cli чи bashtrashAUR[пакет відсутній: package not found]) ніж командою mv "$2" ~/.trash.

Корисні поради

Як подивитися всі зображення в теці, якщо відкрив лише одне?

Розробника sxiv кілька разів просили додати можливість переглядати всі зображення, що знаходяться в одній теці з файлом, що його назва була передана як аргумент. (див. [1] і [2]). Існують форки, де така можливість додана: від doronbehar-а, від qsmodo та від sammoth-а.

Інший спосіб — використовувати стандартний sxiv, але помістити в теку /usr/local/bin цей скрипт. Викликати його треба так:

$ назва_скрипта зображення.jpg

Як сказано в коментарі до скрипта, його можна використовувати всередині файлового переглядача ranger.

А цей скрипт з [3] запускає sxiv в режимі списку ескізів (thumbnail mode) якщо переданий аргумент це назва теки (лише в цьому випадку):

~/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

# Це приклад скрипта ~/.config/sxiv/exec/image-info
# sxiv(1) викликає його кожного разу, коли завантажує якесь зображення,
# а його назву передає як перший аргумент.
# Результат виводиться на панелі статусу.

s=" | " # Розділювач між полями

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}"

Див. також