Firefox OS のホームスクリーン切り替えを調べてみた

Firefox OS のホームスクリーン切り替え機能について調べてみました。

ホームスクリーン切り替えは Firefox OS 1.3 から入っています。

ホームスクリーン切り替えの仕組み

マニフェストに "role": "homescreen" が設定されているアプリがホームスクリーンアプリとして認識されます。以下は Firefox OS 組み込みのホームスクリーンの manifest.webapp の抜粋ですが、こちらにも "role": "homescreen" が設定されています。

2   "name": "Homescreen",
3   "description": "Gaia Homescreen",
4   "launch_path": "/index.html#root",
5   "type": "certified",
6   "role": "homescreen",

このように "role": "homescreen" が設定されたアプリが複数インストールされていると、Firefox OS の設定で "Homescreen" の項目が表示されるようになります。

homescreen setting

この表示の切り替えは Settings アプリ (gaia/apps/settings) の以下の部分で行っています。ホームスクリーンアプリの数に応じて "homescreen-section" の hidden プロパティを切り替えます。

27   function updateHomescreenSectionVisibility() {
28     var hideHomescreen = homescreenCount < 2;
29     document.getElementById('homescreen-section').hidden = hideHomescreen;
30   };

設定でホームスクリーンアプリを変更すると、以下のコードで、新たに選択されたホームスクリーンアプリのマニフェスト URL を設定項目の "homescreen.manifestURL" に格納します。

41   handleChangeHomescreen: function handleChangeHomescreen(evt) {
42     var index = this._detailButton.dataset.appIndex;
43     this.setHomescreen(this._apps[index].manifestURL);
44   },
45 
46   setHomescreen: function setHomescreen(homescreenManifestUrl) {
47     this._settings.createLock().set({
48       'homescreen.manifestURL': homescreenManifestUrl
49     });
50   },

実際のホームスクリーンの起動は Gaia の System アプリ (gaia/apps/system) が行います。"homescreen.manifestURL" に設定されたマニフェストを使用してアプリを起動します。(参考: homescreen_launcher.js)

なお、ホームスクリーンアプリの背景には選択済の壁紙が自動的に表示されるようです。仕組みはまだ調べていません。

ホームスクリーン切り替えを試してみる

ホームスクリーンの切り替えは以下の FTP からダウンロードできる B2G デスクトップクライアントで手軽に試せます。

Mac なら B2G.app (Windows なら b2g.exe) をクリックするだけで起動出来ると思います。 こちらのビルドには通常のホームスクリーンの他に、開発ビルド用の "homescreen2" が入っているので、自分でホームスクリーンをインストールしなくても設定に "Homescreen" 項目が表示されます。

なお、設定画面を開いたら何もせずに 4 秒ちょっと待って下さい。"Homescreen" 項目を表示するか判定するためには、全アプリをチェックしてホームスクリーンアプリの数をカウントする必要があります。設定画面を開いた際にこの負荷がかかるのを避けるため、Settings アプリは Idle API で 4 秒待ってからチェックを開始します。

開発ビルド用に含まれる "homescreen2" に変更すると以下のような縦スクロールの簡易ホームスクリーンになります。

homescreen2

ホームスクリーンアプリを自作できるか?

マニフェストに "role": "homescreen" を含む自作アプリをインストールしてホームスクリーンを切り替えることはできます。

ただし、他のアプリの情報取得と起動に必要な Apps.mgmt API の利用には "webapps-manage" の認定 (certified) パーミッションが必要になります。

なので、今のところサードパーティーの開発者はまともに動作するホームスクリーンアプリを開発して公開することは出来ません。

Published: April 29 2014

  • category: