mirror of
https://github.com/smartfrigde/armcord.git
synced 2024-08-14 23:56:58 +00:00
Avoid window creation/init if 2nd instance (#297)
* fix first instance not showing when opening 2nd * Avoid window creation/init if 2nd instance * fix white flash on startup, add en-us transparent entry for future use * fix white flash for settings window too Co-authored-by: octopushugger <octopushugger@github.com>
This commit is contained in:
parent
8a9a62aa57
commit
63db76cd7e
4 changed files with 77 additions and 73 deletions
120
src/main.ts
120
src/main.ts
|
@ -19,65 +19,71 @@ export var settings: any;
|
|||
export var customTitlebar: boolean;
|
||||
export var clientName: "ArmCord";
|
||||
|
||||
// Your data now belongs to CCP
|
||||
let settingsFile = fs.readFileSync(getConfigLocation(), "utf-8");
|
||||
crashReporter.start({uploadToServer: false, extra: {settingsFile}});
|
||||
|
||||
if (process.platform == "linux") {
|
||||
if (process.env.$XDG_SESSION_TYPE == "wayland") {
|
||||
console.log("Wayland specific patches applied.");
|
||||
app.commandLine.appendSwitch("ozone-platform=wayland");
|
||||
if (process.env.$XDG_CURRENT_DESKTOP == "GNOME") {
|
||||
app.commandLine.appendSwitch("enable-features=UseOzonePlatform,WaylandWindowDecorations");
|
||||
if (!app.requestSingleInstanceLock()) {
|
||||
// kill if 2nd instance
|
||||
app.quit();
|
||||
} else {
|
||||
// Your data now belongs to CCP
|
||||
let settingsFile = fs.readFileSync(getConfigLocation(), "utf-8");
|
||||
crashReporter.start({uploadToServer: false, extra: {settingsFile}});
|
||||
|
||||
if (process.platform == "linux") {
|
||||
if (process.env.$XDG_SESSION_TYPE == "wayland") {
|
||||
console.log("Wayland specific patches applied.");
|
||||
app.commandLine.appendSwitch("ozone-platform=wayland");
|
||||
if (process.env.$XDG_CURRENT_DESKTOP == "GNOME") {
|
||||
app.commandLine.appendSwitch("enable-features=UseOzonePlatform,WaylandWindowDecorations");
|
||||
} else {
|
||||
app.commandLine.appendSwitch("enable-features=UseOzonePlatform");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checkForDataFolder();
|
||||
checkIfConfigExists();
|
||||
injectElectronFlags();
|
||||
app.whenReady().then(async () => {
|
||||
if ((await getConfig("customIcon")) !== undefined ?? null) {
|
||||
iconPath = await getConfig("customIcon");
|
||||
} else {
|
||||
app.commandLine.appendSwitch("enable-features=UseOzonePlatform");
|
||||
iconPath = path.join(__dirname, "../", "/assets/ac_icon_transparent.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checkForDataFolder();
|
||||
checkIfConfigExists();
|
||||
injectElectronFlags();
|
||||
app.whenReady().then(async () => {
|
||||
if ((await getConfig("customIcon")) !== undefined ?? null) {
|
||||
iconPath = await getConfig("customIcon");
|
||||
} else {
|
||||
iconPath = path.join(__dirname, "../", "/assets/ac_icon_transparent.png");
|
||||
}
|
||||
async function init() {
|
||||
switch (await getConfig("windowStyle")) {
|
||||
case "default":
|
||||
createCustomWindow();
|
||||
customTitlebar = true;
|
||||
break;
|
||||
case "native":
|
||||
createNativeWindow();
|
||||
break;
|
||||
case "transparent":
|
||||
createTransparentWindow();
|
||||
break;
|
||||
case "basic":
|
||||
createNativeWindow();
|
||||
break;
|
||||
default:
|
||||
createCustomWindow();
|
||||
customTitlebar = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
await init();
|
||||
await installModLoader();
|
||||
session.fromPartition("some-partition").setPermissionRequestHandler((webContents, permission, callback) => {
|
||||
if (permission === "notifications") {
|
||||
// Approves the permissions request
|
||||
callback(true);
|
||||
}
|
||||
if (permission === "media") {
|
||||
// Approves the permissions request
|
||||
callback(true);
|
||||
async function init() {
|
||||
switch (await getConfig("windowStyle")) {
|
||||
case "default":
|
||||
createCustomWindow();
|
||||
customTitlebar = true;
|
||||
break;
|
||||
case "native":
|
||||
createNativeWindow();
|
||||
break;
|
||||
case "transparent":
|
||||
createTransparentWindow();
|
||||
break;
|
||||
case "basic":
|
||||
createNativeWindow();
|
||||
break;
|
||||
default:
|
||||
createCustomWindow();
|
||||
customTitlebar = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
await init();
|
||||
await installModLoader();
|
||||
session.fromPartition("some-partition").setPermissionRequestHandler((webContents, permission, callback) => {
|
||||
if (permission === "notifications") {
|
||||
// Approves the permissions request
|
||||
callback(true);
|
||||
}
|
||||
if (permission === "media") {
|
||||
// Approves the permissions request
|
||||
callback(true);
|
||||
}
|
||||
});
|
||||
app.on("activate", async function () {
|
||||
if (BrowserWindow.getAllWindows().length === 0) await init();
|
||||
});
|
||||
});
|
||||
app.on("activate", async function () {
|
||||
if (BrowserWindow.getAllWindows().length === 0) await init();
|
||||
});
|
||||
});
|
||||
}
|
|
@ -38,6 +38,7 @@ export function createSettingsWindow() {
|
|||
title: `ArmCord Settings | Version: ${getDisplayVersion()}`,
|
||||
darkTheme: true,
|
||||
frame: true,
|
||||
backgroundColor: "#2f3136",
|
||||
autoHideMenuBar: true,
|
||||
webPreferences: {
|
||||
sandbox: false,
|
||||
|
|
|
@ -78,23 +78,17 @@ 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();
|
||||
app.on("second-instance", (event, commandLine, workingDirectory, additionalData) => {
|
||||
// Print out data received from the second instance.
|
||||
console.log(additionalData);
|
||||
|
||||
if (!gotTheLock) {
|
||||
app.quit();
|
||||
} else {
|
||||
app.on("second-instance", (event, commandLine, workingDirectory, additionalData) => {
|
||||
// Print out data received from the second instance.
|
||||
console.log(additionalData);
|
||||
|
||||
// Someone tried to run a second instance, we should focus our window.
|
||||
if (mainWindow) {
|
||||
if (mainWindow.isMinimized()) mainWindow.restore();
|
||||
mainWindow.show();
|
||||
mainWindow.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
// Someone tried to run a second instance, we should focus our window.
|
||||
if (mainWindow) {
|
||||
if (mainWindow.isMinimized()) mainWindow.restore();
|
||||
mainWindow.show();
|
||||
mainWindow.focus();
|
||||
}
|
||||
});
|
||||
mainWindow.webContents.setWindowOpenHandler(({url}) => {
|
||||
// Allow about:blank (used by Vencord QuickCss popup)
|
||||
if (url === "about:blank") return {action: "allow"};
|
||||
|
@ -273,6 +267,7 @@ export function createCustomWindow() {
|
|||
darkTheme: true,
|
||||
icon: iconPath,
|
||||
frame: false,
|
||||
backgroundColor: "#202225",
|
||||
autoHideMenuBar: true,
|
||||
webPreferences: {
|
||||
sandbox: false,
|
||||
|
@ -291,6 +286,7 @@ export function createNativeWindow() {
|
|||
icon: iconPath,
|
||||
show: false,
|
||||
frame: true,
|
||||
backgroundColor: "#202225",
|
||||
autoHideMenuBar: true,
|
||||
webPreferences: {
|
||||
sandbox: false,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue