2011年7月23日土曜日

Idesk用壁紙変更ツールを、少しだけ実用的に

「はじめてのおつかい」でお店の前まで行って帰って来ちゃっていたので、もう一度お店へ行くことにw

前回まで画像ファイルが /usr/share/backgrounds/ ディレクトリにあることが大前提のスクリプトだった。
今回は、その縛りを外した。
更に、前回の修正で「現在使用中のファイル名」を第3引数で渡した為に、ダイアログを出したまま連続して壁紙の変更が出来なくなってしまったので、それを元に戻した。

(本当は、'onchange' と '$temp_str' は引数で渡す必要がないんだけど、戒めの為にそのまま残しておく)
#!/bin/bash

def_str=`grep 'Background.File' /root/.ideskrc`
def_length=${#def_str}
temp_str=`echo $def_str | cut -c 18-$def_length`

export MAIN_DIALOG='
<window title="idesk_bg_changer">
  <vbox>
    <text><label>idesk用壁紙変更ツール(AO_o10yan)</label></text>

      <frame ファイル選択で壁紙変更>
        <hbox>
          <entry accept="filename">
            <label>Select an Existing File</label>
            <variable>FILE_FILENAME</variable>
            <default>'$temp_str'</default> 
            <action>"./desktop_bg_function3.sh 'onchange' $FILE_FILENAME '$temp_str' &"</action>
          </entry>
          <button>
            <input file stock="gtk-open"></input>
            <variable>FILE_BROWSE_FILENAME</variable>
            <action type="fileselect">FILE_FILENAME</action>
          </button>
        </hbox>
      </frame>

    <hbox>
      <button cancel></button>
    </hbox>
  </vbox>
</window>
'
gtkdialog3 --center --program=MAIN_DIALOG

上のスクリプトから desktop_bg_function3.sh として下のスクリプトを呼び出す。
#!/bin/bash

def_str=`grep 'Background.File' /root/.ideskrc`
def_length=${#def_str}
temp_str=`echo $def_str | cut -c 18-$def_length`

new_str=$2

sed --in-place=.bak --expression=s:$temp_str:$new_str: /root/.ideskrc

idesk
うーん、随分スッキリ。
当たり前だけど、ファイル名をフルパスで指定するので、regular expression 区切り文字のスラッシュとディレクトリの区切りが重複してしまうので、regular expression の方の区切り文字を変更した。

Puppy LinuxでJWM、IceWM、FluxboxとWMを切り替えても、壁紙の表示はIdeskが共通して受け持っているので、壁紙変更ツールもこれを共通して使うことができる。って、あまり意味ないけど、、、。

※ 追記(2014/05/24)※
MAIN_DIALOGを表示するスクリプトの17行目、
default値の余分なパスを削除

0 件のコメント :

コメントを投稿