この章では、Java Desktop System でどのようにメニューが実装されるか、また、管理者はどのようにメニューをカスタマイズできるかを説明します。
Java Desktop System のメニューの実装方法により、次のことが可能です。
簡単にメニュー階層をカスタマイズできます。メニュー階層は、ファイルシステムの階層構造に基づいていません。メニュー階層は、少数のファイルを編集するだけでカスタマイズできます。アプリケーションを変更したり、ファイルを移動する必要はありません。
簡単にアプリケーションをインストールできます。アプリケーションをインストールするときに、メニュー階層に関する情報をアプリケーションに提供する必要はありません。
ユーザーがメニューを変更できないように設定できます。
Java Desktop System 上のメニューでは、次のコンポーネントを使用します。
ファイル抽象レイヤー
vfolder
デスクトップエントリファイル
ディレクトリエントリファイル
gnome-vfs ファイル抽象レイヤーは、アプリケーションがファイルと相互に作用するための単純かつ一般化された方法を提供します。また、ファイル抽象レイヤーは、特定のメニュー構成ファイルに対応付ける URI (Uniform Resource Identifier) ロケーションを提供します。
すべてのユーザー用にメニューまたはメニュー項目を追加するには、そのメニューまたはメニュー項目を URI ロケーションの 1 つに追加する必要があります。項目を追加できるメニューと、そのメニューに対応する URI ロケーションは表 2–1 に示しています。
表 2–1 システム管理者用のメニューと URI ロケーション
メニュー |
URI ロケーション |
---|---|
すべてのユーザーの「アプリケーション」メニュー |
applications-all-users:/// |
すべてのユーザーの「設定」メニュー |
preferences-all-users:/// |
メニューまたはメニュー項目をユーザー自身のシステムにだけ追加する場合は、それらのメニューまたはメニュー項目をほかの URI ロケーションに追加する必要があります。ユーザーが項目を追加できるメニューと、そのメニューに対応する URI ロケーションは 表 2–2 に示しています。
表 2–2 ユーザー用のメニューと URI ロケーション
メニュー |
URI ロケーション |
---|---|
「アプリケーション」メニュー |
applications:/// |
「設定」メニュー |
preferences:/// |
ユーザーによるメニューのカスタマイズ方法については、『Java Desktop System Release 3 ユーザーズガイド』を参照してください。
一般的に、「vfolder」は、システム上の物理的な場所 (1 箇所または複数) に存在する項目の仮想表現になります。たとえば、vfolder が、いくつかのディレクトリの内容を表す場合があります。また vfolder は、1 つまたは複数の物理的な場所の抽象概念になります。Java Desktop System のメニューの場合、vfolder は、物理的に複数のディレクトリに置かれている項目のメニュー上の表現になります。
vfolder 情報ファイルは、vfolder を説明する XML ファイルです。vfolder 情報ファイルは、メニューの構造を指定します。また、メニューの名前と、メニューに表示されるアプリケーションの順序も指定します。vfolder 情報ファイルには、.vfolder-info ファイル拡張子が付きます。
次に vfolder 情報ファイルのサンプルを示します。
<VFolderInfo> . . . <Folder> <Name>Applications</Name> <Desktop>Applications.directory</Desktop> <Folder> <Name>Accessories</Name> <Desktop>Accessories.directory</Desktop> <Query> <And> <Keyword>Application</Keyword> <Keyword>Utility</Keyword> </And> </Query> <DontShowIfEmpty/> </Folder> . . . </Folder> </VFolderInfo>
表 2–3 は、vfolder 情報ファイル内の要素を示しています。
表 2–3 vfolder 情報ファイルの要素
要素 |
説明 |
---|---|
<Folder> |
メニューの名前、内容、構造を定義する要素が含まれる |
<Name> |
メニューの名前を指定する。 |
<Desktop> |
メニューの名前、コメント、アイコンを指定するディレクトリエントリファイルの名前 |
<Query> |
デスクトップエントリファイルに対するクエリー。クエリー要件と一致するデスクトップエントリファイルと、メニュー項目がメニュー上に表示される 上記抜粋内のクエリーでは、Categories キー内にキーワード Application と Utility を含むデスクトップエントリファイルが検索される。一致するデスクトップエントリファイルが「アプリケーション」メニューに表示される この要素は任意 |
<DontShowIfEmpty/> |
この要素がある場合は、項目を何も含まないメニューは表示されない この要素は任意 |
「デスクトップエントリファイル」は、メニュー内の項目に関する情報を提供するデータファイルです。デスクトップエントリファイルは、名前、実行するコマンド、アイコンなどの項目の詳細を指定します。また、デスクトップエントリファイルには、メニュー階層内での項目の位置を決定するキーワードが含まれています。デスクトップエントリファイルには、.desktop ファイル拡張子が付きます。
以下は、デスクトップエントリファイルのサンプルです。
[Desktop Entry] Encoding=UTF-8 Name=Calculator Comment=Perform calculations Exec=gcalctool Icon=gcalctool.png Terminal=false Type=Application Categories=GNOME;Application;Utility;
表 2–4 は、デスクトップエントリファイルで最も重要なキーを説明しています。
表 2–4 デスクトップエントリキー
デスクトップエントリキー |
説明 |
---|---|
Encoding |
デスクトップエントリファイルのエンコーディングを指定する |
Name |
項目の名前を指定する。この名前は、メニュー上の項目として表示される |
Comment |
項目の短い説明を指定する。コメントは、メニュー上のメニュー項目を指したときにツールチップとして表示される |
Exec |
メニューから項目を選択したときに実行されるコマンドを指定する |
Icon |
項目を表すアイコンのファイル名を指定する。ファイル名へのパス、あるいはファイル拡張子は指定しない |
Terminal |
Exec キーで指定したコマンドを端末で実行するかどうかを指定する。値が true の場合は、コマンドが端末で実行される コマンドを実行するウィンドウを作成しない場合は、このキーの値を true にする必要がある |
Type |
項目のタイプを指定する。次のいずれかを指定する
|
Categories |
項目を説明するキーワードを指定する。キーワードはセミコロン (;) で区切る。標準のカテゴリキーワードのリストについては、以下の URL のデスクトップメニュー仕様を参照 http://www.freedesktop.org vfolder 情報ファイルは、メニューに入力するキーワードを対応付ける |
デスクトップエントリファイルのキーについては、次の URL のデスクトップエントリ仕様を参照してください。
http://www.freedesktop.org
パネルランチャーやデスクトップオブジェクトも、デスクトップエントリファイルを使用します。ランチャーやデスクトップオブジェクト用のデスクトップエントリファイルは、メニュー項目用のデスクトップエントリファイルと同じ情報を提供します。たとえば、デスクトップエントリファイルは、ユーザーがランチャーまたはオブジェクトを選択したときに実行されるコマンドを提供します。
「ディレクトリエントリファイル」は、メニューに関する情報を提供するデータファイルです。「ディレクトリエントリファイル」は、名前、ツールチップ、アイコンなどのメニューの詳細を指定します。ディレクトリエントリファイルには、.directory ファイル拡張子が付きます。
以下は、ディレクトリエントリファイルのサンプルです。
[Desktop Entry] Name=Accessories Comment=Accessories menu Icon=gnome-util.png Type=Directory
表 2–5 は、ディレクトリエントリファイルの最も重要なキーを説明しています。
表 2–5 ディレクトリエントリキー
ディレクトリエントリキー |
説明 |
---|---|
Name |
メニューの名前を指定する。この名前は、メニューに表示される |
Comment |
メニューの短い説明を指定する。コメントは、メニューを指したときにツールチップとして表示される |
Icon |
メニューを表すアイコンのファイル名を指定する。ファイル名へのパス、あるいはファイル拡張子は指定しない |
Type |
メニューのタイプを指定する。このキーの値は常に Directory |
以下の Java Desktop System コンポーネントを使用してメニューを編集できます。
Nautilus
ファイルマネージャ
パネル上のメニュー
ファイルマネージャを使用してすべてのユーザーにメニューまたはメニュー項目を追加する場合は、メニューまたはメニュー項目を URI ロケーションに追加します。項目を追加できるメニューと、そのメニューに対応する URI ロケーションは表 2–1 に示しています。
パネルを使用して、すべてのユーザーのメニューをカスタマイズする場合は、メニュー項目ポップアップメニューを使用します。詳細は、『Java Desktop System Release 3 ユーザーズガイド』を参照してください。
メニューのカスタマイズに、メニュー構成ファイルおよびメニューデータファイルを使用することもできます。
次の方法を使用して、メニューをすべてのユーザーに追加できます。
ファイルマネージャを使用する
メニュー構成ファイルおよびメニューデータファイルを変更する
すべてのユーザーにメニューを追加するには、次の手順を実行します。
ファイルマネージャウィンドウで、メニューを追加する場所にアクセスします。たとえば、「アプリケーション」メニューにメニューを追加する場合は、「場所」フィールドに applications-all-users:/// と入力して、リターンキーを押します。
「ファイル」-> 「新規フォルダ」を選択します。未タイトルのフォルダが表示区画に追加されます。フォルダの名前が選択されています。
Solaris プラットフォームでは、フォルダの名前を入力する前に、ファイルマネージャウィンドウの表示を更新する必要があります。
フォルダの名前を入力して、Return キーを押します。手順 1 でアクセスした場所用の vfolder 情報ファイルは、新しいメニューの詳細を反映して自動的に更新されます。フォルダの名前は、メニューの名前として表示されます。
次回ユーザーがログインすると、指定した場所にメニューが表示されます。
すべてのユーザーにメニューを追加するには、次の手順を実行します。
追加する項目用にディレクトリエントリファイルを作成します。ディレクトリエントリファイルは、 /usr/share/gnome/vfolders ディレクトリに作成します。ディレクトリエントリファイルについては、「ディレクトリエントリファイル」を参照してください。
メニューを追加する場所用の vfolder 情報ファイルの場所を確認します。「アプリケーション」メニューにメニューを追加する場合は、ファイル /etc/gnome-vfs-2.0/vfolders/applications-all-users.vfolder-info の場所を確認します。
vfolder 情報ファイルに、新しいメニュー用の <Folder> 要素を追加します。vfolder 情報ファイルについては、「vfolder とメニュー」を参照してください。
次回ユーザーがログインすると、指定した場所にメニューが表示されます。
すべてのユーザーのメニューに項目を追加するには、次の手順を実行します。
追加する項目用にデスクトップエントリファイルを作成します。デスクトップエントリファイルについては、「デスクトップエントリファイル」を参照してください。
ファイルマネージャウィンドウを開きます。「ファイル」-> 「新規ウィンドウ」を選択して、別のファイルマネージャウィンドウを開きます。
1 つのウィンドウで、メニュー項目を追加する場所にアクセスします。たとえば、「設定」メニューにメニュー項目を追加する場合は、「場所」フィールドに preferences-all-users:/// と入力し、リターンキーを押します。
別のウィンドウで、そのメニュー項目用に作成したデスクトップエントリファイルを選択します。メニュー項目を追加する場所にデスクトップエントリファイルをドラッグします。
あるいは、デスクトップエントリファイルをコピーして、メニュー項目を追加する場所にそのファイルを貼り付けます。
次回ユーザーがログインすると、指定した場所にメニュー項目が表示されます。
すべてのユーザーのメニューの設定を編集するには、次の手順を実行します。
パネルから編集するメニューを開きます。メニュー上の任意の項目を右クリックします。
「メニュー全体」->「設定」を選択します。「ランチャーの設定」ダイアログが表示されます。
「ランチャーの設定」ダイアログでメニューの設定を変更します。「ランチャーの設定」ダイアログの要素については、『Java Desktop System Release 3 ユーザーズガイド』を参照してください。
「了解」をクリックします。
メニュー項目を編集するには、次の手順を実行します。
パネルから、編集する項目を含むメニューを開きます。編集する項目を右クリックします。
「設定」を選択します。「ランチャーの設定」ダイアログが表示されます。
「ランチャーの設定」ダイアログでメニュー項目の設定を変更します。「ランチャーの設定」ダイアログの要素については、『Java Desktop System Release 3 ユーザーズガイド』を参照してください。
「了解」をクリックします。
次の手順を実行します。
パネルから、削除する項目を含むメニューを開きます。
削除する項目を右クリックし、「ランチャーをメニューから削除」を選択します。
次回ユーザーがログインすると、そのメニュー項目はメニューに表示されません。
以下の条件が当てはまる場合、ユーザーはメニューを変更できません。
メニューに対応する vfolder 情報ファイルが /etc/gnome-vfs-2.0/vfolders ディレクトリに存在する
vfolder 情報ファイルの名前が、メニューに対応する URI ロケーションの名前と同じである
ユーザーが変更できないようにメニューを設定するには、次の手順を実行します。
/etc/gnome-vfs-2.0/vfolders ディレクトリに、設定するメニュー用の vfolder 情報ファイルを作成します。
vfolder 情報ファイルの名前に、設定するメニューに対応する URI ロケーションの名前を指定します。たとえば、「アプリケーション」メニューを設定する場合、/etc/gnome-vfs-2.0/vfolders ディレクトリに applications.vfolder-info という名前で vfolder 情報ファイルを作成します。