ウェブサービスを作っています。

Chrome OS の拡張機能で、カレントウインドウがターミナルかどうか判別する

最近 Chromebook を入手したので Emacs keybindings がちゃんと使えるようにしたく、試行錯誤しています。

その過程で拡張機能を作っており、思いついたコードです。


const TERMINAL_URL_REGEXP = /^chrome\-extension:\/\/.+\/html\/crosh\.html/

let onTerminal = false

chrome.windows.onFocusChanged.addListener(() => {
  const getInfo = {
    populate: true,
    windowTypes: ['normal', 'popup', 'devtools']
  }

  chrome.windows.getCurrent(getInfo, window => {
    onTerminal = (
      window && window.tabs.length > 0 &&
        window.tabs[0].url.search(TERMINAL_URL_REGEXP) > -1
    )
  })
})

manifest.json の permissions に tabs を追加する必要があります。

"permissions": ["tabs"]

Chrome OS、ES6 で OS を操作できるのが良いですね。

参考