LoginSignup
7
7

More than 5 years have passed since last update.

ChromeAppsを最前面に表示したいんだ。

Posted at

ChromeAppsを常に最前面に表示したい!

何がしたいかはお察しください…常に最前面に置いておきたいアプリってあるよね。

そんな前例あったっけ

ChromeAppsっでは今のところ見たことが無いような…

ほんとにできるの?

とりあえず http://developer.chrome.com/ を見てみましょう…windowのことだしchrome.app.window辺りが怪しいよな…

あった!

setAlwaysOnTopなんていうオプションがあるじゃないすか!
どうやら使うにはalwaysOnTopWindowsっていうパーミッションが必要らしい。

bool型で指定してやるらしい。要するにtrueかfalseだね。

試してみよう!

今回はgithubにGoogleが用意してるサンプルからTwitter-webview-clientを借用させてもらいます。

まずはパーミッションを追加しよう

manifest.json
{
  "name": "Sample of a Twitter Client",
  "description": "Twitter Client in a WebView.",
  "version": "0.2",
  "app": {
    "background": {
      "scripts": ["src/background.js"]
    }
  },
  "permissions": [ "webview" , "alwaysOnTopWindows"]
}

起動時にフラグを立てよう

src/background.js
"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.

Error

どうやらstableチャンネルではこの機能は使えないらしい…

それって 実用的じゃない!!

とりあえずリベンジ

こういう時は共存させてるChromiumなりChrome Canaryなりの出番ですね。

同様にロードしてやる。

今度は問題なく読み込めたみたい。

起動をクリックしてみる。

ちゃんと出るね。

ほかの窓で覆おう。

隠れない。

よし!成功!

そういやAppWindowにもあったよな

AppWindowからもON/OFF出来るんだ。とりあえずコンソールから試してみよう。

chrome.app.window.get("main-view").setAlwaysOnTop(true)

って打ってやると最前面、falseにしてやると解除される筈だ。

出来たかな。

あくまでもまだ開発中らしい

なんかこの作業を繰り返していたら最前面に居てくれなくなっちゃったよ……
バグはあるみたいだけど、とりあえずやりたいことは出来そう。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7