Qtopiaのデスクトップ構造


@Qtopia上のアプリケーション管理


「アプリケーションのプロパティ」

 各アプリケーションは、アイコンを長押し(数秒間、ペンで押し続ける)することでプロパティ画面が表示されます。
 プロパティでは、各アプリケーションの名称、種別、説明(コメント)などアプリケーション情報の確認の他、高速起動や、ルート権限の設定を行うことが出来ます。

プロパティ画面

・アプリケーションを高速起動する
 高速起動は、その名の通りアプリケーションの起動を高速化する仕組みです。
 具体的には、この設定を有効にされたアプリケーションは完全に終了することなくメモリに常駐し続けるようになります。起動にあたっては、見かけ上隠されていたウィンドウが、アクティブになるだけであるため、事実上、タスクの切り替えと同等の速度でアプリケーションが起動したように見える訳です。
 なお、高速起動が有効にされたアプリケーションは、前述の通り完全に終了することがありません。そのため終了時に設定を保存するような一部のアプリケーションでは、高速起動が有効になっている間は、設定の変更が反映されないことがあります。
 また、当然ながら、この高速起動を有効にすると、それだけシステムのメモリ容量が割かれることになります。

・ルート権限で実行する
 アプリケーション実行時にルート(管理者)権限を与えます。
 具体的には、root:qpeの権限でアプリケーションが実行されるようになります。
 この設定を有効にすると、通常のユーザー権限(zaurus:qpe)でアクセス出来ないファイルでも操作することが出来るようになりますが、反面、システムファイルなどを壊してしまう危険性もあるので注意して下さい。

・アプリケーションをVGA(480X640)の画面に最適化して実行する
 SL-A300やSL-B500などのQVGA画面(320*240)を前提としたアプリケーションとの互換のために用意されているオプションです。
 このオプションが有効になっている場合、アプリケーションはQVGAの縦画面で起動します。何故か、アプリケーションが縦画面で起動してしまう場合、大抵はこのチェックが有効になっていることが原因です。
 なお、ホーム画面の設定で、新規にアプリケーションを登録した場合は、デフォルトでこのチェックが有効になっています。通常のVGA画面(640*480)で、アプリケーションを動作させたい場合は、逆にこのチェックを外すようにします。

 アプリケーションのプロパティの各設定項目は、後述のdesktopファイルの内容に従って表示されます。そのため、上記の設定チェックボックスが常に表示されているとは限りません。


「desktopファイル」

 Qtopia上のアプリケーションは、各アプリケーション毎に持つ、*.desktopと言う拡張子を持つファイルで管理されています。
 desktopファイルは/opt/QtPalmtop/apps以下に配置され、それらのファイルを変更することで、アプリケーション動作の設定や、ファイルへの関連付けなどを行うことが出来ます。

・desktopファイルの書式

 desktopファイルは、以下の様な書式で記述されています。

/opt/QtPalmtop/apps/textedit.desktop

