DEXCS2011 for OpenFOAM 製作メモ –カスタマイズしたユーザー・メニューの組込方法

DEXCS2011では、ランチャーの起動は従来のデスクトップ上のアイコンをダブルクリックして起動する方法 だけでなく、アプリケーションメニューからも起動できるようになる予定です(プロトタイプ版ではすでに組み込み済です)。

  • https://ocse2.com/wp-content/uploads/2011/09/02.png

しかし、実はもうひとつ方法があって、このメニューの状態で、マウスボタンを右クリックして、

  • https://ocse2.com/wp-content/uploads/2011/09/03.png

「このランチャをパネルへ追加」を選択すると・・・

  • https://ocse2.com/wp-content/uploads/2011/09/04.png

というように、パネル上に小さなアイコンが追加され、このアイコンをシングルクリックするだけでランチャーが起動できるようになります。という訳で、最終的には、DEXCS2011がセットアップされた状態で、DEXCS固有メニュー(アイコンのイメージは暫定版ですが)がパネルへ追加された状態で配布できることを考えています。

  • https://ocse2.com/wp-content/uploads/2011/09/05.png

これら一連の仕組みを配布ディスクイメージに実装する方法がわかったので、ここのその方法を記しておきます。

カスタマイズの基本

ユーザーがホームディレクトリ以下にカスタマイズした部分で、配布イメージに引き継がせたい部分は、

/etc/skel

にコピーしておくというのが基本。今のところDEXCS2011では、以下のようになる予定。ファイルサイズやタイムスタンプはまだまだ変更が入るとは思いますが・・・

  • https://ocse2.com/wp-content/uploads/2011/09/09png.png

skelは多分、スケルトン(=骨格)ということで、新たにユーザーを作成した時、これらのファイルがユーザーのホームディレクトリ下にそのまま引き継がれることになります。

メイン・メニュー

ユーザーが独自に組み込んだメニューアイテムは、

$HOME/.local/share/applications

の下に置かれて、ファイル・ブラウザで見ると、メイン・メニューで設定したアイコンイメージがそのまま表示されますが・・・

  • https://ocse2.com/wp-content/uploads/2011/09/06.png

しかしてその実体はテキストファイルです。emacs(アプリケーションーアクセサリ-Emacs 22 (X11))で見るとよく解ります。

  • https://ocse2.com/wp-content/uploads/2011/09/07.png

パネル

一方、パネルに組み込んだオブジェクトは、

$HOME/.gconf/apps/panel/objects

以下に設定ファイル(object_#)が存在します。

  • https://ocse2.com/wp-content/uploads/2011/09/08.png

カスタマイズ項目の実装準備

なので、これらファイルを含むフォルダー毎、/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 中の記述と整合がとれていない場合もあるようなので、これらは事前に変更しておく必要有りです。

Share

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください