ROX-Filer 拡張 'JP' 仕様

こ の文章は ROX-Filer を拡張して、rox コマンド実行時に、指定スク リプト
を同時実行させる為の仕様です。


    ROX-Filer バイナリ実行シーケンス
    rox startup 拡張仕様
    

----------------------------------------------------------------------

・ROX-Filer バイナリ実行シーケンス

    コマンドラインやシェルスクリプトから rox コマンドが呼び出された時、
    ROX-Filer バイナリ(ROX-Filer 実行ファイルの実体)は、以下の手順を経
    て実行されます。

    以下 ROX-Filer が /usr 以下にインストールされているものとします。
    インストール先が /usr でない場合は適宜読み替えて下さい。

    1.
コマンドラインやシェルスクリプトから rox コマンドを実行。
    2.実行パスより検索された /usr/bin/rox が呼び出される。
    3./usr/bin/rox スクリプトにより、/usr/apps/ROX-Filer/AppRun スクリ
      プト が呼び出される。
    4./usr/apps/ROX-Filer/AppRun スクリプトにより、
      /usr/apps/ROX-Filer/ROX-Filer バイナリ実行ファイルが呼び出される。

    以上のように、ROX-Filer 関連の実行ファイルは、
       
/usr/bin/rox (シェルスクリプト)
       
/usr/apps/ROX-Filer/AppRun (シェルスクリプト)
        /usr/apps/ROX-Filer/ROX-Filer (バイナリ実行ファイル)
    と、三種類存在します。
    従って、ROX-Filer を拡張するには、上記三種類のいずれかに手を加える
    ことになります。

----------------------------------------------------------------------

・rox startup 拡張仕様

    当拡張仕様では、ROX-Filer バイナリ実行シーケンスで述べた三つの実行
    ファイルの内 /usr/bin/rox に手を加え、rox コマンド実行時、
       
/usr/apps/ROX-Filer/AppRun
    を呼び出す直前に、ホームディレクトリのスタートアップスクリプトを実
    行させる為の書き替えを行います。
   
/usr/bin/rox の内容は、

       
#! /bin/sh
exec /usr/apps/ROX-Filer/AppRun "$@"


    と、とてもシンプルで、単に /usr/apps/ROX-Filer/AppRun を呼び出して
    いるだけです。

    当拡張仕様では、 こ れを以下のように書き替えます。

       
#! /bin/sh
# Extending by 'ROX extend JP spec - stasrtup'.
if [ -x $HOME/bin/rox_startup ]; then
    exec $HOME/bin/rox_startup &
fi
exec /usr/apps/ROX-Filer/AppRun "$@"


    (二行目は、当仕様による拡張である事の識別に使用します)

    つまり、
      ・
$HOME/bin/rox_startup が実行可能ファイルとして存在するな ら、
        
/usr/apps/ROX-Filer/AppRun 実行直前に、$HOME/bin/rox_startup
        を実行する。
      ・$HOME/bin/rox_startup が実行可能ファイルとして存在しない
時 は、
        従来通り 
/usr/apps/ROX-Filer/AppRun のみを実行する。
    という書き替えです。

    次に、この拡張を利用するアプリケーション側で、次のような
    $HOME/bin/rox_startup の実体を用意します。

    (以下、AppName は拡張を利用するアプリケーション、Prog
AppName
    により用意された、
rox コマンド実行時に呼び出され るプログラム、
    /Path/to/Prog はその絶対パスです)

         #!/bin/bash
# AppName
if [ -x "/Path/to/Prog" ]; then
    "
/Path/to/Prog" &
fi


    (二行目は、AppName による拡張である事の識別に使用します。これは主
    として、
AppName のアンインストールに容易に対応出来るようにする為の
    仕様です)


    三行目から五行目で、拡張によって、rox コマンド実行時に実際に呼び出
    す実行ファイルを絶対パスで呼び出します。

    以上の 2〜5 行目の計四行が、拡張を利用するアプリケーションのエント
    リ・スロットの一単位となります。

    以降、拡張を利用するアプリケーションごとに、自らが利用するエント
    リ・スロットを追加登録していきます。


         #!/bin/bash
# App1
if [ -x "/path/to/Prog1" ]; then
    "/path/to/Prog1 &
fi
# App2
if [ -x "/path/to/Prog2" ]; then
    "/path/to/Prog2 &
fi
.....

    結果として、上のような内容の $HOME/bin/rox_startup が、rox コマン
    ドが実行されるたびに呼び出されるようになります。
 
    実際にエントリ・スロットを用意するには、以下のようなスクリプトを実
    行すると良いでしょう。

    ※ app_name に拡張を利用するアプリケーション名、app_path に rox コ
    マンドが実行されるたびに呼び出して欲しい実行可能ファイルの絶対パス
    を代入して次のスクリプトを実行します。

         if ! [ -x $HOME/bin/rox_startup ]; then
    echo "#!/bin/bash" > $HOME/bin/rox_startup
    chmod u+x $HOME/bin/rox_startup
fi
if [ -z "`grep "# $app_name" $HOME/bin/rox_startup`" ]; then
    cat << EOF >> $HOME/bin/rox_startup
# $app_name
if [ -x "$app_path" ]; then
    "$app_path" &
fi
EOF
fi


    上記の実行により、既に
$HOME/bin/rox_startup が存在する場合も、存
    在しない場合も、適切に app_name 用のエントリ・スロットを追加し、又
    
app_name による多重追加を防ぐこともできます。