Feh (Русский)
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"
Этот скрипт не имеет возможности принимать какие-либо дополнительные параметры.
Как менеджер фона рабочего стола
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
, по вашему желанию (смотрите sleep(1) для опций).
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
Создайте юнит 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 (Русский) для дополнительной информации.