schedule2021-09-06

【Electron】PCのスリープと起動イベントを検知する

デスクトップアプリを作るならPCの電源周りの動作にも気を配る必要があります。 裏で動いていた非同期なタスクがスリープから起動後に再度実行できるようイベントをハンドリングしていきます。

ElectornではpowerMonitorというAPIが用意されています。

powerMonitor

powerMonitorは電源の状態の変化をモニターします。

powerMonitor | Electron

イベント: resume

システムが再開したときのイベントです。

利用例

メインプロセスでのみ利用できます。 appredyの中で利用します。

▼ TypeScriptでの例。

main.ts
import { app, powerMonitor } from "electron";
import log from "electron-log";

app.on("ready", async () => {
  log.info("App ready");


  /**
   * システム(PC)が再開したとき
   */
  powerMonitor.on('resume', function () {
    log.info('System resumption');
    // 何らかの処理
  })
});

その他のイベント

公式が充実しているため短い紹介だけします。

  • システムの再開と停止: resume, suspend
  • 電源の状態: on-ac, on-battery
  • スクリーンをロックとアンロック: lock-screen, unlock-screen
  • システムが再起動またはシャットダウンするとき: shutdown

状態を把握するメソッド

  • powerMonitor.getSystemIdleState(idleThreshold)
    現在のシステムの状態 activeidlelockedunknownを返す。
  • powerMonitor.getSystemIdleTime()
    アイドル状態の秒数を返す
  • powerMonitor.isOnBatteryPower()
    システムがバッテリー電源状態かどうか

電源周りはタブレットPCを使った設備点検などのアプリで利用できそうです。

参考