diff --git a/common/constants/ipcevents.js b/common/constants/ipcevents.js index 6315a1a0..fcdc5a5f 100644 --- a/common/constants/ipcevents.js +++ b/common/constants/ipcevents.js @@ -9,4 +9,5 @@ export const NAVIGATE = "bd-did-navigate-in-page"; export const OPEN_DEVTOOLS = "bd-open-devtools"; export const CLOSE_DEVTOOLS = "bd-close-devtools"; export const OPEN_WINDOW = "bd-open-window"; -export const INSPECT_ELEMENT = "bd-inspect-element"; \ No newline at end of file +export const INSPECT_ELEMENT = "bd-inspect-element"; +export const MINIMUM_SIZE = "bd-minimum-size"; \ No newline at end of file diff --git a/injector/src/modules/betterdiscord.js b/injector/src/modules/betterdiscord.js index 59f4c143..38a5f0fc 100644 --- a/injector/src/modules/betterdiscord.js +++ b/injector/src/modules/betterdiscord.js @@ -22,10 +22,6 @@ electron.app.once("ready", async () => { }); -if (BetterDiscord.getSetting("general", "mediaKeys")) { - electron.app.commandLine.appendSwitch("disable-features", "HardwareMediaKeyHandling,MediaSessionService"); -} - let hasCrashed = false; export default class BetterDiscord { static getWindowPrefs() { @@ -86,6 +82,7 @@ export default class BetterDiscord { } static setup(browserWindow) { + // Setup some useful vars to avoid blocking IPC calls process.env.DISCORD_PRELOAD = browserWindow.__originalPreload; process.env.DISCORD_APP_PATH = appPath; @@ -115,4 +112,8 @@ export default class BetterDiscord { hasCrashed = true; }); } +} + +if (BetterDiscord.getSetting("general", "mediaKeys")) { + electron.app.commandLine.appendSwitch("disable-features", "HardwareMediaKeyHandling,MediaSessionService"); } \ No newline at end of file diff --git a/injector/src/modules/ipc.js b/injector/src/modules/ipc.js index ea4148f0..8870d44a 100644 --- a/injector/src/modules/ipc.js +++ b/injector/src/modules/ipc.js @@ -70,6 +70,11 @@ const inspectElement = async event => { event.sender.devToolsWebContents.executeJavaScript("DevToolsAPI.enterInspectElementMode();"); }; +const setMinimumSize = (event, width, height) => { + const window = BrowserWindow.fromWebContents(event.sender); + window.setMinimumSize(width, height); +}; + export default class IPCMain { static registerEvents() { ipc.on(IPCEvents.GET_PATH, getPath); @@ -77,6 +82,7 @@ export default class IPCMain { ipc.on(IPCEvents.OPEN_DEVTOOLS, openDevTools); ipc.on(IPCEvents.CLOSE_DEVTOOLS, closeDevTools); ipc.on(IPCEvents.INSPECT_ELEMENT, inspectElement); + ipc.on(IPCEvents.MINIMUM_SIZE, setMinimumSize); ipc.handle(IPCEvents.RUN_SCRIPT, runScript); ipc.handle(IPCEvents.OPEN_WINDOW, createBrowserWindow); } diff --git a/renderer/src/builtins/appearance/removeminimumsize.js b/renderer/src/builtins/appearance/removeminimumsize.js new file mode 100644 index 00000000..c1055689 --- /dev/null +++ b/renderer/src/builtins/appearance/removeminimumsize.js @@ -0,0 +1,16 @@ +import Builtin from "../../structs/builtin"; +import IPC from "../../modules/ipc"; + +export default new class RemoveMinimumSize extends Builtin { + get name() {return "RemoveMinimumSize";} + get category() {return "appearance";} + get id() {return "removeMinimumSize";} + + enabled() { + IPC.setMinimumSize(1, 1); + } + + disabled() { + IPC.setMinimumSize(940, 500); + } +}; \ No newline at end of file diff --git a/renderer/src/builtins/builtins.js b/renderer/src/builtins/builtins.js index 538b8f04..64a27bd0 100644 --- a/renderer/src/builtins/builtins.js +++ b/renderer/src/builtins/builtins.js @@ -12,6 +12,7 @@ export {default as ColoredText} from "./appearance/coloredtext"; export {default as HideGIFButton} from "./appearance/hidegifbutton"; export {default as HideGiftButton} from "./appearance/hidegiftbutton"; export {default as MinimalMode} from "./appearance/minimalmode"; +export {default as RemoveMinimumSize} from "./appearance/removeminimumsize"; export {default as EmoteModule} from "./emotes/emotes"; export {default as EmoteMenu} from "./emotes/emotemenu"; diff --git a/renderer/src/data/settings/config.js b/renderer/src/data/settings/config.js index 29941be9..09711f4e 100644 --- a/renderer/src/data/settings/config.js +++ b/renderer/src/data/settings/config.js @@ -20,7 +20,8 @@ export default [ {type: "switch", id: "hideGiftButton", value: false}, {type: "switch", id: "hideGIFButton", value: false}, {type: "switch", id: "minimalMode", value: false}, - {type: "switch", id: "coloredText", value: false} + {type: "switch", id: "coloredText", value: false}, + {type: "switch", id: "removeMinimumSize", value: false} ] }, { diff --git a/renderer/src/data/strings.js b/renderer/src/data/strings.js index a8194b4b..f1f0ed4a 100644 --- a/renderer/src/data/strings.js +++ b/renderer/src/data/strings.js @@ -47,6 +47,10 @@ export default { hideGiftButton: { name: "Hide Gift Button", note: "Hides the Nitro Gift button in the textarea" + }, + removeMinimumSize: { + name: "Remove Minimum Size", + note: "Removes Discord's forced minimum window size of 940x500" } }, addons: { diff --git a/renderer/src/modules/ipc.js b/renderer/src/modules/ipc.js index ca9ef79c..c6728ebc 100644 --- a/renderer/src/modules/ipc.js +++ b/renderer/src/modules/ipc.js @@ -33,6 +33,10 @@ export default new class IPCRenderer { } inspectElement() { - ipc.send(IPCEvents.INSPECT_ELEMENT); + return ipc.send(IPCEvents.INSPECT_ELEMENT); + } + + setMinimumSize(width, height) { + return ipc.send(IPCEvents.MINIMUM_SIZE, width, height); } }; \ No newline at end of file