diff --git a/app/index.js b/app/index.js index 283c781..255a2ad 100644 --- a/app/index.js +++ b/app/index.js @@ -1,5 +1,7 @@ "use strict"; +const electron = require("electron"); + let apiResult = null; let previews = null; let columns = null; @@ -94,6 +96,11 @@ window.addEventListener("blur", event => { resetPreviews(keepAPIResult); }); +document.addEventListener("keydown", event => { + if (event.keyCode === 27) // Escape + electron.ipcRenderer.send("hide-browser", true); +}); + input.addEventListener("input", (event => { if (event.metaKey || event.altKey) return; diff --git a/index.js b/index.js index a589b15..2fc893f 100755 --- a/index.js +++ b/index.js @@ -5,10 +5,14 @@ require("electron-dl")(); electron.app.dock.hide(); -const size = { - arrow: 12, - width: 301, - height: 400, +const Size = { + Arrow: 12, + Width: 301, + Height: 400, +}; + +const Shortcut = { + Toggle: "CommandOrControl+Shift+Space", }; let tray = null; @@ -23,10 +27,7 @@ function createTray() { if (!browser) createBrowser(); - if (browser.isVisible()) - hideBrowser(); - else - showBrowser(bounds); + toggleBrowser(bounds); }); } @@ -39,8 +40,8 @@ function createBrowser() { frame: false, resizable: false, transparent: true, - width: size.width, - height: size.height + size.arrow, + width: Size.Width, + height: Size.Height + Size.Arrow, } browser = new electron.BrowserWindow(options); @@ -53,7 +54,7 @@ function createBrowser() { } function showBrowser(bounds) { - browser.setPosition(parseInt(bounds.x - (size.width / 2) + (bounds.width / 2)), bounds.y + size.arrow + 14); + browser.setPosition(parseInt(bounds.x - (Size.Width / 2) + (bounds.width / 2)), bounds.y + Size.Arrow + 14); browser.show(); tray.setHighlightMode("always"); @@ -65,7 +66,27 @@ function hideBrowser() { tray.setHighlightMode("never"); } +function toggleBrowser(bounds) { + if (browser.isVisible()) + hideBrowser(); + else + showBrowser(bounds || tray.getBounds()); +} + +electron.ipcMain.on("hide-browser", (event, data) => { + if (data) + hideBrowser(); +}); + electron.app.on("ready", event => { createTray(); createBrowser(); + + electron.globalShortcut.register(Shortcut.Toggle, () => { + toggleBrowser(); + }); +}); + +electron.app.on("will-quit", event => { + electron.globalShortcut.unregister(Shortcut.Toggle); }); diff --git a/package.json b/package.json index 3032d0b..ac3b7ae 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "GIFBar", "productName": "GIFBar", - "version": "1.0.1", + "version": "1.1.0", "description": "A system tray icon that helps you find the perfect GIF", "scripts": { "start": "electron .",