Feh (Русский)

From ArchWiki
Jump to: navigation, search

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

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

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков 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"

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

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

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: 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 (Русский) для дополнительной информации.

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