From 4c312490d0331cb64f004dc573aca14736f013cb Mon Sep 17 00:00:00 2001 From: Soumya Deb Date: Fri, 13 Dec 2019 23:47:09 +0530 Subject: [PATCH] chore(app): scaffold basic electron app --- .gitignore | 98 +++++----------------------------------------- config/window.json | 8 ++++ package.json | 27 +++++++++++++ src/app/index.css | 10 +++++ src/app/index.html | 13 ++++++ src/app/index.js | 7 ++++ src/index.js | 35 +++++++++++++++++ 7 files changed, 109 insertions(+), 89 deletions(-) create mode 100644 config/window.json create mode 100644 package.json create mode 100644 src/app/index.css create mode 100644 src/app/index.html create mode 100644 src/app/index.js create mode 100644 src/index.js diff --git a/.gitignore b/.gitignore index 6704566..a1bc461 100644 --- a/.gitignore +++ b/.gitignore @@ -1,104 +1,24 @@ # Logs logs *.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data +# Runtime pids *.pid *.seed *.pid.lock -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release +# Build +.tmp/ +dist/ +builds/ -# Dependency directories +# Deps node_modules/ -jspm_packages/ -# TypeScript v1 declaration files -typings/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory +# Misc .npm - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file .env -.env.test - -# parcel-bundler cache (https://parceljs.org/) .cache - -# Next.js build output -.next - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and *not* Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port +*.tgz +package-lock.json diff --git a/config/window.json b/config/window.json new file mode 100644 index 0000000..18c079e --- /dev/null +++ b/config/window.json @@ -0,0 +1,8 @@ +{ + "width": 1280, + "height": 720, + "autoHideMenuBar": true, + "webPreferences": { + "nodeIntegration": true + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..16136b1 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "exorcist", + "version": "0.0.1", + "description": "Got rogue daemons in your system?", + "main": "src/index.js", + "scripts": { + "start": "electron ." + }, + "dependencies": { + "electron": "^7.1.4" + }, + "devDependencies": {}, + "repository": { + "type": "git", + "url": "git@github.com:debloper/exorcist.git" + }, + "keywords": [ + "linux", + "startup", + "daemon", + "services", + "systemd", + "optimize" + ], + "author": "Soumya Deb ", + "license": "MIT" +} diff --git a/src/app/index.css b/src/app/index.css new file mode 100644 index 0000000..0dc761f --- /dev/null +++ b/src/app/index.css @@ -0,0 +1,10 @@ +html { + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; +} + +body { + margin: auto; + padding: 2rem; + text-align: center; +} diff --git a/src/app/index.html b/src/app/index.html new file mode 100644 index 0000000..fe236c1 --- /dev/null +++ b/src/app/index.html @@ -0,0 +1,13 @@ + + + + + exorcist + + + + +

loading...

+

loading...

+ + diff --git a/src/app/index.js b/src/app/index.js new file mode 100644 index 0000000..e640047 --- /dev/null +++ b/src/app/index.js @@ -0,0 +1,7 @@ + +const { ipcRenderer } = require('electron') + +ipcRenderer.on('loaded', (event, data) => { + document.getElementById('title').innerHTML = data.appName + document.getElementById('details').innerHTML = 'built with Electron v' + data.electronVersion +}) diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..a5acdcc --- /dev/null +++ b/src/index.js @@ -0,0 +1,35 @@ +// Application entrypoint + +const { app, BrowserWindow } = require('electron'); +const config = require('../config/window.json') + +// Global reference of the window object +let window; + +const createWindow = () => { + window = new BrowserWindow(config); + + window.loadFile(`${__dirname}/app/index.html`); + + // window.webContents.openDevTools() + + window.webContents.on('did-finish-load', () => { + window.webContents.send('loaded', { + appName: 'exorcist', + electronVersion: process.versions.electron + }) + }) + + // Reset the window object when closed + window.on('closed', () => { + window = null; + }); +}; + +// Electron has finished initialization +app.on('ready', createWindow); + +// Quit when all windows are closed. +app.on('window-all-closed', () => { + app.quit(); +});