[Desktop Entry]
#Comment=A Text Editing Program
#Comment[de]=Ein Textbearbeitungsprogramm
#Comment[ja]=テキストエディタ
Exec=textedit
Icon=TextEditor
Type=Application
Type[de]=Anwendung
MimeType=text/*
MimeTypeIcons=TextEditor
Name=Text Editor
Name[no]=Teksteditor
Name[de]=Texteditor
Name[ja]=メモ帳
Name[zh_CN]=文本??器
Name[zh_TW]=文字編輯器
Name[ko]=?? ???
Name[hu]=Szoveg- szerkeszto
CanFastload=1
Display=640x480/144dpi,480x640/144dpi
HidePrivilege=1

 上記は標準アプリケーションであるメモ帳のdesktopファイルです。

 desktopファイルは、[Desktop Entry]の行から始まります。
 その後、各設定項目は、「項目名=設定内容」と言う書式で記述され、基本的に一行一項目の形で列記していきます。
 これらの項目はヘッダとなる先頭行を除けば、設定項目の記述は順不同で構いません。さらに、必ずしも全ての項目が必須と言う訳でもなく、必要の無い項目は省略することも出来ます。
 なお、シェルスクリプトなどと同じく、desktopファイル中では「#」以降は注釈として扱われます。

 また、Qtopia自体が多言語に対応していることを受け、desktopファイルの各項目には複数の言語を設定することが出来ます。
 言語コード(ロケール)は基本的にISO639の規定に準拠しており、代表的なものとしては以下のようなものがあります。

Name[ja]=日本語
Name[en]=英語
Name[de]=ドイツ
Name[es]=スペイン
Name[hu]=ハンガリー
Name[ko]=韓国
Name[no]=ノルウェー
Name[pt]=ポルトガル
Name[zh_CN]=中国
Name[zh_TW]=台湾

 特に言語コードの指定が無い場合は、現在のシステムで規定されたロケールが使用されます。

・desktopファイルの設定項目

[Desktop Entry]
 ヘッダです。desktopファイルは必ずこの行から始まります。
 この行以前に許されるのは空行のみで、注釈を含め何らかの記述がヘッダ以前にあった場合、そのファイルはdesktopファイルとは見なされません。

Name
 アプリケーション名を設定します。ここで設定した名称が、ホーム画面でのアプリケーション名となります。

Comment
 コメントです。ここに記述された内容が、アプリケーションのプロパティで表示されます。

Type
 desktopファイルの種別を設定します。通常は「Applicaiton」を指定します。
 また、後述するQTメニューでのみ使われる種別として「Separator」と言う設定が存在します。この設定を持つdesktopファイルはQTメニュー項目のラインとなります。

Exec
 実行するアプリケーションの実行バイナリ(ファイル名)を記述します。
 なお、Qtopia上のアプリケーションは通常、/opt/QtPalmtop/bin/に配置されます。これ以外の場所に置かれたバイナリは、この項目でフルパスで指定したとしても、実行することは出来ません。
 この項目は後述する「Embedded」との排他項目となります。

Embedded
 Qtopiaの内部コマンド(?)を指定するもので、前述の「Exec」とは排他項目となります。
 現在のところ、以下の四種を確認しています。

network_connect     # ネットワーク接続
network_disconnect  # ネットワーク切断
show_docview        # ファイルランチャ表示
show_contentsview   # コンテンツ画面表示 (SL-C3100以降)

Icon
 ホーム画面で表示されるアイコンを指定します。
 省略した場合はUnknownDocumentsアイコンが使用されます。

MimeType
 アプリケーションと関連付けるMIME Content-Type(ファイルタイプ)を設定します。
 なお、アプリケーションとファイルの関連づけについては、「Qtopia上でのファイル関連付け」でさらに詳しくまとめています。

MimeTypesIcon
 関連付けされたファイルの表示アイコンを指定します。
 ここで設定されるアイコンは、あくまでも関連づけファイルについてのもので、ホーム画面に登録されるアプリケーション本体と別のアイコンを用いたい場合にのみ設定します。この項目が省略された場合は、関連付けられたアプリケーション本体と同じアイコンが用いられます。

CanFastload
 アプリケーションのプロパティで、高速起動の設定チェックボックスの表示/非表示を設定します。
 「0」で非表示、「1」で表示となり、設定項目を省略した場合は、非表示となります。
 なお、この項目で設定されるのは、あくまでも設定チェックボックスの表示の有無であり、高速起動そのものを設定するものではありません。

HidePrivilege
 アプリケーションのプロパティで、ルート権限の設定チェックボックスの表示/非表示を設定します。
 「0」で表示。「1」で非表示となり、設定項目を省略した場合は、ルート権限の設定チェックボックスが表示されます。
 なお、この項目で設定されるのは、あくまでもプロパティ画面での設定チェックボックスの表示の有無であり、ルート権限そのものを設定するものではありません。
 アプリケーションへのルート権限設定は、後述/opt/QtPalmtop/etc/privilidge.confで行われます。

NeedSpace
 起動時にシステムの空きメモリ容量を確認し、設定された以上の空き容量が無い場合はアプリケーションの実行を中断します。
 設定はKB単位の数値を記述します。

System
 この項目で「System=1」が設定されているアプリケーションは、終了時にシステム設定の更新を反映します。
 具体的には以下のqcopメッセージの発行を検知し、/opt/QtPalmtop/.mimetypes.cacheを生成します。

qcop QPE/System 'mimeChanged()'

 ただし、既にmimetypes.cacheが存在している場合は、何もしません。
 意図的にmimetypes.cacheの更新を行いたい場合は、qcopメッセージの処理以前に、mimetypes.cacheを削除しておく必要があります。

Display
 アプリケーションの画面モードを設定します。
 現在、SL シリーズ Zaurus で規定されている画面モードは以下の通りです。

VGA 横      640x480/144dpi
VGA 縦      480x640/144dpi
VGA 縦・横  640x480/144dpi,480x640/144dpi
VGA・QVGA   640x480/144dpi,480x640/144dpi,240x320/72dpi

※注 QVGAモードについては縦画面のみ

 ただし、これらの画面モードは、最終的にはソースレベルでのアプリケーションの設定に拠るため、必ずしもこの項目で画面モードが規定されるとは限りません。

参考資料

OnlyWithDisplay
 指定した画面モード以外でのアプリケーションの起動を抑制します。
 基本的には後述のQTメニューでのみ使われる設定項目のようで、画面モードそのものを指定する「Display=」と異なり、現在のシステムの表示モードに応じて、メニュー項目の表示を抑制させる働きをします。
 具体的には、VGA画面を持つザウルスで、QVGAモード時に機能しない項目(縦横表示切替や拡大/縮小等)をメニューから隠すために使われています。

QVGAモードのQTメニュー
VGAモードのQTメニュー

 なお、抑制する画面モードの指定は、「Display」と同じ指定で行われるため、QVGAモードでの抑制の他、縦横それぞれの画面モードでの抑制も可能です。


@Qtopiaホーム画面の構造


「タブ構成」

 desktopファイルは、前述の通り/opt/Qtopia/apps/以下に置かれ、さらにディレクトリ毎に分かれて配置されています。
 この/opt/QtPalmtop/apps/以下のディレクトリ構成は、基本的に以下の様にホーム画面のタブ構成にそのまま反映されます。

  デフォルトのタブ構成

/opt/QtPalmtop/apps/Applications/ ---> アプリケーション
/opt/QtPalmtop/apps/Games/        ---> ゲーム
/opt/QtPalmtop/apps/Settings/     ---> 設定


 ※注 「ファイル」、及びSL-C3100以降で追加された「コンテンツ」タブに関しては例外

 各タブの名称とタブアイコンは各ディレクトリ毎に置かれた.directory中で設定されます。.directoryが存在しない場合でも、desktopファイルが置かれればタブは有効になりますが、その場合タブ名は空白となります。

 タブ中のアプリケーションの並び順は、同じく各ディレクトリ毎に存在する.orderファイルで記載された順番となります。また、.orderが存在しない場合は、ファイル名昇順となります。

「QTメニュー」

 ホーム画面でMenuキーを押すか、画面左下隅のQTアイコンをタップして表示されるメニューがQTメニューです。

QTメニュー(SL-C700)

 /opt/QtPalmtop/apps/直下に配置されたdesktopファイルは、このQTメニューの項目となります。逆に言えば、ここにdesktopファイルを作成することで、任意の項目をQTメニューに加えることが出来ます。

 以下は、QTメニューへの項目追加のサンプルパッケージです。

 インストールすると、メニューに「SDカードの取り外し」、「CFカードの取り外し」の二項目が追加されます。

QTメニューへの項目追加

 なお、/opt/QtPalmtop/apps/直下にも.orderファイルが存在しますが、ここに置かれた.orderの設定はアプリケーションの並び順では無くタブの並び順の指定になります。
 QTメニュー項目の並び順については、常にdesktopファイルのファイル名昇順となります。そのためメニュー項目を任意の順番に並び替えたい場合には、desktopファイル名のリネームで対応することになります。


@その他、Tipsとおぼえがき


「タスクバーアプレットのリロード」

 通信カードを挿入したまま、レジュームや再起動をした時などに、CFカードとネットワーク接続のアイコンや、日本語IMEのアイコンなどが重なってしまうことが偶にあります。

IMEとネットワークのアイコンが重なっている。

 こういった場合は、以下のQcopコマンドを発行し、タスクバーアプレットのリロードを行うことで正常な表示に復帰させることが出来ます。

$ qcop QPE/TaskBar "reloadApplets()"


「ルート権限の設定」

 ルート権限の設定は、前述の通りアプリケーションのプロパティから行えますが、実際には/opt/QtPalmtop/etc/privilege.confにて、ルート権限の設定が行われています。

 アプリケーションのルート権限を有効にすると、実行バイナリのファイル名が独自のコードでエンコードされ、このファイルにリストされます。

参考資料

 このprivilege.confのエンコードはSLザウルスを通じて一意のものであるため、追記された設定行をコピーすることで、特定のアプリケーションのルート権限をパッケージのインストール時などに設定することが出来ます。
 なお、このファイルのパーミッションはroot:qpeでなければいけません。


「CUIベースの実行ファイルの登録」

 基本的に、/opt/QtPalmtop/bin/以下に置かれた実行属性を持つファイルは、何でもホーム画面に登録することが出来ます。
 そのため、コマンドラインプログラムやシェルスクリプトなども、上記の場所に実行ファイル或いは、シンボリックリンクを配置することで、Qtopia上から実行することが可能になります。

 ただし、これらCUIベースのアプリケーションをホーム画面に登録するにあたっては、いくつかの不具合があります。

 まず、これらのアプリケーションは、起動こそQtopia上から行われるものの、プログラムそのものは完全にQtopiaの管理下には置かれないため、アプリケーションの終了がシステムに通知されず、アイコンの爆弾マークがついたままになったり、テンポラリファイル(/tmp/qcop-msg-アプリケーション名)が残ったりします。
 また、当然ながらこれらのCUIベースのプログラムはQtopia上のGUI画面に処理の結果が反映される訳では無いため、アプリケーションの起動・終了が把握しずらいのも難点です。

 この内、爆弾アイコンに関しては、あくまでも見栄えだけの問題なので、さほど実害はありません。

 テンポラリファイルに関しては、単純なアプリケーション間通信を行っているだけのようなので、スクリプト終了時に直接削除してしまっても、さほど問題は無いようです。

 問題は、肝心の実処理が終了したかどうか、アプリケーションの実行状態を把握する手段ですが、VGAザウルス限定ではありますが、敢えてVGA画面の最適化にチェックを入れておくと言う方法があります。
 こうしておくと、バックグラウンドでの処理=スクリプトの実行中はQVGA画面となり、実処理が終了した時点で、元のVGA画面へと画面モードの切り替えが行われるため、とりあえず処理の終了を把握することが出来ます(^^;)。

 余り行儀の良い方法ではありませんが、ちょっとした作業でシェルスクリプトを用いたい場合は結構あるかと思いますので、覚えておくと便利なtipsです。


@あとがき


 Qtopia上でのファイルの関連付けの更新にあたって、情報内容の切り分けと整理を行いました。
 その結果、旧版で記載していた「QTメニュー項目の追加」は、その後に分かったQtopiaデスクトップ関係の情報と共にこちらのページでまとめることになりました。まだまだ不備はありますが、現時点でまとめられる限りの情報はまとめてみたつもりです。

 基本的に、旧版での情報は、全てこちらのページ内にまとめていますが、念のため旧版の方も残しておきます。

過去LOG(暫定版)

 前述の通りファイルの関連付けや、NetFrontの外部ヘルパー設定などに関しては、分割し別ページでまとめています。必要な方はどうぞそちらをご参照下さい。

このページの文責: TAKETYON

Return to home