Firefox OS のホームスクリーン切り替えを調べてみた
Firefox OS のホームスクリーン切り替え機能について調べてみました。
ホームスクリーン切り替えは Firefox OS 1.3 から入っています。
- B2G/Roadmap 1.3 Features "System: Haida: Replaceable Homescreen prototype 898330"
ホームスクリーン切り替えの仕組み
マニフェストに "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" の項目が表示されるようになります。
この表示の切り替えは 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" に変更すると以下のような縦スクロールの簡易ホームスクリーンになります。
ホームスクリーンアプリを自作できるか?
マニフェストに "role": "homescreen"
を含む自作アプリをインストールしてホームスクリーンを切り替えることはできます。
ただし、他のアプリの情報取得と起動に必要な Apps.mgmt API の利用には "webapps-manage" の認定 (certified) パーミッションが必要になります。
なので、今のところサードパーティーの開発者はまともに動作するホームスクリーンアプリを開発して公開することは出来ません。