Remove glasstron and tabs completely
This commit is contained in:
parent
8d85591e1c
commit
c979328aee
|
@ -1,46 +0,0 @@
|
||||||
.tabs {
|
|
||||||
display: block;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
flex-shrink: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
zoom: 1;
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
clear: both;
|
|
||||||
height: 30px;
|
|
||||||
line-height: 30px;
|
|
||||||
background-color: #202225;
|
|
||||||
-webkit-app-region: drag;
|
|
||||||
width: 100%;
|
|
||||||
user-select: none;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 99999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabs #tabs-controls-container {
|
|
||||||
float: left;
|
|
||||||
width: 150px;
|
|
||||||
height: 100%;
|
|
||||||
line-height: 30px;
|
|
||||||
background-color: #202225;
|
|
||||||
-webkit-app-region: no-drag;
|
|
||||||
}
|
|
||||||
.tabs-buttons {
|
|
||||||
color: white;
|
|
||||||
background-color: inherit;
|
|
||||||
float: left;
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: 0.3s;
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
.tabs-buttons:hover {
|
|
||||||
background-color: #4e515a;
|
|
||||||
}
|
|
||||||
.withFrame-haYltI {
|
|
||||||
height: 30px !important;
|
|
||||||
}
|
|
|
@ -123,8 +123,7 @@
|
||||||
automaticPatches: false,
|
automaticPatches: false,
|
||||||
mods: "cumcord",
|
mods: "cumcord",
|
||||||
inviteWebsocket: true,
|
inviteWebsocket: true,
|
||||||
performanceMode: "none",
|
performanceMode: "none"
|
||||||
blurType: "acrylic"
|
|
||||||
});
|
});
|
||||||
setTimeout(() => window.armcordinternal.restart(), 5000);
|
setTimeout(() => window.armcordinternal.restart(), 5000);
|
||||||
});
|
});
|
||||||
|
@ -155,8 +154,7 @@
|
||||||
automaticPatches: false,
|
automaticPatches: false,
|
||||||
performanceMode: "none",
|
performanceMode: "none",
|
||||||
mods: options.mod,
|
mods: options.mod,
|
||||||
inviteWebsocket: true,
|
inviteWebsocket: true
|
||||||
blurType: "acrylic"
|
|
||||||
});
|
});
|
||||||
setTimeout(() => window.armcordinternal.restart(), 500);
|
setTimeout(() => window.armcordinternal.restart(), 500);
|
||||||
});
|
});
|
||||||
|
@ -170,8 +168,7 @@
|
||||||
autoLaunch: true,
|
autoLaunch: true,
|
||||||
mods: "none",
|
mods: "none",
|
||||||
performanceMode: "none",
|
performanceMode: "none",
|
||||||
inviteWebsocket: true,
|
inviteWebsocket: true
|
||||||
blurType: "acrylic"
|
|
||||||
});
|
});
|
||||||
setTimeout(() => window.armcordinternal.restart(), 500);
|
setTimeout(() => window.armcordinternal.restart(), 500);
|
||||||
}
|
}
|
||||||
|
|
10
src/ipc.ts
10
src/ipc.ts
|
@ -1,16 +1,13 @@
|
||||||
//ipc stuff
|
//ipc stuff
|
||||||
import {app, ipcMain, shell, desktopCapturer} from "electron";
|
import {app, ipcMain, shell, desktopCapturer} from "electron";
|
||||||
import {createTabsGuest, mainWindow} from "./window";
|
import {mainWindow} from "./window";
|
||||||
import {setConfigBulk, getVersion, getConfig, setLang, getLang} from "./utils";
|
import {setConfigBulk, getVersion, getConfig, setLang, getLang} from "./utils";
|
||||||
import {customTitlebar, tabs} from "./main";
|
import {customTitlebar} from "./main";
|
||||||
import {createSettingsWindow} from "./settings/main";
|
import {createSettingsWindow} from "./settings/main";
|
||||||
export function registerIpc() {
|
export function registerIpc() {
|
||||||
ipcMain.on("get-app-path", (event, arg) => {
|
ipcMain.on("get-app-path", (event, arg) => {
|
||||||
event.reply("app-path", app.getAppPath());
|
event.reply("app-path", app.getAppPath());
|
||||||
});
|
});
|
||||||
ipcMain.on("openTab", (event, number: number) => {
|
|
||||||
createTabsGuest(number);
|
|
||||||
});
|
|
||||||
ipcMain.on("setLang", (event, lang: string) => {
|
ipcMain.on("setLang", (event, lang: string) => {
|
||||||
setLang(lang);
|
setLang(lang);
|
||||||
});
|
});
|
||||||
|
@ -66,9 +63,6 @@ export function registerIpc() {
|
||||||
ipcMain.on("titlebar", (event, arg) => {
|
ipcMain.on("titlebar", (event, arg) => {
|
||||||
event.returnValue = customTitlebar;
|
event.returnValue = customTitlebar;
|
||||||
});
|
});
|
||||||
ipcMain.on("tabs", (event, arg) => {
|
|
||||||
event.returnValue = tabs;
|
|
||||||
});
|
|
||||||
ipcMain.on("shouldPatch", async (event, arg) => {
|
ipcMain.on("shouldPatch", async (event, arg) => {
|
||||||
event.returnValue = await getConfig("automaticPatches");
|
event.returnValue = await getConfig("automaticPatches");
|
||||||
});
|
});
|
||||||
|
|
30
src/main.ts
30
src/main.ts
|
@ -1,16 +1,15 @@
|
||||||
// Modules to control application life and create native browser window
|
// Modules to control application life and create native browser window
|
||||||
import {app, BrowserWindow, session, dialog} from "electron";
|
import {app, BrowserWindow, session} from "electron";
|
||||||
import "v8-compile-cache";
|
import "v8-compile-cache";
|
||||||
import {getConfig, setup, checkIfConfigExists, injectElectronFlags} from "./utils";
|
import {getConfig, checkIfConfigExists, injectElectronFlags} from "./utils";
|
||||||
import "./extensions/mods";
|
import "./extensions/mods";
|
||||||
import "./extensions/plugin";
|
import "./extensions/plugin";
|
||||||
import "./tray";
|
import "./tray";
|
||||||
import {createCustomWindow, createNativeWindow, createTabsHost} from "./window";
|
import {createCustomWindow, createNativeWindow} from "./window";
|
||||||
import "./shortcuts";
|
import "./shortcuts";
|
||||||
|
|
||||||
export var settings: any;
|
export var settings: any;
|
||||||
export var customTitlebar: boolean;
|
export var customTitlebar: boolean;
|
||||||
export var tabs: boolean;
|
|
||||||
|
|
||||||
|
|
||||||
if (process.platform == "linux") {
|
if (process.platform == "linux") {
|
||||||
|
@ -38,17 +37,6 @@ app.whenReady().then(async () => {
|
||||||
case "discord":
|
case "discord":
|
||||||
createNativeWindow();
|
createNativeWindow();
|
||||||
break;
|
break;
|
||||||
case "glasstron":
|
|
||||||
dialog.showErrorBox(
|
|
||||||
"Glasstron is unsupported.",
|
|
||||||
"This build doesn't include Glasstron functionality, please edit windowStyle value in your settings.json to something different (default for example)"
|
|
||||||
);
|
|
||||||
app.quit();
|
|
||||||
break;
|
|
||||||
case "tabs":
|
|
||||||
createTabsHost();
|
|
||||||
tabs = true;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
createCustomWindow();
|
createCustomWindow();
|
||||||
customTitlebar = true;
|
customTitlebar = true;
|
||||||
|
@ -73,16 +61,8 @@ app.whenReady().then(async () => {
|
||||||
case "native":
|
case "native":
|
||||||
createNativeWindow();
|
createNativeWindow();
|
||||||
break;
|
break;
|
||||||
case "glasstron":
|
case "discord":
|
||||||
dialog.showErrorBox(
|
createNativeWindow();
|
||||||
"Glasstron is unsupported.",
|
|
||||||
"This build doesn't include Glasstron functionality, please edit windowStyle value in your settings.json to something different (default for example)"
|
|
||||||
);
|
|
||||||
app.quit();
|
|
||||||
break;
|
|
||||||
case "tabs":
|
|
||||||
createTabsHost();
|
|
||||||
tabs = true;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
createCustomWindow();
|
createCustomWindow();
|
||||||
|
|
|
@ -6,7 +6,6 @@ import * as path from "path";
|
||||||
import {injectTitlebar} from "./titlebar";
|
import {injectTitlebar} from "./titlebar";
|
||||||
import {sleep, addStyle, injectJS, addScript} from "../utils";
|
import {sleep, addStyle, injectJS, addScript} from "../utils";
|
||||||
import {ipcRenderer} from "electron";
|
import {ipcRenderer} from "electron";
|
||||||
import {injectTabs} from "./tabs";
|
|
||||||
var version = ipcRenderer.sendSync("get-app-version", "app-version");
|
var version = ipcRenderer.sendSync("get-app-version", "app-version");
|
||||||
async function updateLang() {
|
async function updateLang() {
|
||||||
if (window.location.href.indexOf("setup.html") > -1) {
|
if (window.location.href.indexOf("setup.html") > -1) {
|
||||||
|
@ -35,9 +34,6 @@ if (window.location.href.indexOf("splash.html") > -1) {
|
||||||
if (ipcRenderer.sendSync("titlebar")) {
|
if (ipcRenderer.sendSync("titlebar")) {
|
||||||
injectTitlebar();
|
injectTitlebar();
|
||||||
}
|
}
|
||||||
if (ipcRenderer.sendSync("tabs")) {
|
|
||||||
injectTabs();
|
|
||||||
}
|
|
||||||
sleep(5000).then(async () => {
|
sleep(5000).then(async () => {
|
||||||
const cssPath = path.join(__dirname, "../", "/content/css/discord.css");
|
const cssPath = path.join(__dirname, "../", "/content/css/discord.css");
|
||||||
addStyle(fs.readFileSync(cssPath, "utf8"));
|
addStyle(fs.readFileSync(cssPath, "utf8"));
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
import {addStyle} from "../utils";
|
|
||||||
import * as fs from "fs";
|
|
||||||
import * as path from "path";
|
|
||||||
export function injectTabs() {
|
|
||||||
document.addEventListener("DOMContentLoaded", function (event) {
|
|
||||||
var elem = document.createElement("div");
|
|
||||||
elem.innerHTML = `<nav class="tabs">
|
|
||||||
<div id="tabs-controls-container">
|
|
||||||
<button class="tabs-buttons" onclick="armcord.openTab(1)">1</button>
|
|
||||||
<button class="tabs-buttons" onclick="armcord.openTab(2)">2</button>
|
|
||||||
<button class="tabs-buttons" onclick="armcord.openTab(3)">3</button>
|
|
||||||
<button class="tabs-buttons" onclick="armcord.openTab(4)">4</button>
|
|
||||||
<button class="tabs-buttons" onclick="armcord.openTab(5)">5</button>
|
|
||||||
<p class="experimental">Experimental</p>
|
|
||||||
</div>
|
|
||||||
</nav>`;
|
|
||||||
elem.classList.add("withFrame-haYltI");
|
|
||||||
if (document.getElementById("app-mount") == null) {
|
|
||||||
document.body.appendChild(elem);
|
|
||||||
} else {
|
|
||||||
document.getElementById("app-mount")!.prepend(elem);
|
|
||||||
}
|
|
||||||
const cssPath = path.join(__dirname, "../", "/content/css/tabs.css");
|
|
||||||
addStyle(fs.readFileSync(cssPath, "utf8"));
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -104,7 +104,6 @@
|
||||||
}
|
}
|
||||||
loadSettings();
|
loadSettings();
|
||||||
document.getElementById("settings-save").addEventListener("click", function () {
|
document.getElementById("settings-save").addEventListener("click", function () {
|
||||||
//function saveSettings(windowStyle: string, channelSetting: string, armcordCSPSetting: boolean, minimizeToTray: boolean, automaticPatches: boolean,modsSetting: string, blurType: string)
|
|
||||||
settings.save({
|
settings.save({
|
||||||
windowStyle: document.getElementById("theme").value,
|
windowStyle: document.getElementById("theme").value,
|
||||||
channel: document.getElementById("channel").value,
|
channel: document.getElementById("channel").value,
|
||||||
|
@ -112,7 +111,6 @@
|
||||||
minimizeToTray: document.getElementById("tray").checked,
|
minimizeToTray: document.getElementById("tray").checked,
|
||||||
automaticPatches: document.getElementById("patches").checked,
|
automaticPatches: document.getElementById("patches").checked,
|
||||||
mods: document.getElementById("mod").value,
|
mods: document.getElementById("mod").value,
|
||||||
blurType: "acrylic",
|
|
||||||
inviteWebsocket: document.getElementById("websocket").checked,
|
inviteWebsocket: document.getElementById("websocket").checked,
|
||||||
performanceMode: document.getElementById("prfmMode").value,
|
performanceMode: document.getElementById("prfmMode").value,
|
||||||
doneSetup: true
|
doneSetup: true
|
||||||
|
|
|
@ -42,7 +42,6 @@ export function setup() {
|
||||||
minimizeToTray: true,
|
minimizeToTray: true,
|
||||||
automaticPatches: false,
|
automaticPatches: false,
|
||||||
mods: "cumcord",
|
mods: "cumcord",
|
||||||
blurType: "acrylic",
|
|
||||||
performanceMode: "none",
|
performanceMode: "none",
|
||||||
inviteWebsocket: true,
|
inviteWebsocket: true,
|
||||||
doneSetup: false
|
doneSetup: false
|
||||||
|
@ -148,7 +147,6 @@ export interface Settings {
|
||||||
automaticPatches: boolean;
|
automaticPatches: boolean;
|
||||||
mods: string;
|
mods: string;
|
||||||
performanceMode: string;
|
performanceMode: string;
|
||||||
blurType: string;
|
|
||||||
inviteWebsocket: boolean;
|
inviteWebsocket: boolean;
|
||||||
doneSetup: boolean;
|
doneSetup: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// I had to add most of the window creation code here to split both into seperete functions
|
// I had to add most of the window creation code here to split both into seperete functions
|
||||||
// WHY? Because I can't use the same code for both due to annoying bug with value `frame` not responding to variables
|
// WHY? Because I can't use the same code for both due to annoying bug with value `frame` not responding to variables
|
||||||
// I'm sorry for this mess but I'm not sure how to fix it.
|
// I'm sorry for this mess but I'm not sure how to fix it.
|
||||||
import {BrowserWindow, shell, app, ipcMain, dialog, clipboard} from "electron";
|
import {BrowserWindow, shell, app, dialog} from "electron";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import {checkIfConfigIsBroken, firstRun, getConfig, contentPath, isSetup, setConfig, setLang} from "./utils";
|
import {checkIfConfigIsBroken, firstRun, getConfig, contentPath, isSetup, setConfig, setLang} from "./utils";
|
||||||
import {registerIpc} from "./ipc";
|
import {registerIpc} from "./ipc";
|
||||||
|
@ -12,7 +12,6 @@ import os from "os";
|
||||||
export var icon: string;
|
export var icon: string;
|
||||||
export let mainWindow: BrowserWindow;
|
export let mainWindow: BrowserWindow;
|
||||||
export let inviteWindow: BrowserWindow;
|
export let inviteWindow: BrowserWindow;
|
||||||
let guestWindows: BrowserWindow[] = [];
|
|
||||||
var osType = os.type()
|
var osType = os.type()
|
||||||
|
|
||||||
contextMenu({
|
contextMenu({
|
||||||
|
@ -154,77 +153,6 @@ export function createNativeWindow() {
|
||||||
doAfterDefiningTheWindow();
|
doAfterDefiningTheWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createTabsHost() {
|
|
||||||
dialog.showErrorBox(
|
|
||||||
"READ THIS BEFORE USING THE APP",
|
|
||||||
"ArmCord Tabs are highly experimental and should be only used for strict testing purposes. Please don't ask for support, however you can still report bugs!"
|
|
||||||
);
|
|
||||||
guestWindows[1] = mainWindow;
|
|
||||||
mainWindow = new BrowserWindow({
|
|
||||||
width: 300,
|
|
||||||
height: 350,
|
|
||||||
title: "ArmCord",
|
|
||||||
darkTheme: true,
|
|
||||||
icon: path.join(__dirname, "../", "/assets/ac_icon_transparent.png"),
|
|
||||||
frame: true,
|
|
||||||
autoHideMenuBar: true,
|
|
||||||
webPreferences: {
|
|
||||||
preload: path.join(__dirname, "preload/preload.js")
|
|
||||||
}
|
|
||||||
});
|
|
||||||
doAfterDefiningTheWindow();
|
|
||||||
}
|
|
||||||
export function createTabsGuest(number: number) {
|
|
||||||
console.log(guestWindows);
|
|
||||||
if (guestWindows[number] !== undefined || null) {
|
|
||||||
try {
|
|
||||||
console.log("Showing Guest Window " + number);
|
|
||||||
mainWindow.hide();
|
|
||||||
guestWindows[number].show();
|
|
||||||
mainWindow = guestWindows[number];
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log("Creating Guest Window " + number);
|
|
||||||
mainWindow.hide();
|
|
||||||
|
|
||||||
guestWindows[number] = new BrowserWindow({
|
|
||||||
width: 800,
|
|
||||||
height: 600,
|
|
||||||
title: "ArmCord Guest Window " + number,
|
|
||||||
darkTheme: true,
|
|
||||||
icon: path.join(__dirname, "../", "/assets/ac_icon_transparent.png"),
|
|
||||||
frame: true,
|
|
||||||
autoHideMenuBar: true,
|
|
||||||
webPreferences: {
|
|
||||||
preload: path.join(__dirname, "preload/preload.js")
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
mainWindow = guestWindows[number];
|
|
||||||
ipcMain.on("tab" + number, (event) => {
|
|
||||||
event.returnValue = true; //return true so we know the tab exists
|
|
||||||
});
|
|
||||||
|
|
||||||
guestWindows[number].webContents.userAgent =
|
|
||||||
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"; //fake useragent for screenshare to work
|
|
||||||
|
|
||||||
guestWindows[number].webContents.setWindowOpenHandler(({url}) => {
|
|
||||||
shell.openExternal(url);
|
|
||||||
return {action: "deny"};
|
|
||||||
});
|
|
||||||
|
|
||||||
guestWindows[number].webContents.session.webRequest.onBeforeRequest(
|
|
||||||
(details: {url: string}, callback: (arg0: {cancel?: boolean}) => any) => {
|
|
||||||
if (/api\/v\d\/science$/g.test(details.url)) return callback({cancel: true});
|
|
||||||
return callback({});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
guestWindows[number].loadURL("https://discord.com/app");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export function createInviteWindow() {
|
export function createInviteWindow() {
|
||||||
inviteWindow = new BrowserWindow({
|
inviteWindow = new BrowserWindow({
|
||||||
width: 800,
|
width: 800,
|
||||||
|
|
Loading…
Reference in New Issue