mirror of
https://github.com/smartfrigde/armcord.git
synced 2024-08-14 23:56:58 +00:00
Add floating settings button and few new options
This commit is contained in:
parent
414c7d120f
commit
52bca257f8
5 changed files with 267 additions and 11 deletions
|
@ -60,7 +60,6 @@ body::-webkit-scrollbar-thumb {
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font-family: "Whitney", sans-serif;
|
font-family: "Whitney", sans-serif;
|
||||||
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
|
@ -79,6 +78,13 @@ p {
|
||||||
border-color: var(--background-floating);
|
border-color: var(--background-floating);
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
}
|
}
|
||||||
|
.saveBar {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
z-index: 999;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
.header {
|
.header {
|
||||||
color: var(--header-primary);
|
color: var(--header-primary);
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
|
@ -118,6 +124,11 @@ p {
|
||||||
transform: translateX(50%);
|
transform: translateX(50%);
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
.advancedText {
|
||||||
|
color: var(--header-primary);
|
||||||
|
font-size: 1.5em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
/*buttons*/
|
/*buttons*/
|
||||||
button {
|
button {
|
||||||
background: var(--brand-experiment);
|
background: var(--brand-experiment);
|
||||||
|
@ -244,9 +255,6 @@ select {
|
||||||
.acCSP {
|
.acCSP {
|
||||||
height: 10em !important;
|
height: 10em !important;
|
||||||
}
|
}
|
||||||
.acTray {
|
|
||||||
height: 8em !important;
|
|
||||||
}
|
|
||||||
.acPatches {
|
.acPatches {
|
||||||
height: 10em !important;
|
height: 10em !important;
|
||||||
}
|
}
|
||||||
|
@ -269,5 +277,5 @@ select {
|
||||||
height: 10em !important;
|
height: 10em !important;
|
||||||
}
|
}
|
||||||
.acTray {
|
.acTray {
|
||||||
height: 8em !important;
|
height: 7em !important;
|
||||||
}
|
}
|
||||||
|
|
196
src/settings/hummus.html
Normal file
196
src/settings/hummus.html
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>ArmCord Settings</title>
|
||||||
|
<style>
|
||||||
|
@import url("../content/css/settings.css");
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="saveBar">
|
||||||
|
<button id="settings-save" class="center">Save Settings</button>
|
||||||
|
</div>
|
||||||
|
<div class="switch acCSP">
|
||||||
|
<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="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="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="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="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="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="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="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.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div class="switch acChannel">
|
||||||
|
<select name="channel" id="channel" class="left dropdown">
|
||||||
|
<option value="stable">Stable</option>
|
||||||
|
<option value="canary">Canary</option>
|
||||||
|
<option value="ptb">PTB</option>
|
||||||
|
<option value="hummus">Hummus (unofficial)</option>
|
||||||
|
</select>
|
||||||
|
<div>
|
||||||
|
<p class="header" id="settings-channel">Discord channel:</p>
|
||||||
|
<p class="description">
|
||||||
|
You can use this setting to change current instance of Discord:
|
||||||
|
<br />
|
||||||
|
<b>Stable</b> - you're probably most familiar with this one. It's the one you see in default Discord
|
||||||
|
client!
|
||||||
|
<br />
|
||||||
|
<b>Canary</b> - this is alpha test release of Discord. By using it you gain access to newest
|
||||||
|
features and fixes.
|
||||||
|
<br />
|
||||||
|
<b>PTB</b> - public test build. Gets features earlier than stable but is a bit older than Canary.
|
||||||
|
<br />
|
||||||
|
<b>Hummus</b> - unofficial instance of Discord that takes you back to 2016! None of the client mods
|
||||||
|
bundled with ArmCord work with it. It's run by community, so you take all the risk by using it.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div class="switch acAltPaste">
|
||||||
|
<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="description2">
|
||||||
|
Client mod for Hummus that focuses on making the plugin development experience easier. Minimal, light,
|
||||||
|
and easy to use
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div class="switch acPrfmMode">
|
||||||
|
<select name="prfmMode" id="prfmMode" class="left dropdown">
|
||||||
|
<option value="performance">Performance</option>
|
||||||
|
<option value="battery">Battery</option>
|
||||||
|
<option value="none">None</option>
|
||||||
|
</select>
|
||||||
|
<p class="header" id="settings-prfmMode">Performance mode:</p>
|
||||||
|
<p class="description">
|
||||||
|
Performance mode is an experimental function that may either increase responsiveness and performance of
|
||||||
|
ArmCord or... decrease it. Please try every option and see which fits you the best.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div class="switch acTray">
|
||||||
|
<select name="trayIcon" id="trayIcon" class="left dropdown">
|
||||||
|
<option value="ac_plug_colored">Default</option>
|
||||||
|
<option value="dsc-tray">Discord Icon</option>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<h1 class="center advancedText">⚠️Advanced user zone⚠️</h1>
|
||||||
|
<button id="settings-pluginsFolder" class="center">Open plugins folder</button>
|
||||||
|
<br />
|
||||||
|
<button id="settings-themesFolder" class="center">Open themes folder</button>
|
||||||
|
<br />
|
||||||
|
<button id="settings-storageFolder" class="center">Open storage folder</button>
|
||||||
|
<br />
|
||||||
|
<button id="settings-copyDebugInfo" class="center">Copy debug info</button>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
async function loadLang() {
|
||||||
|
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");
|
||||||
|
document.getElementById("settings-invitewebsocket").innerHTML = await settings.getLang(
|
||||||
|
"settings-invitewebsocket"
|
||||||
|
);
|
||||||
|
document.getElementById("settings-patches").innerHTML = await settings.getLang("settings-patches");
|
||||||
|
document.getElementById("settings-tray").innerHTML = await settings.getLang("settings-tray");
|
||||||
|
document.getElementById("settings-mobileMode").innerHTML = await settings.getLang("settings-mobileMode");
|
||||||
|
document.getElementById("settings-theme").innerHTML = await settings.getLang("settings-theme");
|
||||||
|
//select stuff
|
||||||
|
document.getElementById("mod").options[3].text = await settings.getLang("settings-none");
|
||||||
|
document.getElementById("prfmMode").options[2].text = await settings.getLang("settings-none");
|
||||||
|
document.getElementById("prfmMode").options[1].text = await settings.getLang("settings-prfmMode-battery");
|
||||||
|
document.getElementById("prfmMode").options[0].text = await settings.getLang(
|
||||||
|
"settings-prfmMode-performance"
|
||||||
|
);
|
||||||
|
document.getElementById("theme").options[1].text = await settings.getLang("settings-theme-native");
|
||||||
|
document.getElementById("theme").options[0].text = await settings.getLang("settings-theme-default");
|
||||||
|
}
|
||||||
|
loadLang();
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
async function loadSettings() {
|
||||||
|
document.getElementById("csp").checked = await settings.get("armcordCSP");
|
||||||
|
document.getElementById("tray").checked = await settings.get("minimizeToTray");
|
||||||
|
document.getElementById("websocket").checked = await settings.get("inviteWebsocket");
|
||||||
|
document.getElementById("alternativePaste").checked = await settings.get("alternativePaste");
|
||||||
|
document.getElementById("mobile").checked = await settings.get("mobileMode");
|
||||||
|
document.getElementById("patches").value = await settings.get("automaticPatches");
|
||||||
|
document.getElementById("mod").value = await settings.get("mods");
|
||||||
|
document.getElementById("channel").value = await settings.get("channel");
|
||||||
|
document.getElementById("theme").value = await settings.get("windowStyle");
|
||||||
|
document.getElementById("prfmMode").value = await settings.get("performanceMode");
|
||||||
|
document.getElementById("trayIcon").value = await settings.get("trayIcon");
|
||||||
|
}
|
||||||
|
loadSettings();
|
||||||
|
document.getElementById("settings-save").addEventListener("click", function () {
|
||||||
|
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,
|
||||||
|
automaticPatches: document.getElementById("patches").checked,
|
||||||
|
mods: document.getElementById("mod").value,
|
||||||
|
mobileMode: document.getElementById("mobile").checked,
|
||||||
|
inviteWebsocket: document.getElementById("websocket").checked,
|
||||||
|
performanceMode: document.getElementById("prfmMode").value,
|
||||||
|
trayIcon: document.getElementById("trayIcon").value,
|
||||||
|
doneSetup: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
document.getElementById("settings-pluginsFolder").addEventListener("click", function () {
|
||||||
|
settings.openPluginsFolder();
|
||||||
|
});
|
||||||
|
document.getElementById("settings-themesFolder").addEventListener("click", function () {
|
||||||
|
settings.openThemesFolder();
|
||||||
|
});
|
||||||
|
document.getElementById("settings-storageFolder").addEventListener("click", function () {
|
||||||
|
settings.openStorageFolder();
|
||||||
|
});
|
||||||
|
document.getElementById("settings-copyDebugInfo").addEventListener("click", function () {
|
||||||
|
settings.copyDebugInfo();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -1,9 +1,14 @@
|
||||||
import {BrowserWindow, shell, ipcMain} from "electron";
|
import {BrowserWindow, shell, ipcMain, app, clipboard} from "electron";
|
||||||
import {getConfig, setConfigBulk, Settings, getLang} from "../utils";
|
import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation} from "../utils";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
import os from "os";
|
||||||
|
import fs from "fs";
|
||||||
var settingsWindow: BrowserWindow;
|
var settingsWindow: BrowserWindow;
|
||||||
var instance: number = 0;
|
var instance: number = 0;
|
||||||
|
const userDataPath = app.getPath("userData");
|
||||||
|
const storagePath = path.join(userDataPath, "/storage/");
|
||||||
|
const themesPath = path.join(userDataPath, "/themes/");
|
||||||
|
const pluginsPath = path.join(userDataPath, "/plugins/");
|
||||||
export function createSettingsWindow() {
|
export function createSettingsWindow() {
|
||||||
console.log("Creating a settings window.");
|
console.log("Creating a settings window.");
|
||||||
instance = instance + 1;
|
instance = instance + 1;
|
||||||
|
@ -28,9 +33,36 @@ export function createSettingsWindow() {
|
||||||
console.log(args);
|
console.log(args);
|
||||||
setConfigBulk(args);
|
setConfigBulk(args);
|
||||||
});
|
});
|
||||||
|
ipcMain.on("openStorageFolder", (event) => {
|
||||||
|
shell.openPath(storagePath);
|
||||||
|
});
|
||||||
|
ipcMain.on("openThemesFolder", (event) => {
|
||||||
|
shell.openPath(themesPath);
|
||||||
|
});
|
||||||
|
ipcMain.on("openPluginsFolder", (event) => {
|
||||||
|
shell.openPath(pluginsPath);
|
||||||
|
});
|
||||||
ipcMain.handle("getSetting", (event, toGet: string) => {
|
ipcMain.handle("getSetting", (event, toGet: string) => {
|
||||||
return getConfig(toGet);
|
return getConfig(toGet);
|
||||||
});
|
});
|
||||||
|
ipcMain.on("copyDebugInfo", (event) => {
|
||||||
|
let settingsFileContent = fs.readFileSync(getConfigLocation(), "utf-8");
|
||||||
|
clipboard.writeText(
|
||||||
|
"**OS:** " +
|
||||||
|
os.platform() +
|
||||||
|
" " +
|
||||||
|
os.version() +
|
||||||
|
"\n**Architecture:** " +
|
||||||
|
os.arch() +
|
||||||
|
"\n**ArmCord version:** " +
|
||||||
|
getVersion() +
|
||||||
|
"\n**Electron version:** " +
|
||||||
|
process.versions.electron +
|
||||||
|
"\n`" +
|
||||||
|
settingsFileContent +
|
||||||
|
"`"
|
||||||
|
);
|
||||||
|
});
|
||||||
settingsWindow.webContents.setWindowOpenHandler(({url}) => {
|
settingsWindow.webContents.setWindowOpenHandler(({url}) => {
|
||||||
shell.openExternal(url);
|
shell.openExternal(url);
|
||||||
return {action: "deny"};
|
return {action: "deny"};
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import {contextBridge, ipcRenderer} from "electron";
|
import {contextBridge, ipcRenderer} from "electron";
|
||||||
console.log("ArmCord Settings");
|
console.log("ArmCord Settings");
|
||||||
|
|
||||||
contextBridge.exposeInMainWorld("settings", {
|
contextBridge.exposeInMainWorld("settings", {
|
||||||
save: (...args: any) => ipcRenderer.send("saveSettings", ...args),
|
save: (...args: any) => ipcRenderer.send("saveSettings", ...args),
|
||||||
getLang: (toGet: string) =>
|
getLang: (toGet: string) =>
|
||||||
|
@ -9,5 +10,9 @@ contextBridge.exposeInMainWorld("settings", {
|
||||||
get: (toGet: string) =>
|
get: (toGet: string) =>
|
||||||
ipcRenderer.invoke("getSetting", toGet).then((result) => {
|
ipcRenderer.invoke("getSetting", toGet).then((result) => {
|
||||||
return result;
|
return result;
|
||||||
}) //jank but works
|
}), //jank but works
|
||||||
|
openThemesFolder: () => ipcRenderer.send("openThemesFolder"),
|
||||||
|
openPluginsFolder: () => ipcRenderer.send("openPluginsFolder"),
|
||||||
|
openStorageFolder: () => ipcRenderer.send("openStorageFolder"),
|
||||||
|
copyDebugInfo: () => ipcRenderer.send("copyDebugInfo")
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<div class="saveBar">
|
||||||
|
<button id="settings-save" class="center">Save Settings</button>
|
||||||
|
</div>
|
||||||
<div class="switch acTheme">
|
<div class="switch acTheme">
|
||||||
<select name="theme" id="theme" class="left dropdown">
|
<select name="theme" id="theme" class="left dropdown">
|
||||||
<option value="default">Default</option>
|
<option value="default">Default</option>
|
||||||
|
@ -162,11 +165,11 @@
|
||||||
<p class="description">Set the icon which will appear in tray menu.</p>
|
<p class="description">Set the icon which will appear in tray menu.</p>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<button id="settings-save" class="center">Save Settings</button>
|
|
||||||
<br />
|
<br />
|
||||||
|
<h1 class="center advancedText">⚠️Advanced user zone⚠️</h1>
|
||||||
<button id="settings-pluginsFolder" class="center">Open plugins folder</button>
|
<button id="settings-pluginsFolder" class="center">Open plugins folder</button>
|
||||||
<br />
|
<br />
|
||||||
<button id="settings-themeFolder" class="center">Open themes folder</button>
|
<button id="settings-themesFolder" class="center">Open themes folder</button>
|
||||||
<br />
|
<br />
|
||||||
<button id="settings-storageFolder" class="center">Open storage folder</button>
|
<button id="settings-storageFolder" class="center">Open storage folder</button>
|
||||||
<br />
|
<br />
|
||||||
|
@ -227,5 +230,17 @@
|
||||||
doneSetup: true
|
doneSetup: true
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
document.getElementById("settings-pluginsFolder").addEventListener("click", function () {
|
||||||
|
settings.openPluginsFolder();
|
||||||
|
});
|
||||||
|
document.getElementById("settings-themesFolder").addEventListener("click", function () {
|
||||||
|
settings.openThemesFolder();
|
||||||
|
});
|
||||||
|
document.getElementById("settings-storageFolder").addEventListener("click", function () {
|
||||||
|
settings.openStorageFolder();
|
||||||
|
});
|
||||||
|
document.getElementById("settings-copyDebugInfo").addEventListener("click", function () {
|
||||||
|
settings.copyDebugInfo();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in a new issue