diff --git a/apps/server/Main.js b/apps/server/Main.js index 7752e29..83df1e8 100644 --- a/apps/server/Main.js +++ b/apps/server/Main.js @@ -1,4 +1,5 @@ require('dotenv').config(); +require('./lib/Systray.js') const sd = require('./lib/Deck'); const web = require('./webserver/WebServer'); const cm = require('./lib/ConfigManager'); diff --git a/apps/server/lib/Events.js b/apps/server/lib/Events.js index 753880a..805a9c7 100644 --- a/apps/server/lib/Events.js +++ b/apps/server/lib/Events.js @@ -5,4 +5,7 @@ module.exports = { CONFIG_CHANGED: "config_changed", GET_CONFIG: "get_config", GET_ACTIVE_DECK: "get_deck", + OPEN_CONFIG: "open_config", + ABOUT: "about", + QUIT: "quit" } \ No newline at end of file diff --git a/apps/server/lib/Systray.js b/apps/server/lib/Systray.js new file mode 100644 index 0000000..9fa2e3c --- /dev/null +++ b/apps/server/lib/Systray.js @@ -0,0 +1,47 @@ +const SysTray = require('systray2'); +const os = require('os'); +const EVENTS = require('./Events'); + + +const systray = new SysTray.default({ + menu: { + icon: "iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzZGNTM1NzRDQkUyMTFFOUE0MjJFRkQ5MEI4RUU1ODIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzZGNTM1NzVDQkUyMTFFOUE0MjJFRkQ5MEI4RUU1ODIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozNkY1MzU3MkNCRTIxMUU5QTQyMkVGRDkwQjhFRTU4MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozNkY1MzU3M0NCRTIxMUU5QTQyMkVGRDkwQjhFRTU4MiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhgJW5wAAAW7SURBVHja7F2Nces2DIa9QLRBOYLeBGE3cCcIN6g3eOwETyOoE9SdoOoE9Zug6gbKBKl0ge7p5cWOSIIkIBF3PN/lYlnkB+ADwL8DyBE9NoVN49/qsT2s+O7z2K5jG/Czx88r904fGL/bCYGYQHiM+Dt/j61btCI3pBqbGdtlbC+Z2mRhLSpHkYXrajOCcg+sBl3qLsUgB7wIaN2C93YBTC8EmF0BpQUD8x5Q9VaAUdihlw22BoMbsXJGsn3ZcBskRn1btppbrY1hTTES1RO+7ENkJXheVAK6O7nVzBWPCRTzP+w/2wqFjehGLvh8HaCpc5nIRrTwASNVdkKdbPZIwrHD2tniqbnScirRUCacl4yka4gtq90SOC2jsgpl+amVDg4nYN5KTWRRrURwroKy8RNBFSQpSCFTAgMmsNKkwqCFPUjtTqzmHj+FRHxRQ3DDLdMWyr9RUoc64IXOsE3x9SYDtbJWASRpYNviy0sdB03ZOjihrp/Es5wKOKvk7DlOKodr2xs4IZ4myNVZ8JtlpBYlKAK8pFJolZv4EJRZK3shlukTgvc+CuhqrtSh463p8g74r6ypPZJZG9t6qAZNr+S9FngvKjzHVHBX66HgHQXuleMBNY8rP3UxrEgldm0URUiu/OQzluTWEzowFra98tNSjmflSG7XDB2QNglIOqauJQvNFCBu/OTax5qC1K6ZXl4iP7laUUNBaEYIQFz4yToqVZB7GxK/eA90y6HaTG5POY6vCqkhNYkBmktIFIs3lvzEsU53U4FISCwyQMvvUKwE7SHtIkkDnnuOdKh/TAzQ20KqlA1ZlW8QYyHfdIIvQMvCpCR+uvikAS78o5kBBML46Yzj7ZRIu3QMmAIknZ/uSq4JuRgASeWnd+Xo6LLYn22DMm+i+gSvR72EyLQz759c+dPR8f97kCVXVMBf4HV7Yog8Yf9tsaA4kdNEyr/B695WX5n23X5OyU9HD9chWSwC9Xvgc34a2x8p+Ono4TKkiyh+cnVxWxIR/HSEIjH4SReAePPTX8hPqgDEm5/+hcADlwpA8fnpV3R75wIQb3764sNPRygn3bLmJ1cLqncMUhZ+cgVI6i5thckkRUKZnJ+mH8u5W9tCvGmO6p3nU0/IWaCbf9KhADWCADIfDNw0IFQFT+r5px/4aUsTdhrcdrh1hNxKuT7iO37qQf6UtwrUYgp+moVqfcTluCA+Fw3lJDPPTH14CnjOE+Y9VPlTTZA/XV20mOOyKwN0K3lM5Agy6Ewfl0ChZwAQpa+3idIH7fHOlU+gkHPpL2W05Lw2jUAMOG7vWSaqfzr+UI5ySx/IM5N8HdvPCyJPKS5h/SUE3dTbT6h23OU8Fk2FeinXBxhBAHG4BMOln/09s9rSFsjVVeMEqUDwFkhXN8d5E3HPLF+zQBSESd+Gn2vnHKX1fDimrmFsKBdpomSTslST03o+HE/lobUVUUd8yvaUxc7ckdvq6NjVihpCd7D2t3vgf/OVa+XAxkKeeufdvVIOR555T86xPVGbydW9zbx7kHNG3FLBoh7o52tFXURt1CBDfI/ETBYCN7Bv8TlU9hSiDT4hsNkpOG0Or1MONl8nBvwSa5VLM8rVAAmXsZXLNehLVeQBVbmehs6zxEhJgky5XPAUb8kAmdaUK9ISuvxyyaD/zK4IE5dmTRqEXdNJBRL3+poCoRfdUoPEDagaNnBVdAyQymXrTKO7WxXeBuJXsU/47gPx+9stZdVrIr8LPl8H5FMVft8SW0q0hfiHiBr5EFkZnuHbCpjuDiBzpPiYQEG/IjjsD51SETWUaxNZKTlH8O3c2gD8F6/s1poa2E59kWyBIofWwYYP9TCCgepgRwcgGuIEtwAT0fW1wJP8G5CxDi9ZychA2FQGBSgtp6jswBiwE1pXHTHJnJPdDhWDXYJ5EGRhGt2NWvBBvbJiMQMx4OcVAxX2Gf//AgwAVVBGwOPLD74AAAAASUVORK5CYII=", + title: "", + tooltip: "Tips", + items: [ + { + title: "Open Configurator", + enabled: true, + checked: false, + }, + SysTray.default.separator, + { + title: "About YASD", + enabled: true, + }, + { + title: "Quit", + enabled: true, + checked: false, + }, + ] + }, + debug: false, + copyDir: true, +}) + +systray.onClick(action => { + switch(action.seq_id){ + case 0: + eventBus.emit(EVENTS.OPEN_CONFIG) + break; + case 2: + eventBus.emit(EVENTS.ABOUT) + break; + case 3: + eventBus.emit(EVENTS.QUIT) + break; + default: + console.log("SYSTRAY HAS NOTHING TO DO WITH THIS") + } +}) \ No newline at end of file diff --git a/apps/server/package.json b/apps/server/package.json index 04845f9..0a870d1 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -13,7 +13,8 @@ "open": "^8.4.0", "dotenv": "16.0.0", "@nut-tree/nut-js": "2.0.1", - "sharp": "0.30.4" + "sharp": "0.30.4", + "systray2": "2.1.4" }, "devDependencies": { "nodemon": "^2.0.15"