From 97ef140789c0e1e7d1471a4e864610b93578f981 Mon Sep 17 00:00:00 2001 From: dragonwocky Date: Fri, 3 Dec 2021 00:55:49 +1100 Subject: [PATCH] tray: open on startup, handle notion:// protocol --- repo/integrated-titlebar/client.mjs | 1 + repo/tray/createWindow.cjs | 16 +++++++++++++++- repo/tray/main.cjs | 3 +++ repo/tray/mod.json | 7 +++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/repo/integrated-titlebar/client.mjs b/repo/integrated-titlebar/client.mjs index de0eff3..75eef97 100644 --- a/repo/integrated-titlebar/client.mjs +++ b/repo/integrated-titlebar/client.mjs @@ -44,6 +44,7 @@ export default async function (api, db) { await web.whenReady([topbarSelector, topbarActionsSelector]); const $topbar = document.querySelector(topbarSelector), $dragarea = web.html`
`; + $topbar.style.height = `${45 + dragareaHeight}px`; $topbar.prepend($dragarea); const $topbarActions = document.querySelector(topbarActionsSelector), diff --git a/repo/tray/createWindow.cjs b/repo/tray/createWindow.cjs index 0186e0f..b339cd3 100644 --- a/repo/tray/createWindow.cjs +++ b/repo/tray/createWindow.cjs @@ -6,9 +6,10 @@ 'use strict'; -module.exports = async function (api, db, __exports, __eval) { +module.exports = async function ({ env }, db, __exports, __eval) { const electron = require('electron'), { isMenuOpen } = require('notion-enhancer/worker.cjs'), + urlHelpers = env.notionRequire('helpers/urlHelpers'), runInBackground = await db.get(['run_in_background']); if (!runInBackground) return; @@ -34,10 +35,23 @@ module.exports = async function (api, db, __exports, __eval) { throw new Error(': prevent window close'); } }); + + // no other windows yet + opened at startup = hide + const wasOpenedAtStartup = + process.argv.includes('--startup') || + app.getLoginItemSettings({ args: ['--startup'] }).wasOpenedAtLogin; + if (!windows.length && wasOpenedAtStartup) { + window.once('ready-to-show', () => window.hide()); + } + return window; } else { // prevents duplicate windows on dock/taskbar click windows[0].focus(); + if (relativeUrl) { + // handle requests passed via the notion:// protocol + windows[0].loadURL(urlHelpers.getIndexUrl(relativeUrl)); + } return windows[0]; } }; diff --git a/repo/tray/main.cjs b/repo/tray/main.cjs index 33a2391..813ff8b 100644 --- a/repo/tray/main.cjs +++ b/repo/tray/main.cjs @@ -13,6 +13,7 @@ module.exports = async function ({ env, registry }, db, __exports, __eval) { path = require('path'), enhancerIcon = path.resolve(`${__dirname}/../../media/colour-x16.png`), hotkey = await db.get(['hotkey']), + openAtStartup = await db.get(['startup']), runInBackground = await db.get(['run_in_background']), menuHotkey = await ( await registry.db('a6621988-551d-495a-97d8-3c568bca2e9e') @@ -34,6 +35,8 @@ module.exports = async function ({ env, registry }, db, __exports, __eval) { }; await electron.app.whenReady(); + electron.app.setLoginItemSettings({ openAtLogin: openAtStartup, args: ['--startup'] }); + tray = new electron.Tray(enhancerIcon); tray.setToolTip('notion-enhancer'); tray.on('click', () => toggleWindows(false)); diff --git a/repo/tray/mod.json b/repo/tray/mod.json index 1d06f6c..b88c81e 100644 --- a/repo/tray/mod.json +++ b/repo/tray/mod.json @@ -22,6 +22,13 @@ ] }, "options": [ + { + "type": "toggle", + "key": "startup", + "label": "open notion on startup", + "tooltip": "**if the 'run notion in the background' option is also enabled, the app will open in background on startup** (this option may require relaunching the app BEFORE restarting your system to properly take effect)", + "value": false + }, { "type": "toggle", "key": "run_in_background",