From b01497e391d441f018f1daa4e7db945af419259a Mon Sep 17 00:00:00 2001 From: cutls Date: Mon, 18 Nov 2019 01:07:44 +0900 Subject: [PATCH] better coding :) --- app/main.js | 417 ++++++++++++++++++++++++++++------------------------ 1 file changed, 224 insertions(+), 193 deletions(-) diff --git a/app/main.js b/app/main.js index d05e1965..17756c89 100644 --- a/app/main.js +++ b/app/main.js @@ -1,296 +1,327 @@ -var dirname = __dirname; -var dir = "file://" + __dirname; -var base = dir + "/view/"; +var dirname = __dirname +var dir = 'file://' + __dirname +var base = dir + '/view/' // Electronのモジュール -const electron = require("electron"); -const fs = require("fs"); -const language = require("./main/language.js"); -const css = require("./main/css.js"); -const dl = require("./main/dl.js"); -const img = require("./main/img.js"); -const np = require("./main/np.js"); -const systemFunc = require("./main/system.js"); -const Menu = electron.Menu; -const join = require("path").join; +const electron = require('electron') +const fs = require('fs') +const language = require('./main/language.js') +const css = require('./main/css.js') +const dl = require('./main/dl.js') +const img = require('./main/img.js') +const np = require('./main/np.js') +const systemFunc = require('./main/system.js') +const Menu = electron.Menu +const join = require('path').join // アプリケーションをコントロールするモジュール -const app = electron.app; +const app = electron.app // ウィンドウを作成するモジュール -const BrowserWindow = electron.BrowserWindow; +const BrowserWindow = electron.BrowserWindow // メインウィンドウはGCされないようにグローバル宣言 -let mainWindow; +let mainWindow // アプリが多重起動しないようにする -const gotTheLock = app.requestSingleInstanceLock(); +const gotTheLock = app.requestSingleInstanceLock() if (!gotTheLock) { - app.quit(); + app.quit() } else { - app.on("second-instance", () => { + app.on('second-instance', () => { // 多重起動を試みた場合、既に存在するウィンドウにフォーカスを移す // Someone tried to run a second instance, we should focus our window. if (mainWindow) { - if (mainWindow.isMinimized()) mainWindow.restore(); - mainWindow.focus(); + if (mainWindow.isMinimized()) mainWindow.restore() + mainWindow.focus() } - }); + }) } -if (process.argv.indexOf("--dev") === -1) { - var packaged = true; +if (process.argv.indexOf('--dev') === -1) { + var packaged = true } else { - var packaged = false; - console.log("||\\\\\\ \n" + "|||| \\\\\\\\ \n" + "|||| \\\\\\\\ \n" + "|||| Am I a \\\\\\\\ \n" + "|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n" + "|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n" + "|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n" + "|||| < _ _) ////// | | | | | | __/ |_| | __/__ \\ < \n" + "|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n" + "|||| ///// \n" + "|||| /////\n" + "|||| /////\n" + "||||//////"); - console.log("Welcome!"); + var packaged = false + console.log( + '||\\\\\\ \n' + + '|||| \\\\\\\\ \n' + + '|||| \\\\\\\\ \n' + + '|||| Am I a \\\\\\\\ \n' + + '|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n' + + '|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n' + + "|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n" + + '|||| < _ _) ////// | | | | | | __/ |_| | __/__ \\ < \n' + + '|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n' + + '|||| ///// \n' + + '|||| /////\n' + + '|||| /////\n' + + '||||//////' + ) + console.log('Welcome!') } -var info_path = join(app.getPath("userData"), "window-size.json"); -var max_info_path = join(app.getPath("userData"), "max-window-size.json"); -var lang_path = join(app.getPath("userData"), "language"); -var ha_path = join(app.getPath("userData"), "hardwareAcceleration"); -var ua_path = join(app.getPath("userData"), "useragent"); +var info_path = join(app.getPath('userData'), 'window-size.json') +var max_info_path = join(app.getPath('userData'), 'max-window-size.json') +var lang_path = join(app.getPath('userData'), 'language') +var ha_path = join(app.getPath('userData'), 'hardwareAcceleration') +var ua_path = join(app.getPath('userData'), 'useragent') try { - fs.readFileSync(ha_path, "utf8"); - app.disableHardwareAcceleration(); - if (!packaged) console.log("disabled: Hardware Acceleration"); + fs.readFileSync(ha_path, 'utf8') + app.disableHardwareAcceleration() + if (!packaged) console.log('disabled: Hardware Acceleration') } catch { - if (!packaged) console.log("enabled: Hardware Acceleration"); + if (!packaged) console.log('enabled: Hardware Acceleration') } -var window_size; +var window_size try { - window_size = JSON.parse(fs.readFileSync(info_path, "utf8")); + window_size = JSON.parse(fs.readFileSync(info_path, 'utf8')) } catch (e) { window_size = { width: 1000, height: 750 - }; // デフォルトバリュー + } // デフォルトバリュー } -var max_window_size; +var max_window_size try { - max_window_size = JSON.parse(fs.readFileSync(max_info_path, "utf8")); + max_window_size = JSON.parse(fs.readFileSync(max_info_path, 'utf8')) } catch (e) { max_window_size = { - width: "string", - height: "string", - x: "string", - y: "string" - }; // デフォルトバリュー + width: 'string', + height: 'string', + x: 'string', + y: 'string' + } // デフォルトバリュー } function isFile(file) { try { - fs.statSync(file); - return true; + fs.statSync(file) + return true } catch (err) { - if (err.code === "ENOENT") return false; + if (err.code === 'ENOENT') return false } } // 全てのウィンドウが閉じたら終了 -app.on("window-all-closed", function() { - electron.session.defaultSession.clearCache(() => {}); - app.quit(); -}); - +app.on('window-all-closed', function() { + electron.session.defaultSession.clearCache(() => {}) + app.quit() +}) function createWindow() { if (isFile(lang_path)) { - var lang = fs.readFileSync(lang_path, "utf8"); + var lang = fs.readFileSync(lang_path, 'utf8') } else { - var langs = app.getLocale(); - console.log(langs); - if (~langs.indexOf("ja")) { - lang = "ja"; - } else if (~langs.indexOf("de")) { - lang = "de"; - } else if (~langs.indexOf("cs")) { - lang = "cs"; - } else if (~langs.indexOf("bg")) { - lang = "bg"; + var langs = app.getLocale() + console.log(langs) + if (~langs.indexOf('ja')) { + lang = 'ja' + } else if (~langs.indexOf('de')) { + lang = 'de' + } else if (~langs.indexOf('cs')) { + lang = 'cs' + } else if (~langs.indexOf('bg')) { + lang = 'bg' } else { - lang = "en"; + lang = 'en' } - fs.mkdir(app.getPath("userData"), function(err) { - fs.writeFileSync(lang_path, lang); - }); + fs.mkdir(app.getPath('userData'), function(err) { + fs.writeFileSync(lang_path, lang) + }) } - if (!packaged) console.log("your lang:" + app.getLocale()); - if (!packaged) console.log("launch:" + lang); + if (!packaged) console.log('your lang:' + app.getLocale()) + if (!packaged) console.log('launch:' + lang) // メイン画面の表示。ウィンドウの幅、高さを指定できる - var platform = process.platform; - var bit = process.arch; - if (platform == "linux") { + var platform = process.platform + var bit = process.arch + if (platform == 'linux') { var arg = { webPreferences: { webviewTag: true, nodeIntegration: false, contextIsolation: true, - preload: join(__dirname, "js", "platform", "preload.js") + preload: join(__dirname, 'js', 'platform', 'preload.js') }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, - icon: __dirname + "/desk.png", + icon: __dirname + '/desk.png', show: false - }; - } else if (platform == "win32") { - var arg = { - webPreferences: { - webviewTag: true, - nodeIntegration: false, - contextIsolation: true, - preload: join(__dirname, "js", "platform", "preload.js") - }, - width: window_size.width, - height: window_size.height, - x: window_size.x, - y: window_size.y, - simpleFullscreen: true, - show: false - }; - } else if (platform == "darwin") { - var arg = { - webPreferences: { - webviewTag: true, - nodeIntegration: false, - contextIsolation: true, - preload: join(__dirname, "js", "platform", "preload.js") - }, - width: window_size.width, - height: window_size.height, - x: window_size.x, - y: window_size.y, - simpleFullscreen: true, - show: false - }; - } - mainWindow = new BrowserWindow(arg); - mainWindow.once("page-title-updated", () => { - mainWindow.show(); - if (window_size.max) { - mainWindow.maximize(); } - }); - if (!packaged) mainWindow.toggleDevTools(); - electron.session.defaultSession.clearCache(() => {}); + } else if (platform == 'win32') { + var arg = { + webPreferences: { + webviewTag: true, + nodeIntegration: false, + contextIsolation: true, + preload: join(__dirname, 'js', 'platform', 'preload.js') + }, + width: window_size.width, + height: window_size.height, + x: window_size.x, + y: window_size.y, + simpleFullscreen: true, + show: false + } + } else if (platform == 'darwin') { + var arg = { + webPreferences: { + webviewTag: true, + nodeIntegration: false, + contextIsolation: true, + preload: join(__dirname, 'js', 'platform', 'preload.js') + }, + width: window_size.width, + height: window_size.height, + x: window_size.x, + y: window_size.y, + simpleFullscreen: true, + show: false + } + } + mainWindow = new BrowserWindow(arg) + mainWindow.once('page-title-updated', () => { + mainWindow.show() + if (window_size.max) { + mainWindow.maximize() + } + }) + if (!packaged) mainWindow.toggleDevTools() + electron.session.defaultSession.clearCache(() => {}) if (process.argv) { if (process.argv[1]) { - var m = process.argv[1].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/); + var m = process.argv[1].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/) if (m) { - var mode = m[1]; - var code = m[2]; - var plus = "?mode=" + mode + "&code=" + code; + var mode = m[1] + var code = m[2] + var plus = '?mode=' + mode + '&code=' + code } else { - var plus = ""; + var plus = '' } } else { - var plus = ""; + var plus = '' } } else { - var plus = ""; + var plus = '' } - var ua; + var ua try { - ua = fs.readFileSync(ua_path, "utf8"); + ua = fs.readFileSync(ua_path, 'utf8') } catch (e) { //default UA Example: // Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) thedesk/18.11.3 Chrome/76.0.3809.146 Electron/6.0.12 Safari/537.36 - const crypto = require("crypto"); - const N = 100; + const crypto = require('crypto') + const N = 100 var ua = - "Mastodon client: " + + 'Mastodon client: ' + crypto .randomBytes(N) - .toString("base64") - .substring(0, N); + .toString('base64') + .substring(0, N) } - mainWindow.loadURL(base + lang + "/index.html" + plus, { userAgent: ua }); + mainWindow.loadURL(base + lang + '/index.html' + plus, { userAgent: ua }) if (!window_size.x && !window_size.y) { - mainWindow.center(); + mainWindow.center() } // ウィンドウが閉じられたらアプリも終了 - mainWindow.on("closed", function() { - electron.ipcMain.removeAllListeners(); - mainWindow = null; - }); - closeArg = false; - mainWindow.on("close", function(e, arg) { - writePos(mainWindow); + mainWindow.on('closed', function() { + electron.ipcMain.removeAllListeners() + mainWindow = null + }) + closeArg = false + mainWindow.on('close', function(e, arg) { + writePos(mainWindow) if (!closeArg) { - e.preventDefault(); + e.preventDefault() } const promise = new Promise(function(resolve) { - mainWindow.webContents.send("asReadEnd", ""); + mainWindow.webContents.send('asReadEnd', '') setTimeout(function() { - resolve(); - }, 3000); - }); + resolve() + }, 3000) + }) promise.then(function(response) { - closeArg = true; - mainWindow.close(); - }); - }); - electron.ipcMain.on("sendMarkersComplete", function(e, arg) { - closeArg = true; - mainWindow.close(); - }); + closeArg = true + mainWindow.close() + }) + }) + electron.ipcMain.on('sendMarkersComplete', function(e, arg) { + closeArg = true + mainWindow.close() + }) function writePos(mainWindow) { - if (max_window_size.width == mainWindow.getBounds().width && max_window_size.height == mainWindow.getBounds().height && max_window_size.x == mainWindow.getBounds().x && max_window_size.y == mainWindow.getBounds().y) { - var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y, max: true }; + if ( + max_window_size.width == mainWindow.getBounds().width && + max_window_size.height == mainWindow.getBounds().height && + max_window_size.x == mainWindow.getBounds().x && + max_window_size.y == mainWindow.getBounds().y + ) { + var size = { + width: mainWindow.getBounds().width, + height: mainWindow.getBounds().height, + x: mainWindow.getBounds().x, + y: mainWindow.getBounds().y, + max: true + } } else { - var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y }; + var size = { + width: mainWindow.getBounds().width, + height: mainWindow.getBounds().height, + x: mainWindow.getBounds().x, + y: mainWindow.getBounds().y + } } - fs.writeFileSync(info_path, JSON.stringify(size)); + fs.writeFileSync(info_path, JSON.stringify(size)) } - mainWindow.on("maximize", function() { - writePos(mainWindow); - fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds())); - }); - mainWindow.on("minimize", function() { - writePos(mainWindow); - mainWindow.webContents.send("asRead", ""); - }); + mainWindow.on('maximize', function() { + writePos(mainWindow) + fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds())) + }) + mainWindow.on('minimize', function() { + writePos(mainWindow) + mainWindow.webContents.send('asRead', '') + }) - var platform = process.platform; - var bit = process.arch; - Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname))); + var platform = process.platform + var bit = process.arch + Menu.setApplicationMenu( + Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname)) + ) //CSS - css.css(mainWindow); + css.css(mainWindow) //アップデータとダウンロード - dl.dl(mainWindow, lang_path, base, dirname); + dl.dl(mainWindow, lang_path, base, dirname) //画像選択と画像処理 - img.img(mainWindow, dir); + img.img(mainWindow, dir) //NowPlaying - np.TheDeskNowPlaying(mainWindow); + np.TheDeskNowPlaying(mainWindow) //その他system - systemFunc.system(mainWindow, dir, lang, dirname); + systemFunc.system(mainWindow, dir, lang, dirname) setInterval(function() { - mouseTrack(mainWindow); - }, 1000); + mouseTrack(mainWindow) + }, 1000) } -var x = 0; -var y = 0; -var unchanged = 0; -var locked = false; +var x = 0 +var y = 0 +var unchanged = 0 +var locked = false function mouseTrack(mainWindow) { - let mousePos = electron.screen.getCursorScreenPoint(); - let xNow = mousePos.x; - let yNow = mousePos.x; + let mousePos = electron.screen.getCursorScreenPoint() + let xNow = mousePos.x + let yNow = mousePos.x if (x != xNow || y != yNow) { - unchanged = 0; - locked = false; + unchanged = 0 + locked = false } else { - unchanged++; + unchanged++ if (unchanged > 60 && !locked) { - unchanged = 0; - locked = true; - mainWindow.webContents.send("asRead", ""); + unchanged = 0 + locked = true + mainWindow.webContents.send('asRead', '') } } - x = xNow; - y = yNow; + x = xNow + y = yNow } // Electronの初期化完了後に実行 -app.on("ready", createWindow); +app.on('ready', createWindow) var onError = function(err, response) { - console.error(err, response); -}; + console.error(err, response) +} -app.setAsDefaultProtocolClient("thedesk"); +app.setAsDefaultProtocolClient('thedesk')