site top fluxbox tips contact blog

Okumatsu_Hiroshi Website

last update 2010/5/29

fluxboxのスタイルに壁紙を設定するスクリプト




何をするためのスクリプトか

  • このスクリプトの目的は、
    • Rox-filer上で画像ファイルを右クリックし、メニューを表示させる
    • メニューからスクリプトを実行して
      • 現在のスタイルファイルの壁紙設定を書き換える
      • 選んだ画像ファイルをスタイルディレクトリにコピーする
      • fbsetbgコマンドで壁紙を表示する

ざっと書くととこんな感じでしょうか。

壁紙設定は書き換えますが、以前の設定(画像を使わない設定など)は削除しないで残し、新しい設定を付け加えるように したいと思います。

また、自分で作ったスタイルをパッケージにするときに、壁紙も一緒になるよう、スタイルディレクトリにコピーする ようにします。


SetbgforStyle.sh

以下がそのスクリプトです。

#!/bin/bash

# = SetbgforStyle
# version :: 10.528
# author  :: okumatsu hiroshi
# note    :: カレントスタイルに壁紙をコピーし、設定ファイルを書き換える。

background_img="$1"
image_dir="pixmaps"
image_name="background"

# fluxboxのinitファイルからカレントスタイル情報を取得する
current_style_path=$(cat ${HOME}/.fluxbox/init | grep -i 'stylefile' | awk '{print $2}')

# ホームディレクトリにあるスタイルだけを対象とする
if [ -f "${current_style_path}/theme.cfg" ]; then
  if [ -w "${current_style_path}/theme.cfg" ]; then
    current_image_dir=${current_style_path}/${image_dir}
    if [ ! -d "${current_image_dir}" ]; then
      mkdir ${current_image_dir}
    fi
  else
    echo "$(basename $0): $(basename ${current_style_path}): permission denied."
    exit 1
  fi
else
  echo "$(basename $0): $(basename ${current_style_path}): file or deirectory did not exist."
  exit 1
fi

# カレントスタイルの設定を書き換える
sed -i s/^[^#\!]*background\.color/#background.color/ ${current_style_path}/theme.cfg
sed -i s/^[^#\!]*background\.colorTo/#background.colorTo/ ${current_style_path}/theme.cfg
sed -i s/^[^#\!]*background\.modX/#background.modX/ ${current_style_path}/theme.cfg
sed -i s/^[^#\!]*background\.modY/#background.modY/ ${current_style_path}/theme.cfg

if grep -i "^[^#\!]*background\.pixmap.*" ${current_style_path}/theme.cfg; then
  sed -i s%^[^#\!]*background:.*%background:'  'fullscreen% ${current_style_path}/theme.cfg
  sed -i s%^[^#\!]*background\.pixmap:.*%background.pixmap:'  '${current_image_dir}/${image_name}% ${current_style_path}/theme.cfg
else
  sed -i s%^[^#\!]*background:.*%background:'  'fullscreen"\n"background.pixmap:'  '${current_image_dir}/${image_name}% ${current_style_path}/theme.cfg
fi

# 画像をbackgroundにリネームしてスタイルのディレクトリにコピーする
cp "${background_img}" "${current_image_dir}/${image_name}"

# fbsetbg コマンドで壁紙を表示する
fbsetbg -f ${current_image_dir}/${image_name}

Rox-filerの設定

スクリプトを保存したら、実行可能にします。

$ chmod 744 SetbgforStyle.sh

それから、Rox-filer上で画像ファイルを右クリックし、

set_rox_menu.png

「メニューをカスタマイズ」というところをクリックすると、もう一つファイラーが開きますので、開いたディレクトリ にスクリプトを置いてください(シンボリックリンクでも構いません)。

セットしたスクリプトは、~/.config/rox.sourceforge.net/.image_jpegの中にあります( jpegファイルの場合。png画像は.image_pngの中に置く)。

これで、画像ファイルを右クリックしたときにメニューが現れるようになります。

補足

このスクリプトは、nautilusthunar でも使えます。設定の仕方については、以下を見てください。

fluxboxはじめの三歩 壁紙の設定