前回まで画像ファイルが /usr/share/backgrounds/ ディレクトリにあることが大前提のスクリプトだった。
今回は、その縛りを外した。
更に、前回の修正で「現在使用中のファイル名」を第3引数で渡した為に、ダイアログを出したまま連続して壁紙の変更が出来なくなってしまったので、それを元に戻した。
(本当は、'onchange' と '$temp_str' は引数で渡す必要がないんだけど、戒めの為にそのまま残しておく)
上のスクリプトから 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`
- 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
うーん、随分スッキリ。
- #!/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 件のコメント :
コメントを投稿