DEXCS2011では、ランチャーの起動は従来のデスクトップ上のアイコンをダブルクリックして起動する方法 だけでなく、アプリケーションメニューからも起動できるようになる予定です(プロトタイプ版ではすでに組み込み済です)。
しかし、実はもうひとつ方法があって、このメニューの状態で、マウスボタンを右クリックして、
「このランチャをパネルへ追加」を選択すると・・・
というように、パネル上に小さなアイコンが追加され、このアイコンをシングルクリックするだけでランチャーが起動できるようになります。という訳で、最終的には、DEXCS2011がセットアップされた状態で、DEXCS固有メニュー(アイコンのイメージは暫定版ですが)がパネルへ追加された状態で配布できることを考えています。
これら一連の仕組みを配布ディスクイメージに実装する方法がわかったので、ここのその方法を記しておきます。
カスタマイズの基本
ユーザーがホームディレクトリ以下にカスタマイズした部分で、配布イメージに引き継がせたい部分は、
/etc/skel
にコピーしておくというのが基本。今のところDEXCS2011では、以下のようになる予定。ファイルサイズやタイムスタンプはまだまだ変更が入るとは思いますが・・・
skelは多分、スケルトン(=骨格)ということで、新たにユーザーを作成した時、これらのファイルがユーザーのホームディレクトリ下にそのまま引き継がれることになります。
メイン・メニュー
ユーザーが独自に組み込んだメニューアイテムは、
$HOME/.local/share/applications
の下に置かれて、ファイル・ブラウザで見ると、メイン・メニューで設定したアイコンイメージがそのまま表示されますが・・・
しかしてその実体はテキストファイルです。emacs(アプリケーションーアクセサリ-Emacs 22 (X11))で見るとよく解ります。
パネル
一方、パネルに組み込んだオブジェクトは、
$HOME/.gconf/apps/panel/objects
以下に設定ファイル(object_#)が存在します。
カスタマイズ項目の実装準備
なので、これらファイルを含むフォルダー毎、/etc/skel にコピーしておく。
sudo cp -r ~/.local /etc/skel sudo cp -r ~/.gconf /etc/skel
カスタマイズ項目の実装の詳細⇒setupDEXCS.sh
但し、このままでは、カスタマイズされたユーザーの名前が継承されない。たとえば、alacarte-made.desktop の内容は、
#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Icon[ja_JP]=vinagre Name[ja_JP]=DEXCS Launcher Exec=gnome-terminal -e /home/dexcs/Desktop/DEXCS/launcherOpen/dexcs.py --title=stdout/stderr --geometry=120x10-0-0 --zoom=0.8 Name=DEXCS Launcher Icon=vinagre
となっており、下から3行目の、/home/dexcs/ の部分を、カスタマイスしたユーザーの名前に変更してやらないと使えない。
これをやるのがsetupDEXCS.shで、DEXCSフォルダ内にsetup.listで定義したファイル
【DEXCS/setup.list】
~/Desktop/DEXCS/DEXCS2011.desktop ~/Desktop/DEXCS/dexcs.wxg ~/Desktop/DEXCS/SWAK/dexcsSWAK.wxg ~/Desktop/DEXCS/SWAK/myDialog1.wxg ~/Desktop/DEXCS/SWAK/myDialog2.wxg ~/Desktop/DEXCS/SWAK/testFrameListBox.wxg ~/Desktop/DEXCS/SWAK/dexcsTextSsercher.wxg ~/Desktop/DEXCS/SWAK/timeLinePlotter.wxg ~/.local/share/applications/alacarte-made-1.desktop ~/.local/share/applications/alacarte-made-2.desktop ~/.local/share/applications/alacarte-made.desktop
に対して、/home/dexcs と記述されている部分を、/home/$WHO ($WHOはカスタマイズしたユーザーの名前)に変更するのが主要な処理内容で、setup.list中、下の3行がメニュー関連アイテムです。拡張子がwxgになっているものは、ランチャーのGUIビルダーのプロジェクトファイル、一番上にあるのはセットアップ後にデスクトップ上に現れるDEXCSのランチャーアイコンです。
DEXCS2010までは、ランチャーのソースファイル(*.py)も対象でしたが、DEXCS2011からは変更の必要がなくなりました(DEXCS2011のプロトタイプ版では、まだ要変更部が残っています)。
また、これまではDEXCSフォルダの中に、setup.shという名前で入っていたものを、DEXCS2011からはDEXCSフォルダ内でなく、セットアップの手間を極力省けるよう、Desktop上に配置することにしました。
【setupDEXCS.sh】
#!/bin/sh WHO=`whoami` echo "#!/bin/sh" > ~/Desktop/DEXCS/startup1.sh LIST=~/Desktop/DEXCS/setup.list while read i do echo "sed 's/dexcs/Desktop/$WHO/Desktop/g' $i > ~/Desktop/DEXCS/temp" >> ~/Desktop/DEXCS/startup1.sh echo "sed 's/dexcs/デスクトップ/$WHO/Desktop/g' ~/Desktop/DEXCS/temp > $i" >> ~/Desktop/DEXCS/startup1.sh echo "sed 's/home/dexcs/home/$WHO/g' $i > ~/Desktop/DEXCS/temp" >> ~/Desktop/DEXCS/startup1.sh echo "cp ./DEXCS/temp $i" >> ~/Desktop/DEXCS/startup1.sh done < ${LIST} chmod +x ~/Desktop/DEXCS/startup1.sh ~/Desktop/DEXCS/startup1.sh mv ~/Desktop/DEXCS/DEXCS2011.desktop ~/Desktop/ . /opt/OpenFOAM/OpenFOAM-2.0.x/etc/bashrc mkdir -p $FOAM_RUN mkdir -p $FOAM_USER_APPBIN cp ~/Desktop/DEXCS/launcherOpen/snappyDictExporter.py $FOAM_USER_APPBIN cp ~/Desktop/DEXCS/launcherOpen/bcFilesConverter.py $FOAM_USER_APPBIN rm ~/Desktop/ubiquity-gtkui.desktop -f rm ~/Desktop/setupDEXCS.sh
なお、最下行に示す通り、セットアップの最終段階で、自分自身のファイルを消去してしまうので、setupDEXCS.shのプログラムそのものは、再配布用にDEXCSフォルダ中にも同じものが同梱してあります。
同様に、object_#フォルダ(#は数字)の下には、%gconf.xml というファイルがあって、その中に以下の記述がある。
<stringvalue>alacarte-made-#.desktop
(#は数字だが、object_# の数字とは一致しない場合が多い)
このままなら何も問題なさそうだが、alacarte-made.desktopの部分が、実行プログラムの実体名に変更されてしまっている場合もあるみたいです。そうなると、やはり、/home/dexcs/の部分を変更する必要が出てきて、その場合は setup.list に該当部分を、
~/.gconf/apps/panel/objects/object_#/%gconf.xml
といった形で追加する。
また、alacarte-made-#.desktop の番号部分(#)が、%gconf.xml 中の記述と整合がとれていない場合もあるようなので、これらは事前に変更しておく必要有りです。