Feh

提供: ArchWiki
2015年1月6日 (火) 20:37時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:グラフィックとデスクトップパブリッシング de:Feh en:Feh es:Feh it:Feh lt:Feh ru:Feh zh-CN:Feh {{Related articl...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

テンプレート:Related articles start (日本語)

  • Nitrogen
  • sxiv
  • feh は軽量かつ強力な画像ビューアであり、壁紙を管理する機能がないスタンドアロンのウィンドウマネージャの壁紙管理にも使えます。

    インストール

    公式リポジトリから fehインストールしてください。

    使用法

    feh は細かく設定することができます。オプションの完全なリストを見るには、feh --help を実行してください。

    画像ビューア

    特定のディレクトリの画像をすばやく見るには、以下の引数をつけて feh を起動します:

    $ feh -g 640x480 -d -S filename /path/to/directory
    
    • -g フラグは画像を強制的に 640x480 以下で表示します
    • -d フラグはファイル名を表示します
    • -S filename フラグは画像をファイル名でソートします

    他にも様々なオプションが使えます。

    ファイルブラウザの画像ランチャー

    以下のスクリプトはファイルブラウザに使えます。feh で選択した画像が表示されますが、ディレクトリの他の画像もブラウズすることができます。"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}"
    

    選択した画像のパスを付けてスクリプトを呼び出して下さい。他にも feh に引数を追加することができます。以下はファイルブラウザで使うことができるランチャーの例です:

    $ /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, xmonad などのデスクトップ機能がないウィンドウマネージャの壁紙を管理するのに使えます。

    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-max FILE
    --bg-fill FILE
    

    次のセッション時に壁紙をまた設定するには、スタートアップファイルに以下を追加してください (例: ~/.xinitrc, ~/.config/openbox/autostart など):

    $ sh ~/.fehbg &

    壁紙画像を変更するには、上記の feh --bg-scale /path/to/image.file コマンドを実行した後に作成される ~/.fehbg ファイルを編集してください。

    Tips and tricks

    SVG 画像を開く

    $ feh --magick-timeout 1 file.svg

    imagemagick が必要です。

    ランダム壁紙画像

    --bg-foo オプションのどれかと --randomize オプションを使うことでランダムに壁紙を feh で設定することができます、例えば:

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

    上記のコマンドは ~/.wallpaper/ ディレクトリのファイルからランダムで画像を壁紙に設定します。もしくは、壁紙をサブフォルダに分割している場合は、再帰的に実行することもできます:

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

    セッションごとに ~/.wallpaper から異なる壁紙をランダムに設定するには、以下を .xinitrc に追加します:

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

    定期的に壁紙を変更するには、スクリプトや cron ジョブ、または systemd のサービスなどを使って、一定間隔でコマンドを実行してください。

    スクリプトを使用

    壁紙をランダムに表示するには、以下のコードでスクリプトを作成します (例: wallpaper.sh)。スクリプトには実行可能属性を付与してください:

    $ chmod +x 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 ~/.wallpaperfind ~/.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
    
    xinerama 以外のデュアルスクリーン

    このスクリプトは nvidia twinview (など) のデュアルスクリーン環境で壁紙を追加できるように feh の実行を変えています。

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

    cron ジョブを使用

    cron ジョブを使うことで同じようなことができ、継続的にスクリプトを sleep させる必要はなくなります。

    $ crontab -e を実行して以下を追加:

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

    systemd ユーザーセッションを使用

    ノート: 以下は systemd ユーザーセッションを使っている場合にのみ使うことができます。詳しくは Systemd/ユーザー を見て下さい。

    ユニットサービスファイルを作成:

    $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 seconds になっています。

    $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.timerfeh-wallpaper.service デーモンを有効化して下さい。詳しくはデーモンを参照。

    ノート: systemd ユーザーセッションでは、systemctl--user フラグを使って下さい。

    参照