# Feh (Русский)

Ссылки по теме

- Nitrogen (Русский)
- sxiv

Состояние перевода: На этой странице представлен перевод статьи GnuPG. Дата последней синхронизации: 13 декабря 2015‎‎. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Feh это лёгкий и мощный просмотрщик изображений, который также может управлять фоном рабочего стола для оконных менеджеров, не умеющих делать это самостоятельно.

## Установка

Установите пакет feh

## Использование

Feh имеет множество настроек. Для получения полного списка опций, выполните `feh --help`.

### Как просмотрщик изображений

Чтобы быстро просматривать изображения в определенном каталоге, вы можете запустить feh со следующими параметрами:

    $ feh -g 640x480 -d -S filename /path/to/directory

- Ключ `-g` используется для просмотра изображений в разрешении 640x480
- Ключ `-d` отображает имя файла
- Ключ `-S filename` сортирует изображения по их названию

Это всего лишь один пример; есть много других вариантов для большей гибкости.

#### Более удобный просмотр изображений

Если открывать изображение с помощью feh из файлового менеджера, то, чтобы просмотреть все изображения в каталоге вам прийдется или открывать непосредственно каждый файл по очереди, или выделить все файлы, а затем открыть их. Это очень некомфортно.

Данный скрипт способен обойти эти неудобства.

    feh_browser.sh

    #!/bin/bash

    shopt -s nullglob

    if [[ ! -f $1 ]]; then
    	echo "$0: first argument is not a file" >&2
    	exit 1
    fi

    file=$(basename -- "$1")
    dir=$(dirname -- "$1")
    arr=()
    shift

    cd -- "$dir"

    for i in *; do
    	[[ -f $i ]] || continue
    	arr+=("$i")
    	[[ $i == $file ]] && c=$((${#arr[@]} - 1))
    done

    exec feh "$@" -- "${arr[@]:c}" "${arr[@]:0:c}"

Скрипт принимает первый аргумент, как имя файла.

Запустите скрипт с путем до выбранного изображения с любыми дополнительными параметрами. Пример запуска, который вы можете использовать в своем файловом менеджере:

    $ /path/to/script/feh_browser.sh %f -F -Z

`-F` и `-Z` аргументы feh. `-F` открывает изображения в полноэкранном режиме, а `-Z` автоматически масштабирует. Добавление ключа `-q` (quiet) предотвращает спам сообщениями об ошибках, когда feh пытается открыть не изображения из текущего каталога.

Простая, но менее функциональная альтернатива:

    feh_browser.sh

    #! /bin/sh
    feh -. "$(dirname "$1")" --start-at "$1"

Этот скрипт не имеет возможности принимать какие-либо дополнительные параметры.

### Как менеджер фона рабочего стола

Информация в этой статье или разделе устарела

Причина: GNOME Files больше не управляет рабочим столом (его обрабатыает GNOME Shell) и Files больше не используют GConf. Информация о Gnome требует переработки или удаления. (Обсудить)

Feh может управлять обоями рабочего стола для оконных менеджеров, не имеющих такой функции, таких как Openbox и Fluxbox.

При использовании GNOME, Вы должны отключить управление рабочим столом в GNOME Files. Самый быстрый способ сделать это:

    $ gconftool-2 --set /apps/nautilus/preferences/show_desktop --type boolean false

Эта команда является примером для установки фона рабочего стола:

    $ feh --bg-scale /path/to/image.file

Другие варианты опций:

    --bg-tile FILE
    --bg-center FILE
    --bg-seamless FILE

Для сохранения фона в следующих сессиях, добавьте команду в автозагрузку (например `~/.xinitrc`, `~/.config/openbox/autostart.sh`, и т.д.):

    sh ~/.fehbg &

Чтобы изменить фоновое изображение, измените `~/.fehbg`, который будет создан после выполнения команды `feh --bg-scale /path/to/image.file` упомянутой выше.

## Советы и рекомендации

#### Просмотр SVG изображений

    $ feh --magick-timeout 1 file.svg

Обратите внимание, что вам нужен imagemagick

### Случайный фон рабочего стола

Вы можете заставить feh ставить случайные обои используя опцию `--randomize` с одной из `--bg-foo` опцией, пример:

    $ feh --randomize --bg-fill ~/.wallpaper/*

Команда выше говорит feh'у перемешать список файлов в каталоге `~/.wallpaper/` и установить фоны для всех доступных рабочих столов. В этом случае берется первое изображение из перемешанного списка (одно уникальное изображение на каждый рабочий стол). Вы также можете сделать это рекурсивно, если ваш каталог с обоями содержит подкаталоги:

    $ feh --recursive --randomize --bg-fill ~/.wallpaper

Чтобы получать для каждой сессии разные случайные обои из `~/.wallpaper`, добавьте следующее в ваш `.xinitrc`:

    $ feh --bg-max --randomize ~/.wallpaper/* &

Другой способ устанавливать случайные обои для каждой x.org сессии - отредактируйте ваш `.fehbg`, как показано ниже:

    $HOME/.fehbg

     feh --bg-max --randomize --no-fehbg ~/.wallpaper/*

Для периодической смены обоев используйте скрипт, cron или systemd для выполнения команды с желаемым интервалом.

#### Использование скрипта

Для случайного изменения обоев, создайте скрипт на примере приведённого кода (например `wallpaper.sh`). Сделайте скрипт исполняемым и вызывайте его из `~/.xinitrc`. Вы можете поместить код непосредственно в `~/.xinitrc`, а не отдельным файлом.

Измените каталог `~/.wallpaper` в соответствии с вашими настройками, также можно указать задержку `15m`, по вашему желанию (смотрите `man sleep` для опций).

    wallpaper.sh

    #!/bin/sh

    while true; do
    	find ~/.wallpaper -type f \( -name '*.jpg' -o -name '*.png' \) -print0 |
    		shuf -n1 -z | xargs -0 feh --bg-max
    	sleep 15m
    done

Замените `find ~/.wallpaper` на `find ~/.wallpaper/`, если код выше не работает.

Эта версия не создает так много форков, но она не работает рекурсивно по каталогам:

    wallpaper.sh

    #!/bin/bash

    shopt -s nullglob
    cd ~/.wallpaper

    while true; do
    	files=()
    	for i in *.jpg *.png; do
    		[[ -f $i ]] && files+=("$i")
    	done
    	range=${#files[@]}

    	((range)) && feh --bg-scale "${files[RANDOM % range]}"

    	sleep 15m
    done

##### Для двух экранов no-xinerama

Этот скрипт заменяет вызов feh для добавления обоев на системах с двумя экранами nvidia twinview (для например):

    wallpaper.sh

    #!/bin/sh
    exec feh --bg-max --no-xinerama "$@"

#### Используя cron

Используя cron, вы получите схожий результат и это не требует все время держать скрипт, который большее время спит.

Выполните `$ crontab -e` и добавьте:

    * * * * *  DISPLAY=:0.0 feh --bg-max "$(find ~/.wallpaper/|shuf -n1)"

#### Используя пользовательсую сессию systemd

Примечание: Это пригодно только если вы используете пользовательскую сессию systemd. Прочитайте Systemd/Пользователь для дополнительной информации.

Создайте юнит service:

    $HOME/.config/systemd/user/feh-wallpaper.service

    [Unit]
    Description=Random wallpaper with feh

    [Service]
    Type=oneshot
    EnvironmentFile=%h/.wallpaper
    ExecStart=/bin/bash -c '/usr/bin/feh --bg-max "$(find ${WALLPATH}|shuf|head -n 1)"'

    [Install]
    WantedBy=default.target

Теперь создайте юнит таймера. При необходимости измените время. В это примере `15 секунд`:

    $HOME/.config/systemd/user/feh-wallpaper.timer

    [Unit]
    Description=Random wallpaper with feh

    [Timer]
    OnUnitActiveSec=15s
    Unit=feh-wallpaper.service

    [Install]
    WantedBy=default.target

В этом примере файл конфигурации является скрым файлом в домашнем каталоге и содержит в себе путь к каталогу с вашими изображениями

    $HOME/.wallpaper

    WALLPATH=/home/user/.wallpaper/

Активируйте `feh-wallpaper.timer` и `feh-wallpaper.service`. Читайте Daemons (Русский) для дополнительной информации.

## Смотрите также

- Пост на форуме с оригинальным скриптом feh_browser (англ.)

Categories:

- Graphics and desktop publishing (Русский)
- Русский