From fb6348ee82f0cfd49395af80ab303228cf7135d1 Mon Sep 17 00:00:00 2001 From: KayoticCarnige <32397453+kckarnige@users.noreply.github.com> Date: Mon, 22 Aug 2022 05:24:55 -0400 Subject: [PATCH] (Attempt 2) A bunch of shit (#175) * 2 new things (Read desc.) - Cleaned up ASAR packaging, ignoring unneeded files for building - Moved install location for Windows users ("AppData\Local\Programs" -> "AppData\Local" * 3 things (Read desc.) - Updated things related to Hummus (Hummus settings don't save nor load in it's respective settings window yet, idk why) - Added check for package version (ArmCord's internal version) - Made check for Kernel mod a bit cleaner, it still uses the same jank method * 3 things - Made macOS titlebar more accurate to Discord - Added "unFocused" class when window isn't focused - Added option to uninstall Husky hook for Windows users with reminder to run format script before committing * Resolved a dumb issue My dumbass not knowing the "echo" command existed smh * Made "precommit-fix" warning more noticable * Whoops * Fixed a CSS bug Discord updates are gonna hate us, huh? --- package.json | 7 ++- src/content/css/discord.css | 6 +- src/content/css/settings.css | 10 ++- src/content/css/titlebar.css | 38 ++++++++---- src/ipc.ts | 19 +++--- src/main.ts | 5 +- src/menu.ts | 110 +++++++++++++++++---------------- src/preload/bridge.ts | 1 + src/preload/preload.ts | 3 +- src/preload/titlebar.ts | 13 +++- src/settings/hummus.html | 23 ++++--- src/settings/main.ts | 10 ++- src/settings/settings.html | 26 ++++---- src/tray.ts | 115 +++++++++++++++++------------------ src/utils.ts | 30 ++++----- src/window.ts | 62 +++++++++++-------- 16 files changed, 277 insertions(+), 201 deletions(-) diff --git a/package.json b/package.json index 9d64bfe..cea8d12 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,9 @@ "packageQuick": "npm run build && electron-builder --dir", "format": "prettier --write src/**/*", "CIbuild": "npm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip", - "postinstall": "husky install" + "postinstall": "husky install", + "precommit-fix": "husky uninstall && echo - && echo !Make sure to run 'npm run format' before commiting! | chalk --stdin yellow inverse && echo -", + "precommit-fix:format": "husky uninstall && npm run format" }, "repository": { "type": "git", @@ -31,7 +33,8 @@ "electron-builder": "^23.0.3", "husky": "^8.0.1", "prettier": "^2.7.0", - "typescript": "^4.7.3" + "typescript": "^4.7.3", + "chalk-cli": "^5.0.0" }, "dependencies": { "electron-context-menu": "github:ArmCord/electron-context-menu", diff --git a/src/content/css/discord.css b/src/content/css/discord.css index d85ed64..cf1fa99 100644 --- a/src/content/css/discord.css +++ b/src/content/css/discord.css @@ -8,6 +8,10 @@ padding: 0; padding-top: 4px; } +[customTitlebar] .backdrop-2ByYRN { + top: -30px; + padding-top: 30px; +} * { outline: none; } @@ -33,7 +37,7 @@ } .none-2-_0dP:hover::-webkit-scrollbar { - width: 0.29em !important; + width: 0.3em !important; border-radius: 25px; height: 0px !important; background: transparent !important; diff --git a/src/content/css/settings.css b/src/content/css/settings.css index 997fb06..b964039 100644 --- a/src/content/css/settings.css +++ b/src/content/css/settings.css @@ -85,6 +85,10 @@ p { z-index: 999; font-size: 10px; } +.saveBar > button { + width: 90px; +} + .header { color: var(--header-primary); font-size: 1.5em; @@ -128,6 +132,7 @@ p { color: var(--header-primary); font-size: 1.5em; font-weight: bold; + width: max-content; } /*buttons*/ button { @@ -273,9 +278,12 @@ select { .acClientMod { height: 18em !important; } +.acCordwood { + height: 8em !important; +} .acPrfmMode { height: 10em !important; } .acTray { - height: 7em !important; + height: 8em !important; } diff --git a/src/content/css/titlebar.css b/src/content/css/titlebar.css index 7aefba5..a0328ce 100644 --- a/src/content/css/titlebar.css +++ b/src/content/css/titlebar.css @@ -12,7 +12,6 @@ height: 30px; line-height: 30px; -webkit-app-region: drag; - width: 100%; user-select: none; -webkit-user-select: none; position: fixed; @@ -225,13 +224,22 @@ } /* ArmCord on MacOS (Why would you do this?) */ +[armcord-platform="darwin"] .withFrame-haYltI { + height: 0px !important; +} +[armcord-platform="darwin"] .sidebar-1tnWFu { + border-top-left-radius: 0px !important; +} +[armcord-platform="darwin"] .scroller-3X7KbA { + padding-top: 35px !important; +} [armcord-platform="darwin"] .container-2RRFHK { - padding-top: 45px; - top: -45px; + padding-top: 48px; + top: -48px; } [armcord-platform="darwin"] .titlebar { - height: 45px; - line-height: 45px; + height: 48px; + line-height: 48px; } [armcord-platform="darwin"] .titlebar #window-controls-container { float: left; @@ -239,7 +247,7 @@ height: 60%; line-height: 45px; -webkit-app-region: no-drag; - transform: translate(-78px, 4px); + transform: translate(-82px, 4px); } [armcord-platform="darwin"] .titlebar #window-controls-container:hover #minimize #minimize-icon, @@ -248,6 +256,13 @@ display: list-item; } +[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #minimize, +[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #maximize, +[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #quit { + background-color: #d6d6d5 !important; + transition: background-color 0.1s ease-in; +} + [armcord-platform="darwin"] .titlebar #window-controls-container #quit #quit-icon { background-color: #79282b; -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=") @@ -275,6 +290,7 @@ [armcord-platform="darwin"] .titlebar #window-controls-container #minimize { background-color: #fac536; + transition: background-color 0.1s ease-in; border: 1px solid #da9e10; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") no-repeat 50% 50%; @@ -284,6 +300,7 @@ } [armcord-platform="darwin"] .titlebar #window-controls-container #maximize { background-color: #39ea49; + transition: background-color 0.1s ease-in; border: 1px solid #13c11e; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") no-repeat 50% 50%; @@ -293,6 +310,7 @@ } [armcord-platform="darwin"] .titlebar #window-controls-container #quit { background-color: #f25056; + transition: background-color 0.1s ease-in; border: 1px solid #d52735; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' width='13' height='13'%3E%3Cstyle%3E.a%7Bfill:%23808080%7D%3C/style%3E%3Ccircle class='a' cx='15' cy='15' r='15'/%3E%3C/svg%3E") no-repeat 50% 50%; @@ -331,13 +349,7 @@ } [armcord-platform="darwin"] .window-title { - content: var(--wordmark-svg); - height: 10px; - left: 50%; - margin-right: 50%; - transform: translate(50%, 9.5px); - float: right; - padding: 0; + display: none; } [armcord-platform="linux"] .window-title, diff --git a/src/ipc.ts b/src/ipc.ts index ad8cc6a..131115f 100644 --- a/src/ipc.ts +++ b/src/ipc.ts @@ -1,7 +1,7 @@ //ipc stuff import {app, ipcMain, shell, desktopCapturer} from "electron"; import {mainWindow} from "./window"; -import {setConfigBulk, getVersion, getConfig, setLang, getLang, getWindowState} from "./utils"; +import {setConfigBulk, getVersion, getConfig, setLang, getLang, getWindowState, packageVersion} from "./utils"; import {customTitlebar} from "./main"; import {createSettingsWindow} from "./settings/main"; export function registerIpc() { @@ -44,21 +44,24 @@ export function registerIpc() { ipcMain.on("get-app-version", (event) => { event.returnValue = getVersion(); }); + ipcMain.on("get-package-version", (event) => { + event.returnValue = packageVersion; + }); ipcMain.on("splashEnd", async (event, arg) => { try { - var width = await getWindowState("width") ?? 800; - var height= await getWindowState("height") ?? 600; - var isMaximized = await getWindowState("isMaximized") ?? false; + var width = (await getWindowState("width")) ?? 800; + var height = (await getWindowState("height")) ?? 600; + var isMaximized = (await getWindowState("isMaximized")) ?? false; } catch (e) { - console.log("[Window state manager] No window state file found. Fallbacking to default values.") + console.log("[Window state manager] No window state file found. Fallbacking to default values."); mainWindow.setSize(800, 600); } if (isMaximized) { - mainWindow.setSize(800, 600); //just so the whole thing doesn't cover whole screen - mainWindow.maximize() + mainWindow.setSize(800, 600); //just so the whole thing doesn't cover whole screen + mainWindow.maximize(); } else { mainWindow.setSize(width, height); - console.log("[Window state manager] Not maximized.") + console.log("[Window state manager] Not maximized."); } }); ipcMain.on("restart", (event, arg) => { diff --git a/src/main.ts b/src/main.ts index 39a055a..3de5dd8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -43,7 +43,7 @@ app.whenReady().then(async () => { break; } } - await init() + await init(); session.fromPartition("some-partition").setPermissionRequestHandler((webContents, permission, callback) => { if (permission === "notifications") { // Approves the permissions request @@ -55,7 +55,6 @@ app.whenReady().then(async () => { } }); app.on("activate", async function () { - if (BrowserWindow.getAllWindows().length === 0) - await init() + if (BrowserWindow.getAllWindows().length === 0) await init(); }); }); diff --git a/src/menu.ts b/src/menu.ts index f049369..f6535bf 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -1,76 +1,84 @@ -import { Menu, app, clipboard, globalShortcut } from "electron"; +import {Menu, app, clipboard, globalShortcut} from "electron"; import {mainWindow} from "./window"; import {getConfig} from "./utils"; function paste(contents: any) { const contentTypes = clipboard.availableFormats().toString(); //Workaround: fix pasting the images. - if(contentTypes.includes('image/') && contentTypes.includes('text/html')) { + if (contentTypes.includes("image/") && contentTypes.includes("text/html")) { clipboard.writeImage(clipboard.readImage()); } contents.paste(); } export async function setMenu() { - if (await getConfig("alternativePaste") == true) { + if ((await getConfig("alternativePaste")) == true) { mainWindow.on("focus", function () { - console.log("[Window state manager] Focus") + console.log("[Window state manager] Focus"); globalShortcut.register("CmdOrCtrl+V", function () { if (mainWindow.isFocused()) { - paste(mainWindow.webContents) + paste(mainWindow.webContents); } - }) - }) + }); + }); mainWindow.on("show", function () { - console.log("[Window state manager] Show") - mainWindow.focus() + console.log("[Window state manager] Show"); + mainWindow.focus(); globalShortcut.register("CmdOrCtrl+V", function () { if (mainWindow.isFocused()) { - paste(mainWindow.webContents) + paste(mainWindow.webContents); } - }) - }) + }); + }); mainWindow.on("blur", function () { - console.log("[Window state manager] Defocus") - globalShortcut.unregister("CmdOrCtrl+V") - }) + console.log("[Window state manager] Defocus"); + globalShortcut.unregister("CmdOrCtrl+V"); + }); mainWindow.on("hide", function () { - console.log("[Window state manager] Hide") - globalShortcut.unregister("CmdOrCtrl+V") - }) + console.log("[Window state manager] Hide"); + globalShortcut.unregister("CmdOrCtrl+V"); + }); } - var template: Electron.MenuItemConstructorOptions[] = [{ - label: "ArmCord", - submenu: [ - {label: "About ArmCord", role: "about"},//orderFrontStandardAboutPanel - {type: "separator"}, - { - label: "Developer tools", accelerator: "CmdOrCtrl+Shift+I", click: function () { - mainWindow.webContents.openDevTools() + var template: Electron.MenuItemConstructorOptions[] = [ + { + label: "ArmCord", + submenu: [ + {label: "About ArmCord", role: "about"}, //orderFrontStandardAboutPanel + {type: "separator"}, + { + label: "Developer tools", + accelerator: "CmdOrCtrl+Shift+I", + click: function () { + mainWindow.webContents.openDevTools(); + } + }, + { + label: "Quit", + accelerator: "CmdOrCtrl+Q", + click: function () { + app.quit(); + } } - }, - { - label: "Quit", accelerator: "CmdOrCtrl+Q", click: function () { - app.quit(); - } - } - ] - }, { - label: "Edit", - submenu: [ - {label: "Undo", accelerator: "CmdOrCtrl+Z", role: "undo"}, - {label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", role: "redo"}, - {type: "separator"}, - {label: "Cut", accelerator: "CmdOrCtrl+X", role: "cut"}, - {label: "Copy", accelerator: "CmdOrCtrl+C", role: "copy"}, - { - label: "Paste", accelerator: "CmdOrCtrl+V", click: function () { - paste(mainWindow.webContents) - } - }, - {label: "Select All", accelerator: "CmdOrCtrl+A", role: "selectAll"} - ] - } - ] + ] + }, + { + label: "Edit", + submenu: [ + {label: "Undo", accelerator: "CmdOrCtrl+Z", role: "undo"}, + {label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", role: "redo"}, + {type: "separator"}, + {label: "Cut", accelerator: "CmdOrCtrl+X", role: "cut"}, + {label: "Copy", accelerator: "CmdOrCtrl+C", role: "copy"}, + { + label: "Paste", + accelerator: "CmdOrCtrl+V", + click: function () { + paste(mainWindow.webContents); + } + }, + {label: "Select All", accelerator: "CmdOrCtrl+A", role: "selectAll"} + ] + } + ]; Menu.setApplicationMenu(Menu.buildFromTemplate(template)); -} \ No newline at end of file +} diff --git a/src/preload/bridge.ts b/src/preload/bridge.ts index a4ea57d..d421d5b 100644 --- a/src/preload/bridge.ts +++ b/src/preload/bridge.ts @@ -21,6 +21,7 @@ contextBridge.exposeInMainWorld("armcord", { return result; }), version: ipcRenderer.sendSync("get-app-version", "app-version"), + packageVersion: ipcRenderer.sendSync("get-package-version", "app-version"), getDisplayMediaSelector: getDisplayMediaSelector, openSettingsWindow: () => ipcRenderer.send("openSettingsWindow") }); diff --git a/src/preload/preload.ts b/src/preload/preload.ts index 52cf93e..f98d82e 100644 --- a/src/preload/preload.ts +++ b/src/preload/preload.ts @@ -8,6 +8,7 @@ import {sleep, addStyle, injectJS, addScript} from "../utils"; import {ipcRenderer} from "electron"; import {injectMobileStuff} from "./mobile"; var version = ipcRenderer.sendSync("get-app-version", "app-version"); +var channel = ipcRenderer.sendSync("channel"); async function updateLang() { if (window.location.href.indexOf("setup.html") > -1) { console.log("Setup, skipping lang update"); @@ -37,7 +38,7 @@ if (window.location.href.indexOf("splash.html") > -1) { console.log("Skipping titlebar injection and client mod injection."); } else { if (ipcRenderer.sendSync("titlebar")) { - if (ipcRenderer.sendSync("channel")) { + if (channel == "hummus") { injectHummusTitlebar(); } else { injectTitlebar(); diff --git a/src/preload/titlebar.ts b/src/preload/titlebar.ts index bd54ef6..78dbfce 100644 --- a/src/preload/titlebar.ts +++ b/src/preload/titlebar.ts @@ -64,9 +64,18 @@ export function injectHummusTitlebar() { elem.classList.add("win-buttons-light"); document.getElementsByClassName("titlebar")[0].appendChild(elem); document.body.setAttribute("customTitlebar", ""); + document.body.setAttribute("hummus", ""); document.body.setAttribute("armcord-platform", os.platform()); - addStyle(".chat>.title-wrap {width: 87% !important;}"); - addStyle(".friends-header {width: 91% !important;}"); + addStyle(` + html, body { + background-color: #1e2124; + } + + .friends-header, + .chat > .title-wrap { + float: right !important; + padding-right: 140px !important; + }`); var minimize = document.getElementById("minimize"); var maximize = document.getElementById("maximize"); var quit = document.getElementById("quit"); diff --git a/src/settings/hummus.html b/src/settings/hummus.html index 786dc22..15b5abc 100644 --- a/src/settings/hummus.html +++ b/src/settings/hummus.html @@ -5,6 +5,9 @@ ArmCord Settings @@ -79,7 +82,7 @@
-
+
@@ -116,14 +119,16 @@


-

⚠️Advanced user zone⚠️

- -
- -
- -
- +
+

⚠️ Advanced User Zone ⚠️

+ +
+ +
+ +
+ +