mirror of
https://github.com/smartfrigde/armcord.git
synced 2024-08-14 23:56:58 +00:00
Compare commits
No commits in common. "7e9e43fa6ac749d965132c64c34062a94651f8b4" and "0392f176c5bfcb2e96e409bdb939aefa00963461" have entirely different histories.
7e9e43fa6a
...
0392f176c5
34 changed files with 165 additions and 280 deletions
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
Binary file not shown.
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 3.8 KiB |
|
@ -53,6 +53,5 @@
|
|||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-none": "None",
|
||||
"settings-save": "Save Settings",
|
||||
"settings-restart": "Restart App",
|
||||
"settings-updater": "Check for updates"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-trayIcon": "Tray icon",
|
||||
"settings-trayIcon-desc": "Set the icon which will appear in tray menu.",
|
||||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-pluginsFolder": "Open plugins folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-storageFolder": "Open storage folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-trayIcon-desc": "Set the icon which will appear in tray menu.",
|
||||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-themesFolder": "Open themes folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-trayIcon": "Tray icon",
|
||||
"settings-trayIcon-desc": "Set the icon which will appear in tray menu.",
|
||||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-pluginsFolder": "Open plugins folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-storageFolder": "Open storage folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-none": "None",
|
||||
"settings-save": "Save Settings",
|
||||
"settings-updater": "Check for updates",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-updater": "Check for updates"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-advanced": "Sone for avanserte brukere",
|
||||
"settings-pluginsFolder": "Åpne programtilleggsmappen",
|
||||
"settings-themesFolder": "Åpne draktmappen",
|
||||
"settings-storageFolder": "Åpne lagringsmappen",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-storageFolder": "Åpne lagringsmappen"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-storageFolder": "Open storage folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-storageFolder": "Open storage folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-advanced": "Área para usuários avançados",
|
||||
"settings-pluginsFolder": "Abrir pasta de plugins",
|
||||
"settings-themesFolder": "Abrir pasta de temas",
|
||||
"settings-storageFolder": "Abrir pasta de armazenamento",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-storageFolder": "Abrir pasta de armazenamento"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-mod-desc4": "heavily work in progress, doesn't have a working UI.",
|
||||
"settings-trayIcon": "Tray icon",
|
||||
"settings-trayIcon-desc": "Set the icon which will appear in tray menu.",
|
||||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-advanced": "️Advanced user zone"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-none": "None",
|
||||
"settings-save": "Save Settings",
|
||||
"settings-updater": "Check for updates",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-updater": "Check for updates"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-advanced": "️Advanced user zone",
|
||||
"settings-pluginsFolder": "Open plugins folder",
|
||||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-storageFolder": "Open storage folder"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-none": "None",
|
||||
"settings-save": "Save Settings",
|
||||
"settings-updater": "Check for updates",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-updater": "Check for updates"
|
||||
}
|
||||
|
|
|
@ -52,6 +52,5 @@
|
|||
"settings-themesFolder": "Open themes folder",
|
||||
"settings-storageFolder": "Open storage folder",
|
||||
"settings-none": "None",
|
||||
"settings-save": "保存设置",
|
||||
"settings-restart": "Restart App"
|
||||
"settings-save": "保存设置"
|
||||
}
|
||||
|
|
|
@ -74,56 +74,52 @@ p {
|
|||
vertical-align: middle;
|
||||
border-radius: 10px;
|
||||
background: var(--background-floating);
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
border: 20px;
|
||||
border-color: var(--background-floating);
|
||||
border-style: solid;
|
||||
}
|
||||
.saveBar {
|
||||
position: fixed;
|
||||
bottom: 20px;
|
||||
float: left;
|
||||
left: 0;
|
||||
font-weight: bold;
|
||||
z-index: 999;
|
||||
font-size: 10px;
|
||||
}
|
||||
.restartBar {
|
||||
position: fixed;
|
||||
bottom: 20px;
|
||||
float: right;
|
||||
right: 0;
|
||||
font-weight: bold;
|
||||
z-index: 999;
|
||||
font-size: 10px;
|
||||
}
|
||||
.saveBar > button {
|
||||
width: 90px;
|
||||
transform: translateX(56%);
|
||||
}
|
||||
.restartBar > button {
|
||||
width: 90px;
|
||||
transform: translateX(50%);
|
||||
}
|
||||
|
||||
.header {
|
||||
color: var(--header-primary);
|
||||
font-size: 1.5em;
|
||||
position: relative;
|
||||
bottom: 20px;
|
||||
font-weight: bold;
|
||||
top: 15px;
|
||||
margin: auto;
|
||||
}
|
||||
.header2 {
|
||||
color: var(--header-primary);
|
||||
font-size: 1.5em;
|
||||
position: relative;
|
||||
bottom: 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.description2 {
|
||||
position: relative;
|
||||
color: white;
|
||||
font-size: 1.2em;
|
||||
font-weight: lighter;
|
||||
bottom: 15px;
|
||||
}
|
||||
.description {
|
||||
position: relative;
|
||||
color: white;
|
||||
font-size: 1.2em;
|
||||
font-weight: lighter;
|
||||
bottom: 40px;
|
||||
}
|
||||
.dropdown {
|
||||
position: relative;
|
||||
font-size: 25px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.center {
|
||||
text-align: center;
|
||||
|
@ -163,9 +159,6 @@ button:active {
|
|||
#save {
|
||||
font-size: 15px;
|
||||
}
|
||||
.acAdvSettings {
|
||||
height: 400px !important;
|
||||
}
|
||||
.tgl {
|
||||
display: none;
|
||||
}
|
||||
|
@ -177,7 +170,6 @@ button:active {
|
|||
.tgl *:before,
|
||||
.tgl + .tgl-btn {
|
||||
box-sizing: border-box;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.tgl::-moz-selection,
|
||||
.tgl:after::-moz-selection,
|
||||
|
@ -246,17 +238,6 @@ button:active {
|
|||
.tgl-light:checked + .tgl-btn {
|
||||
background: var(--brand-experiment);
|
||||
}
|
||||
|
||||
select optgroup {
|
||||
color: #fff6;
|
||||
font-weight: 200;
|
||||
font-style: italic;
|
||||
}
|
||||
select option {
|
||||
color: #fff;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
select {
|
||||
-webkit-appearance: button;
|
||||
-moz-appearance: button;
|
||||
|
|
|
@ -90,18 +90,7 @@ body {
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
/* Titlebar {{{ */
|
||||
div {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
display: block;
|
||||
font-weight: inherit;
|
||||
font-style: inherit;
|
||||
font-family: inherit;
|
||||
font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
/* Logo {{{ */
|
||||
#logo {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
@ -111,25 +100,20 @@ div {
|
|||
width: 292px;
|
||||
}
|
||||
|
||||
|
||||
[armcord-platform="win32"] .titlebar #window-controls-container #maximize,
|
||||
[armcord-platform="linux"] .titlebar #window-controls-container #maximize {
|
||||
.titlebar #window-controls-container #maximize {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[armcord-platform="win32"] .titlebar #window-controls-container #spacer,
|
||||
[armcord-platform="linux"] .titlebar #window-controls-container #spacer {
|
||||
.titlebar #window-controls-container #spacer {
|
||||
float: left;
|
||||
height: 100%;
|
||||
width: 33%;
|
||||
}
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container #quit {
|
||||
width: 18% !important;
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container {
|
||||
margin-left: -26px;
|
||||
}
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container #maximize,
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container #maximize #maximize-icon {
|
||||
background-color: #d6d6d5 !important;
|
||||
pointer-events: none;
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container #minimize {
|
||||
transform: translateX(5px);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
|
|
@ -260,11 +260,10 @@
|
|||
[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #maximize,
|
||||
[armcord-platform="darwin"][unFocused] .titlebar #window-controls-container #quit {
|
||||
background-color: #d6d6d5 !important;
|
||||
pointer-events: none;
|
||||
transition: background-color 0.1s ease-in;
|
||||
}
|
||||
|
||||
[armcord-platform="darwin"]:not([unFocused]) .titlebar #window-controls-container #quit #quit-icon {
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container #quit #quit-icon {
|
||||
background-color: #79282b;
|
||||
-webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTI4OSA2TDIuODE4MDEgMy41MjUxM0wzLjUyNTEyIDIuODE4MDJMNS45OTk5OSA1LjI5Mjg5TDguNDc0ODcgMi44MTgwMkw5LjE4MTk3IDMuNTI1MTNMNi43MDcxIDZMOS4xODE5NyA4LjQ3NDg3TDguNDc0ODcgOS4xODE5OEw1Ljk5OTk5IDYuNzA3MTFMMy41MjUxMiA5LjE4MTk4TDIuODE4MDEgOC40NzQ4N0w1LjI5Mjg5IDZaIiBmaWxsPSJyZ2JhKDEyOCwgNiwgMCwgMSkiLz48L3N2Zz4=")
|
||||
no-repeat 50% 50%;
|
||||
|
@ -272,7 +271,7 @@
|
|||
no-repeat 50% 50%;
|
||||
transform: translate(-0.3px, -11.7px);
|
||||
}
|
||||
[armcord-platform="darwin"]:not([unFocused]) .titlebar #window-controls-container #minimize #minimize-icon {
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container #minimize #minimize-icon {
|
||||
background-color: #7d631b;
|
||||
-webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNS4zOTk5OUgyVjYuNTk5OTlIMTBWNS4zOTk5OVoiIGZpbGw9IiM5ODY4MDEiLz48L3N2Zz4=")
|
||||
no-repeat 50% 50%;
|
||||
|
@ -280,7 +279,7 @@
|
|||
no-repeat 50% 50%;
|
||||
transform: translate(-0px, -11.7px);
|
||||
}
|
||||
[armcord-platform="darwin"]:not([unFocused]) .titlebar #window-controls-container #maximize #maximize-icon {
|
||||
[armcord-platform="darwin"] .titlebar #window-controls-container #maximize #maximize-icon {
|
||||
background-color: #1d7525;
|
||||
-webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41ODgyMyA2Ljk5MDE1TDUuMDA5NzkgMy40MTE3QzQuODU1ODMgMy4yNTc3NCA0Ljk1ODYgMi45OTQyMiA1LjE3NjE0IDIuOTg1MTRMOC45MTA0MiAyLjgyOTMxQzkuMDU2NTggMi44MjMyMSA5LjE3NjczIDIuOTQzMzUgOS4xNzA2MyAzLjA4OTUyTDkuMDE0NzkgNi44MjM4QzkuMDA1NzEgNy4wNDEzNCA4Ljc0MjE5IDcuMTQ0MTEgOC41ODgyMyA2Ljk5MDE1WiIgZmlsbD0iIzEyNUUxRSIvPjxwYXRoIGQ9Ik0zLjQxMTc3IDUuMDA5ODJMNi45OTAyMSA4LjU4ODI3QzcuMTQ0MTcgOC43NDIyMyA3LjA0MTQgOS4wMDU3NSA2LjgyMzg2IDkuMDE0ODNMMy4wODk1OCA5LjE3MDY2QzIuOTQzNDIgOS4xNzY3NiAyLjgyMzI3IDkuMDU2NjEgMi44MjkzNyA4LjkxMDQ1TDIuOTg1MjEgNS4xNzYxN0MyLjk5NDI5IDQuOTU4NjMgMy4yNTc4MSA0Ljg1NTg2IDMuNDExNzcgNS4wMDk4MloiIGZpbGw9IiMxMjVFMUUiLz48L3N2Zz4=")
|
||||
no-repeat 50% 50%;
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 24 KiB |
|
@ -2,7 +2,6 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/ico" href="./favicon.ico">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>ArmCord Setup</title>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/ico" href="./favicon.ico">
|
||||
<title>ArmCord</title>
|
||||
<style>
|
||||
@import url("css/splash.css");
|
||||
|
|
11
src/ipc.ts
11
src/ipc.ts
|
@ -8,8 +8,7 @@ import {
|
|||
setLang,
|
||||
getLang,
|
||||
getWindowState,
|
||||
packageVersion,
|
||||
getDisplayVersion
|
||||
packageVersion, getDisplayVersion
|
||||
} from "./utils";
|
||||
import {customTitlebar} from "./main";
|
||||
import {createSettingsWindow} from "./settings/main";
|
||||
|
@ -31,14 +30,14 @@ export function registerIpc() {
|
|||
ipcMain.on("setPing", (event, pingCount: number) => {
|
||||
switch (os.platform()) {
|
||||
case "linux" ?? "macos":
|
||||
app.setBadgeCount(pingCount);
|
||||
app.setBadgeCount(pingCount)
|
||||
break;
|
||||
case "win32":
|
||||
if (pingCount > 0) {
|
||||
var image = nativeImage.createFromPath(path.join(__dirname, "../", `/assets/ping.png`));
|
||||
mainWindow.setOverlayIcon(image, "badgeCount");
|
||||
var image = nativeImage.createFromPath(path.join(__dirname, "../", `/assets/ping.png`))
|
||||
mainWindow.setOverlayIcon(image, "badgeCount")
|
||||
} else {
|
||||
mainWindow.setOverlayIcon(null, "badgeCount");
|
||||
mainWindow.setOverlayIcon(null, "badgeCount")
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -26,10 +26,10 @@ if (process.platform == "linux") {
|
|||
checkIfConfigExists();
|
||||
injectElectronFlags();
|
||||
app.whenReady().then(async () => {
|
||||
if ((await getConfig("customIcon")) !== undefined ?? null) {
|
||||
iconPath = await getConfig("customIcon");
|
||||
if (await getConfig("customIcon") !== undefined ?? null) {
|
||||
iconPath = await getConfig("customIcon")
|
||||
} else {
|
||||
iconPath = path.join(__dirname, "../", "/assets/ac_icon_transparent.png");
|
||||
iconPath = path.join(__dirname, "../", "/assets/ac_icon_transparent.png")
|
||||
}
|
||||
async function init() {
|
||||
switch (await getConfig("windowStyle")) {
|
||||
|
|
|
@ -63,7 +63,7 @@ export async function setMenu() {
|
|||
label: "Reload",
|
||||
accelerator: "CmdOrCtrl+R",
|
||||
click: function () {
|
||||
mainWindow.reload();
|
||||
mainWindow.reload()
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -97,7 +97,7 @@ export async function setMenu() {
|
|||
label: "Zoom",
|
||||
submenu: [
|
||||
{label: "Zoom in", accelerator: "CmdOrCtrl+Plus", role: "zoomIn"},
|
||||
{label: "Zoom out", accelerator: "CmdOrCtrl+-", role: "zoomOut"}
|
||||
{label: "Zoom out", accelerator: "CmdOrCtrl+-", role: "zoomOut"},
|
||||
]
|
||||
}
|
||||
];
|
||||
|
|
|
@ -2,8 +2,12 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>ArmCord Settings</title>
|
||||
<style>
|
||||
@import url("../content/css/settings.css");
|
||||
.acAdvSettings {
|
||||
height: 19em !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
@ -11,9 +15,6 @@
|
|||
<div class="saveBar">
|
||||
<button id="settings-save" class="center">Save Settings</button>
|
||||
</div>
|
||||
<div class="restartBar">
|
||||
<button id="settings-restart" class="center">Restart App</button>
|
||||
</div>
|
||||
<div class="switch acTheme">
|
||||
<select name="theme" id="theme" class="left dropdown">
|
||||
<option value="default">Default</option>
|
||||
|
@ -32,40 +33,40 @@
|
|||
</div>
|
||||
<br />
|
||||
<div class="switch acCSP">
|
||||
<label class="header">ArmCord CSP</label>
|
||||
<label class="header2">ArmCord CSP</label>
|
||||
<input class="tgl tgl-light left" id="csp" type="checkbox" />
|
||||
<label class="tgl-btn left" for="csp"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like
|
||||
client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="switch acTray">
|
||||
<label class="header" id="settings-tray">Minimize to tray</label>
|
||||
<label class="header2" id="settings-tray">Minimize to tray</label>
|
||||
<input class="tgl tgl-light left" id="tray" type="checkbox" />
|
||||
<label class="tgl-btn left" for="tray"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax
|
||||
in your system tray for later.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="switch acPatches">
|
||||
<label class="header" id="settings-patches">Automatic Patches</label>
|
||||
<label class="header2" id="settings-patches">Automatic Patches</label>
|
||||
<input class="tgl tgl-light left" id="patches" type="checkbox" />
|
||||
<label class="tgl-btn left" for="patches"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually
|
||||
you don't have to keep this enabled, unless notified in support Discord.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="switch acAltPaste">
|
||||
<label class="header" id="settings-alternativePaste">Alternative paste</label>
|
||||
<label class="header2" id="settings-alternativePaste">Alternative paste</label>
|
||||
<input class="tgl tgl-light left" id="alternativePaste" type="checkbox" />
|
||||
<label class="tgl-btn left" for="alternativePaste"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is
|
||||
for you. This enables alternative module for pasting images. Only enable this when you're experiencing
|
||||
issues.
|
||||
|
@ -99,10 +100,10 @@
|
|||
</div>
|
||||
<br />
|
||||
<div class="switch acCordwood">
|
||||
<label class="header" id="settings-cordwood">Cordwood client mod</label>
|
||||
<label class="header2" id="settings-cordwood">Cordwood client mod</label>
|
||||
<input class="tgl tgl-light left" id="cordwood" type="checkbox" />
|
||||
<label class="tgl-btn left" for="cordwood"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
Client mod for Hummus that focuses on making the plugin development experience easier. Minimal, light,
|
||||
and easy to use
|
||||
</p>
|
||||
|
@ -123,18 +124,13 @@
|
|||
<br />
|
||||
<div class="switch acTray">
|
||||
<select name="trayIcon" id="trayIcon" class="left dropdown">
|
||||
<optgroup label="- Discord -">
|
||||
<option value="default">Dynamic</option>
|
||||
<option value="default">Default (Dynamic)</option>
|
||||
<option value="ac_plug_colored">Plug colored</option>
|
||||
<option value="dsc-tray">Discord Icon</option>
|
||||
<option value="clsc-dsc-tray">Classic Discord Icon</option>
|
||||
</optgroup>
|
||||
<optgroup label="- ArmCord -">
|
||||
<option value="ac_plug_colored">Colored Plug</option>
|
||||
<option value="ac_white_plug">White Plug</option>
|
||||
<option value="ac_white_plug_hollow">White Plug Alt</option>
|
||||
<option value="ac_black_plug">Black Plug</option>
|
||||
<option value="ac_black_plug_hollow">Black Plug Alt</option>
|
||||
</optgroup>
|
||||
<option value="ac_white_plug">White Icon</option>
|
||||
<option value="ac_black_plug">Black Icon</option>
|
||||
<option value="ac_white_plug_hollow">White Hollowed Icon</option>
|
||||
<option value="ac_black_plug_hollow">Black Hollowed Icon</option>
|
||||
</select>
|
||||
<p class="header" id="settings-trayIcon">Tray icon:</p>
|
||||
<p class="description">Set the icon which will appear in tray menu.</p>
|
||||
|
@ -143,13 +139,6 @@
|
|||
<br />
|
||||
<div class="switch acAdvSettings">
|
||||
<h1 class="center advancedText">⚠️ Advanced User Zone ⚠️</h1>
|
||||
<br>
|
||||
<br>
|
||||
<label class="header" id="settings-skipSplash">Skip Splash Screen (Experimental)</label>
|
||||
<input class="tgl tgl-light left" id="skipSplash" type="checkbox" />
|
||||
<label class="tgl-btn left" for="skipSplash"></label>
|
||||
<p class="description">Skips ArmCord splash screen when you start up the app.</p>
|
||||
<br />
|
||||
<button id="settings-pluginsFolder" class="center">Open Plugins Folder</button>
|
||||
<br />
|
||||
<button id="settings-themesFolder" class="center">Open Themes Folder</button>
|
||||
|
@ -193,27 +182,27 @@
|
|||
document.getElementById("trayIcon").value = await settings.get("trayIcon");
|
||||
}
|
||||
loadSettings();
|
||||
document.getElementById("settings-save").addEventListener("click", function () {
|
||||
document.getElementById("settings-save").addEventListener("click", async function () {
|
||||
var cordwood;
|
||||
if (document.getElementById("cordwood").checked) {
|
||||
cordwood = true;
|
||||
} else {
|
||||
cordwood = false;
|
||||
}
|
||||
settings.save({
|
||||
windowStyle: document.getElementById("theme").value,
|
||||
channel: document.getElementById("channel").value,
|
||||
armcordCSP: document.getElementById("csp").checked,
|
||||
minimizeToTray: document.getElementById("tray").checked,
|
||||
alternativePaste: document.getElementById("alternativePaste").checked,
|
||||
skipSplash: document.getElementById("skipSplash").checked,
|
||||
automaticPatches: document.getElementById("patches").checked,
|
||||
mods: cordwood,
|
||||
mobileMode: document.getElementById("mobile").checked,
|
||||
inviteWebsocket: document.getElementById("websocket").checked,
|
||||
mobileMode: await settings.get("mobileMode"),
|
||||
inviteWebsocket: await settings.get("inviteWebsocket"),
|
||||
performanceMode: document.getElementById("prfmMode").value,
|
||||
trayIcon: document.getElementById("trayIcon").value,
|
||||
doneSetup: true
|
||||
});
|
||||
alert(`Your settings have been saved!
|
||||
Some changes may require the app to restart before taking effect.`)
|
||||
});
|
||||
document.getElementById("settings-restart").addEventListener("click", function () {
|
||||
settings.restart();
|
||||
});
|
||||
document.getElementById("settings-pluginsFolder").addEventListener("click", async function () {
|
||||
settings.openPluginsFolder();
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
import {BrowserWindow, shell, ipcMain, app, clipboard} from "electron";
|
||||
import {
|
||||
getConfig,
|
||||
setConfigBulk,
|
||||
Settings,
|
||||
getLang,
|
||||
getVersion,
|
||||
getConfigLocation,
|
||||
getLangName,
|
||||
sleep,
|
||||
getDisplayVersion
|
||||
} from "../utils";
|
||||
import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation, getLangName, sleep} from "../utils";
|
||||
import path from "path";
|
||||
import os from "os";
|
||||
import fs from "fs";
|
||||
|
@ -32,7 +22,7 @@ export function createSettingsWindow() {
|
|||
settingsWindow = new BrowserWindow({
|
||||
width: 660,
|
||||
height: 670,
|
||||
title: `ArmCord Settings | Version: ${getDisplayVersion()}`,
|
||||
title: "ArmCord Settings",
|
||||
darkTheme: true,
|
||||
frame: true,
|
||||
autoHideMenuBar: true,
|
||||
|
|
|
@ -6,8 +6,6 @@ console.log("ArmCord Settings");
|
|||
|
||||
contextBridge.exposeInMainWorld("settings", {
|
||||
save: (...args: any) => ipcRenderer.send("saveSettings", ...args),
|
||||
restart: () => ipcRenderer.send("restart"),
|
||||
saveAlert: (restartFunc: any) => ipcRenderer.send("saveAlert", restartFunc),
|
||||
getLang: (toGet: string) =>
|
||||
ipcRenderer.invoke("getLang", toGet).then((result) => {
|
||||
return result;
|
||||
|
@ -21,6 +19,13 @@ contextBridge.exposeInMainWorld("settings", {
|
|||
openStorageFolder: () => ipcRenderer.send("openStorageFolder"),
|
||||
copyDebugInfo: () => ipcRenderer.send("copyDebugInfo")
|
||||
});
|
||||
if (ipcRenderer.sendSync("getLangName") == "en-US") {
|
||||
console.log("[Settings]: Lang " + ipcRenderer.sendSync("getLangName"));
|
||||
const cssPath = path.join(__dirname, "../", "/content/css/settingsEng.css");
|
||||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
addStyle(fs.readFileSync(cssPath, "utf8"));
|
||||
});
|
||||
}
|
||||
ipcRenderer.on("themeLoader", (event, message) => {
|
||||
addStyle(message);
|
||||
});
|
||||
|
|
|
@ -2,8 +2,12 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>ArmCord Settings</title>
|
||||
<style>
|
||||
@import url("../content/css/settings.css");
|
||||
.acAdvSettings {
|
||||
height: 26em !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
@ -11,9 +15,6 @@
|
|||
<div class="saveBar">
|
||||
<button id="settings-save" class="center">Save Settings</button>
|
||||
</div>
|
||||
<div class="restartBar">
|
||||
<button id="settings-restart" class="center">Restart App</button>
|
||||
</div>
|
||||
<div class="switch acTheme">
|
||||
<select name="theme" id="theme" class="left dropdown">
|
||||
<option value="default">Default</option>
|
||||
|
@ -32,50 +33,50 @@
|
|||
</div>
|
||||
<br />
|
||||
<div class="switch acCSP">
|
||||
<label class="header">ArmCord CSP</label>
|
||||
<label class="header2">ArmCord CSP</label>
|
||||
<input class="tgl tgl-light left" id="csp" type="checkbox" />
|
||||
<label class="tgl-btn left" for="csp"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
ArmCord CSP is our system that manages loading custom content loading into the Discord app. Stuff like
|
||||
client mods and themes depend on it. Disable if you want to get rid of mods and custom styles.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="switch acTray">
|
||||
<label class="header" id="settings-tray">Minimize to tray</label>
|
||||
<label class="header2" id="settings-tray">Minimize to tray</label>
|
||||
<input class="tgl tgl-light left" id="tray" type="checkbox" />
|
||||
<label class="tgl-btn left" for="tray"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
When disabled, ArmCord will close like any other window when closed, otherwise it'll sit back and relax
|
||||
in your system tray for later.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="switch acPatches">
|
||||
<label class="header" id="settings-patches">Automatic Patches</label>
|
||||
<label class="header2" id="settings-patches">Automatic Patches</label>
|
||||
<input class="tgl tgl-light left" id="patches" type="checkbox" />
|
||||
<label class="tgl-btn left" for="patches"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
Fetches automatic patches that are distributed if release turns out to have bugs after release. Usually
|
||||
you don't have to keep this enabled, unless notified in support Discord.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="switch acWebsocket">
|
||||
<label class="header" id="settings-invitewebsocket">Invite Websocket</label>
|
||||
<label class="header2" id="settings-invitewebsocket">Invite Websocket</label>
|
||||
<input class="tgl tgl-light left" id="websocket" type="checkbox" />
|
||||
<label class="tgl-btn left" for="websocket"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
When enabled ArmCord will support Discord.gg links which means that if you open an invite link in your
|
||||
browser, ArmCord will automatically accept the invite. Can be unresponsive at times.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="switch acMobileMode">
|
||||
<label class="header" id="settings-mobileMode">Mobile mode</label>
|
||||
<label class="header2" id="settings-mobileMode">Mobile mode</label>
|
||||
<input class="tgl tgl-light left" id="mobile" type="checkbox" />
|
||||
<label class="tgl-btn left" for="mobile"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
If you're on a device with touch-screen this feature is for you! It activates Discord's hidden mobile
|
||||
mode meant for phones and tablets. Only major feature missing is voice chat support. This is ideal for
|
||||
users on PinePhone and similar.
|
||||
|
@ -83,10 +84,10 @@
|
|||
</div>
|
||||
<br />
|
||||
<div class="switch acAltPaste">
|
||||
<label class="header" id="settings-alternativePaste">Alternative paste</label>
|
||||
<label class="header2" id="settings-alternativePaste">Alternative paste</label>
|
||||
<input class="tgl tgl-light left" id="alternativePaste" type="checkbox" />
|
||||
<label class="tgl-btn left" for="alternativePaste"></label>
|
||||
<p class="description">
|
||||
<p class="description2">
|
||||
If you're on Gnome on Linux or just simply can't paste images copied from other messages, then this is
|
||||
for you. This enables alternative module for pasting images. Only enable this when you're experiencing
|
||||
issues.
|
||||
|
@ -98,7 +99,7 @@
|
|||
<option value="stable">Stable</option>
|
||||
<option value="canary">Canary</option>
|
||||
<option value="ptb">PTB</option>
|
||||
<option value="hummus">Hummus (Experimental)</option>
|
||||
<option value="hummus">Hummus (unofficial, experimental)</option>
|
||||
</select>
|
||||
<div>
|
||||
<p class="header" id="settings-channel">Discord channel</p>
|
||||
|
@ -158,18 +159,13 @@
|
|||
<br />
|
||||
<div class="switch acTray">
|
||||
<select name="trayIcon" id="trayIcon" class="left dropdown">
|
||||
<optgroup label="- Discord -">
|
||||
<option value="default">Dynamic</option>
|
||||
<option value="default">Default (dynamic)</option>
|
||||
<option value="ac_plug_colored">Plug colored</option>
|
||||
<option value="dsc-tray">Discord Icon</option>
|
||||
<option value="clsc-dsc-tray">Classic Discord Icon</option>
|
||||
</optgroup>
|
||||
<optgroup label="- ArmCord -">
|
||||
<option value="ac_plug_colored">Colored Plug</option>
|
||||
<option value="ac_white_plug">White Plug</option>
|
||||
<option value="ac_white_plug_hollow">White Plug Alt</option>
|
||||
<option value="ac_black_plug">Black Plug</option>
|
||||
<option value="ac_black_plug_hollow">Black Plug Alt</option>
|
||||
</optgroup>
|
||||
<option value="ac_white_plug">White Icon</option>
|
||||
<option value="ac_black_plug">Black Icon</option>
|
||||
<option value="ac_white_plug_hollow">White Hollowed Icon</option>
|
||||
<option value="ac_black_plug_hollow">Black Hollowed Icon</option>
|
||||
</select>
|
||||
<p class="header" id="settings-trayIcon">Tray icon</p>
|
||||
<p class="description">Set the icon which will appear in tray menu.</p>
|
||||
|
@ -178,12 +174,11 @@
|
|||
<br />
|
||||
<div class="switch acAdvSettings">
|
||||
<h1 class="center advancedText">⚠️ Advanced User Zone ⚠️</h1>
|
||||
<br>
|
||||
<br>
|
||||
<label class="header" id="settings-skipSplash">Skip Splash Screen (Experimental)</label>
|
||||
<br />
|
||||
<label class="header2" id="settings-skipSplash">Skip Splash Screen (Experimental)</label>
|
||||
<input class="tgl tgl-light left" id="skipSplash" type="checkbox" />
|
||||
<label class="tgl-btn left" for="skipSplash"></label>
|
||||
<p class="description">Skips ArmCord splash screen when you start up the app.</p>
|
||||
<p class="description2">Skips ArmCord splash screen when you start up the app.</p>
|
||||
<br />
|
||||
<button id="settings-pluginsFolder" class="center">Open Plugins Folder</button>
|
||||
<br />
|
||||
|
@ -196,7 +191,6 @@
|
|||
</body>
|
||||
<script>
|
||||
async function loadLang() {
|
||||
document.getElementById("settings-restart").innerHTML = await settings.getLang("settings-restart");
|
||||
document.getElementById("settings-save").innerHTML = await settings.getLang("settings-save");
|
||||
document.getElementById("settings-mod").innerHTML = await settings.getLang("settings-mod");
|
||||
document.getElementById("settings-channel").innerHTML = await settings.getLang("settings-channel");
|
||||
|
@ -251,15 +245,6 @@
|
|||
trayIcon: document.getElementById("trayIcon").value,
|
||||
doneSetup: true
|
||||
});
|
||||
if (
|
||||
confirm(`Your settings have been saved!
|
||||
Some changes may require the app to restart before taking effect, would you like to do so now?`) == true
|
||||
) {
|
||||
settings.restart();
|
||||
}
|
||||
});
|
||||
document.getElementById("settings-restart").addEventListener("click", function () {
|
||||
settings.restart();
|
||||
});
|
||||
document.getElementById("settings-pluginsFolder").addEventListener("click", function () {
|
||||
settings.openPluginsFolder();
|
||||
|
|
59
src/tray.ts
59
src/tray.ts
|
@ -1,28 +1,18 @@
|
|||
import * as fs from "fs";
|
||||
import {app, Menu, Tray, nativeImage} from "electron";
|
||||
import {mainWindow} from "./window";
|
||||
import {getConfig, getConfigLocation, setWindowState, getDisplayVersion} from "./utils";
|
||||
import {getConfig, getConfigLocation, setWindowState} from "./utils";
|
||||
import * as path from "path";
|
||||
import {createSettingsWindow} from "./settings/main";
|
||||
export let tray: any = null;
|
||||
app.whenReady().then(async () => {
|
||||
let finishedSetup = await getConfig("doneSetup");
|
||||
var trayIcon = (await getConfig("trayIcon")) ?? "ac_plug_colored";
|
||||
let trayPath = nativeImage.createFromPath(path.join(__dirname, "../", `/assets/${trayIcon}.png`));
|
||||
let trayVerIcon;
|
||||
trayVerIcon = function () {
|
||||
if (process.platform == "win32") {
|
||||
return trayPath.resize({height: 16});
|
||||
} else if (process.platform == "darwin") {
|
||||
return trayPath.resize({height: 18});
|
||||
} else if (process.platform == "linux") {
|
||||
return trayPath.resize({height: 24});
|
||||
if (trayIcon = "default") {
|
||||
trayIcon = "dsc-tray"
|
||||
}
|
||||
};
|
||||
|
||||
if (process.platform == "darwin" && trayPath.getSize().height > 22)
|
||||
trayPath = trayPath.resize({height: 22});
|
||||
|
||||
let trayPath = nativeImage.createFromPath(path.join(__dirname, "../", `/assets/${trayIcon}.png`));
|
||||
if (process.platform === "darwin" && trayPath.getSize().height > 22) trayPath = trayPath.resize({height: 22});
|
||||
if ((await getConfig("windowStyle")) == "basic") {
|
||||
var clientName = (await getConfig("clientName")) ?? "ArmCord";
|
||||
tray = new Tray(trayPath);
|
||||
|
@ -32,13 +22,12 @@ app.whenReady().then(async () => {
|
|||
{
|
||||
label: `Finish the setup first!`,
|
||||
enabled: false
|
||||
}, {
|
||||
},
|
||||
{
|
||||
label: `Quit ${clientName}`,
|
||||
click: async function () {
|
||||
fs.unlink(await getConfigLocation(), (err) => {
|
||||
if (err)
|
||||
throw err;
|
||||
|
||||
if (err) throw err;
|
||||
console.log('Closed during setup. "settings.json" was deleted');
|
||||
app.quit();
|
||||
});
|
||||
|
@ -52,11 +41,16 @@ app.whenReady().then(async () => {
|
|||
click: function () {
|
||||
mainWindow.show();
|
||||
}
|
||||
}, {
|
||||
},
|
||||
{
|
||||
label: `Quit ${clientName}`,
|
||||
click: function () {
|
||||
let [width, height] = mainWindow.getSize();
|
||||
setWindowState({width: width, height: height, isMaximized: mainWindow.isMaximized()});
|
||||
setWindowState({
|
||||
width: width,
|
||||
height: height,
|
||||
isMaximized: mainWindow.isMaximized()
|
||||
});
|
||||
app.quit();
|
||||
}
|
||||
}
|
||||
|
@ -74,13 +68,12 @@ app.whenReady().then(async () => {
|
|||
{
|
||||
label: `Finish the setup first!`,
|
||||
enabled: false
|
||||
}, {
|
||||
},
|
||||
{
|
||||
label: `Quit ${clientName}`,
|
||||
click: async function () {
|
||||
fs.unlink(await getConfigLocation(), (err) => {
|
||||
if (err)
|
||||
throw err;
|
||||
|
||||
if (err) throw err;
|
||||
console.log('Closed during setup. "settings.json" was deleted');
|
||||
app.quit();
|
||||
});
|
||||
|
@ -91,8 +84,7 @@ app.whenReady().then(async () => {
|
|||
} else {
|
||||
const contextMenu = Menu.buildFromTemplate([
|
||||
{
|
||||
label: `${clientName} ` + getDisplayVersion(),
|
||||
icon: trayVerIcon(),
|
||||
label: `${clientName} ` + app.getVersion(),
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
|
@ -109,15 +101,18 @@ app.whenReady().then(async () => {
|
|||
click: function () {
|
||||
createSettingsWindow();
|
||||
}
|
||||
}, {
|
||||
},
|
||||
{
|
||||
label: "Support Discord Server",
|
||||
click: function () {
|
||||
mainWindow.show();
|
||||
mainWindow.loadURL("https://discord.gg/TnhxcqynZ2");
|
||||
}
|
||||
}, {
|
||||
},
|
||||
{
|
||||
type: "separator"
|
||||
}, {
|
||||
},
|
||||
{
|
||||
label: `Quit ${clientName}`,
|
||||
click: function () {
|
||||
app.quit();
|
||||
|
@ -126,7 +121,9 @@ app.whenReady().then(async () => {
|
|||
]);
|
||||
tray.setContextMenu(contextMenu);
|
||||
}
|
||||
} tray.setToolTip(clientName);
|
||||
}
|
||||
|
||||
tray.setToolTip(clientName);
|
||||
tray.on("click", function () {
|
||||
mainWindow.show();
|
||||
});
|
||||
|
|
|
@ -62,11 +62,7 @@ export function getVersion() {
|
|||
export function getDisplayVersion() {
|
||||
//Checks if the app version # has 4 sections (3.1.0.0) instead of 3 (3.1.0) / Shitty way to check if Kernel Mod is installed
|
||||
if ((app.getVersion() == packageVersion) == false) {
|
||||
if ((app.getVersion() == process.versions.electron) == true) {
|
||||
return `Dev Build (${packageVersion})`;
|
||||
} else {
|
||||
return `${packageVersion} [Modified]`;
|
||||
}
|
||||
return `${packageVersion} [Kernel Mod]`;
|
||||
} else {
|
||||
return packageVersion;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,15 @@
|
|||
// I'm sorry for this mess but I'm not sure how to fix it.
|
||||
import {BrowserWindow, shell, app, dialog, nativeImage} from "electron";
|
||||
import path from "path";
|
||||
import {checkIfConfigIsBroken, firstRun, getConfig, contentPath, setConfig, setLang, setWindowState} from "./utils";
|
||||
import {
|
||||
checkIfConfigIsBroken,
|
||||
firstRun,
|
||||
getConfig,
|
||||
contentPath,
|
||||
setConfig,
|
||||
setLang,
|
||||
setWindowState
|
||||
} from "./utils";
|
||||
import {registerIpc} from "./ipc";
|
||||
import {setMenu} from "./menu";
|
||||
import * as fs from "fs";
|
||||
|
@ -20,25 +28,8 @@ var osType = os.type();
|
|||
contextMenu({
|
||||
showSaveImageAs: true,
|
||||
showCopyImageAddress: true,
|
||||
showSearchWithGoogle: false,
|
||||
prepend: (defaultActions, parameters, browserWindow) => [
|
||||
{
|
||||
label: "Search with Google",
|
||||
// Only show it when right-clicking text
|
||||
visible: parameters.selectionText.trim().length > 0,
|
||||
click: () => {
|
||||
shell.openExternal(`https://google.com/search?q=${encodeURIComponent(parameters.selectionText)}`);
|
||||
}
|
||||
},
|
||||
{
|
||||
label: "Search with DuckDuckGo",
|
||||
// Only show it when right-clicking text
|
||||
visible: parameters.selectionText.trim().length > 0,
|
||||
click: () => {
|
||||
shell.openExternal(`https://duckduckgo.com/?q=${encodeURIComponent(parameters.selectionText)}`);
|
||||
}
|
||||
}
|
||||
]
|
||||
showSearchWithGoogle: true,
|
||||
showSearchWithDuckDuckGo: true
|
||||
});
|
||||
async function doAfterDefiningTheWindow() {
|
||||
var ignoreProtocolWarning = await getConfig("ignoreProtocolWarning");
|
||||
|
@ -54,19 +45,7 @@ async function doAfterDefiningTheWindow() {
|
|||
}
|
||||
mainWindow.webContents.userAgent = `Mozilla/5.0 (X11; ${osType} ${os.arch()}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36`; //fake useragent for screenshare to work
|
||||
}
|
||||
const gotTheLock = app.requestSingleInstanceLock()
|
||||
|
||||
if (!gotTheLock) {
|
||||
app.quit()
|
||||
} else {
|
||||
app.on('second-instance', (event, commandLine, workingDirectory) => {
|
||||
// i love stack overflow
|
||||
if (mainWindow) {
|
||||
mainWindow.restore()
|
||||
mainWindow.focus()
|
||||
}
|
||||
})
|
||||
}
|
||||
mainWindow.webContents.setWindowOpenHandler(({url}) => {
|
||||
if (url.startsWith("https:" || url.startsWith("http:") || url.startsWith("mailto:"))) {
|
||||
shell.openExternal(url);
|
||||
|
@ -108,7 +87,7 @@ async function doAfterDefiningTheWindow() {
|
|||
if (/api\/v\d\/science$/g.test(details.url)) return callback({cancel: true});
|
||||
return callback({});
|
||||
});
|
||||
if ((await getConfig("trayIcon")) == "default") {
|
||||
if (await getConfig("trayIcon") == "default") {
|
||||
mainWindow.webContents.on("page-favicon-updated", async (event) => {
|
||||
var faviconBase64 = await mainWindow.webContents.executeJavaScript(`
|
||||
var getFavicon = function(){
|
||||
|
@ -124,14 +103,13 @@ async function doAfterDefiningTheWindow() {
|
|||
return favicon;
|
||||
}
|
||||
getFavicon()
|
||||
`);
|
||||
var buf = new Buffer(faviconBase64.replace(/^data:image\/\w+;base64,/, ""), "base64");
|
||||
`)
|
||||
var buf = new Buffer(faviconBase64.replace(/^data:image\/\w+;base64,/, ""), 'base64');
|
||||
fs.writeFileSync(path.join(app.getPath("temp"), "/", "tray.png"), buf, "utf-8");
|
||||
let trayPath = nativeImage.createFromPath(path.join(app.getPath("temp"), "/", "tray.png"));
|
||||
if (process.platform === "darwin" && trayPath.getSize().height > 22)
|
||||
trayPath = trayPath.resize({height: 22});
|
||||
tray.setImage(trayPath);
|
||||
});
|
||||
if (process.platform === "darwin" && trayPath.getSize().height > 22) trayPath = trayPath.resize({height: 22});
|
||||
tray.setImage(trayPath)
|
||||
})
|
||||
}
|
||||
const userDataPath = app.getPath("userData");
|
||||
const themesFolder = userDataPath + "/themes/";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue