Make clicking notifications focus VC Desktop

This commit is contained in:
Vendicated 2023-04-05 05:19:48 +02:00
parent 2efed86b71
commit cf23b6d028
No known key found for this signature in database
GPG key ID: A1DC0CFB5615D905
7 changed files with 36 additions and 7 deletions

5
src/globals.d.ts vendored Normal file
View file

@ -0,0 +1,5 @@
declare global {
export var VencordDesktop: typeof import("./preload/VencordDesktop").VencordDesktop;
}
export { };

View file

@ -1,8 +1,9 @@
import { app, ipcMain, shell } from "electron";
import { readFileSync } from "fs";
import { join } from "path";
import { GET_RENDERER_SCRIPT, GET_SETTINGS, GET_VENCORD_PRELOAD_FILE, RELAUNCH, SET_SETTINGS, SHOW_IN_FOLDER } from "../shared/IpcEvents";
import { FOCUS, GET_RENDERER_SCRIPT, GET_SETTINGS, GET_VENCORD_PRELOAD_FILE, RELAUNCH, SET_SETTINGS, SHOW_ITEM_IN_FOLDER } from "../shared/IpcEvents";
import { VENCORD_FILES_DIR } from "./constants";
import { mainWin } from "./mainWindow";
import { PlainSettings, setSettings } from "./settings";
ipcMain.on(GET_VENCORD_PRELOAD_FILE, e => {
@ -26,6 +27,10 @@ ipcMain.handle(RELAUNCH, () => {
app.exit();
});
ipcMain.handle(SHOW_IN_FOLDER, (_, path) => {
ipcMain.handle(SHOW_ITEM_IN_FOLDER, (_, path) => {
shell.showItemInFolder(path);
});
ipcMain.handle(FOCUS, () => {
mainWin?.focus();
});

View file

@ -9,6 +9,8 @@ app.on("before-quit", () => {
isQuitting = true;
});
export let mainWin: BrowserWindow;
function initWindowOpenHandler(win: BrowserWindow) {
win.webContents.setWindowOpenHandler(({ url }) => {
switch (url) {
@ -115,7 +117,7 @@ function initWindowBoundsListeners(win: BrowserWindow) {
}
export function createMainWindow() {
const win = new BrowserWindow({
const win = mainWin = new BrowserWindow({
show: false,
autoHideMenuBar: true,
webPreferences: {

View file

@ -1,17 +1,20 @@
import { ipcRenderer } from "electron";
import type { Settings } from "../main/settings";
import { GET_SETTINGS, RELAUNCH, SET_SETTINGS, SHOW_IN_FOLDER } from "../shared/IpcEvents";
import { FOCUS, GET_SETTINGS, RELAUNCH, SET_SETTINGS, SHOW_ITEM_IN_FOLDER } from "../shared/IpcEvents";
export const VencordDesktop = {
app: {
relaunch: () => ipcRenderer.invoke(RELAUNCH)
},
files: {
showInFolder: (path: string) => ipcRenderer.invoke(SHOW_IN_FOLDER, path)
fileManager: {
showItemInFolder: (path: string) => ipcRenderer.invoke(SHOW_ITEM_IN_FOLDER, path)
},
settings: {
get: () => ipcRenderer.sendSync(GET_SETTINGS),
set: (settings: typeof Settings) => ipcRenderer.invoke(SET_SETTINGS, settings)
},
win: {
focus: () => ipcRenderer.invoke(FOCUS)
}
}

11
src/renderer/fixes.ts Normal file
View file

@ -0,0 +1,11 @@
// Make clicking Notifications focus the window
const originalSetOnClick = Object.getOwnPropertyDescriptor(Notification.prototype, "onclick")!.set!;
Object.defineProperty(Notification.prototype, "onclick", {
set(onClick) {
originalSetOnClick.call(this, function () {
onClick.apply(this, arguments);
VencordDesktop.win.focus();
});
},
configurable: true
});

View file

@ -1 +1,3 @@
import "./fixes";
console.log("read if cute :3");

View file

@ -1,6 +1,7 @@
export const GET_VENCORD_PRELOAD_FILE = "VCD_GET_VC_PRELOAD_FILE";
export const GET_RENDERER_SCRIPT = "VCD_GET_RENDERER_SCRIPT";
export const RELAUNCH = "VCD_RELAUNCH";
export const SHOW_IN_FOLDER = "VCD_SHOW_IN_FOLDER";
export const SHOW_ITEM_IN_FOLDER = "VCD_SHOW_ITEM_IN_FOLDER";
export const GET_SETTINGS = "VCD_GET_SETTINGS";
export const SET_SETTINGS = "VCD_SET_SETTINGS";
export const FOCUS = "VC_FOCUS";