const { app, BrowserWindow, globalShortcut } = require("electron"); const path = require("path"); const tidalUrl = "https://listen.tidal.com"; const trayModule = require("./scripts/tray"); const mediaKeysModule = require("./scripts/mediaKeys"); let mainWindow; let icon = path.join(__dirname, "../assets/icon.png"); /** * Enable live reload in development builds */ if (!app.isPackaged) { require("electron-reload")(`${__dirname}`, { electron: require(`${__dirname}/../node_modules/electron`), }); } function createWindow(options = {}) { // Create the browser window. mainWindow = new BrowserWindow({ x: options.x, y: options.y, width: 1024, height: 800, icon, tray: true, backgroundColor: options.backgroundColor, webPreferences: { affinity: "window", preload: path.join(__dirname, "preload.js"), plugins: true, }, }); mainWindow.setMenuBarVisibility(false); // load the Tidal website mainWindow.loadURL(tidalUrl); // run stuff after first load mainWindow.webContents.once("did-finish-load", () => {}); // Emitted when the window is closed. mainWindow.on("closed", function() { mainWindow = null; }); } function addGlobalShortcuts() { Object.values(mediaKeysModule).forEach((key) => { globalShortcut.register(key, () => { mainWindow.webContents.send("globalKey", key); }); }); } // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on("ready", () => { // window with white backround createWindow(); addGlobalShortcuts(); trayModule.addTray({ icon }); trayModule.refreshTray(); }); app.on("activate", function() { // On OS X it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (mainWindow === null) { createWindow(); } });