Electron で Windows/Mac のスタートアップ登録をする

Electron の豊富な設定項目と丁寧なリファレンスには絶対に存在するかと思われた「スタートアップ登録」ですが、「startup」というワードでは一切ヒットしないのでややわかりづらいです。

実際にはこれが該当します。

app | Electron
app | Electron
アプリケーションのイベントライフサイクルを制御します。

メインプロセスモジュールの app が持つメソッドとして setLoginItemSettings() があります。

基本形はこうです:

app.setLoginItemSettings({
  openAtLogin: true,
})

この他にもプロパティは色々あるものの、基本はこれを設定するだけであとはうまいことやってくれます。Windows/Mac でそれぞれ固有の設定値もあるので詳しくはリファレンスを参照してください。

なお、スタートアップ登録はユーザーが OS からも自由に変更できるために「変更を適用する前に今の設定状態を確認しましょう」というようなことが公式からもガイドされています。

これには getLoginItemSettings を使います。そのままですね。

app | Electron
app | Electron
アプリケーションのイベントライフサイクルを制御します。

同じく openAtLogin から真偽値が取得できるのでこれを使いましょう。

const res = app.getLoginItemSettings()
console.log(res.openAtLogin)  // true

多くのアプリケーションではスタートアップ登録をチェックボックスやトグルスイッチで実現しているでしょうから、設定画面を開くときに毎度これをチェックしてあらかじめ反映させておくのがよさそうです。

ちなみに2016年(v1.2.7 )ごろまではこの API はなく、auto-launch という外部パッケージを使うのが一般的だったそうです。たぶん初期リリースはこの回

スタートアップの要望が issue として登録されて以降、Electron 本体側で実装され組み込まれたらしい経緯が このスレッド で確認できます。