ChromeAppsを常に最前面に表示したい!
何がしたいかはお察しください…常に最前面に置いておきたいアプリってあるよね。
そんな前例あったっけ
ChromeAppsっでは今のところ見たことが無いような…
ほんとにできるの?
とりあえず http://developer.chrome.com/ を見てみましょう…windowのことだしchrome.app.window辺りが怪しいよな…
あった!
setAlwaysOnTop
なんていうオプションがあるじゃないすか!
どうやら使うにはalwaysOnTopWindows
っていうパーミッションが必要らしい。
bool型で指定してやるらしい。要するにtrueかfalseだね。
試してみよう!
今回はgithubにGoogleが用意してるサンプルからTwitter-webview-clientを借用させてもらいます。
まずはパーミッションを追加しよう
{
"name": "Sample of a Twitter Client",
"description": "Twitter Client in a WebView.",
"version": "0.2",
"app": {
"background": {
"scripts": ["src/background.js"]
}
},
"permissions": [ "webview" , "alwaysOnTopWindows"]
}
起動時にフラグを立てよう
"use strict";
chrome.app.runtime.onLaunched.addListener(function () {
chrome.app.window.create('../html/window.html', {
'id': 'main-view',
'width': 450,
'height': 500,
'minWidth': 450,
'minHeight': 500,
'alwaysOnTop': true
});
});
読み込んでみよう
AppsDeveloperTool(chrome://flagsから有効化)でパッケージ化されていない…で読み込んでやった。もちろんchrome://extensionsからでもOK.
なんか怒られた
- 'alwaysOnTopWindows' requires Google Chrome dev channel or newer, but this is the stable channel.
どうやらstableチャンネルではこの機能は使えないらしい…
それって 実用的じゃない!!
とりあえずリベンジ
こういう時は共存させてるChromiumなりChrome Canaryなりの出番ですね。
同様にロードしてやる。
今度は問題なく読み込めたみたい。
起動をクリックしてみる。
ちゃんと出るね。
ほかの窓で覆おう。
隠れない。
よし!成功!
そういやAppWindowにもあったよな
AppWindowからもON/OFF出来るんだ。とりあえずコンソールから試してみよう。
chrome.app.window.get("main-view").setAlwaysOnTop(true)
って打ってやると最前面、false
にしてやると解除される筈だ。
出来たかな。
あくまでもまだ開発中らしい
なんかこの作業を繰り返していたら最前面に居てくれなくなっちゃったよ……
バグはあるみたいだけど、とりあえずやりたいことは出来そう。