Open settings with shortcut (#1655)

* Open settings with shortcut. Also add settings to menubar.
This commit is contained in:
Martín González Gómez
2026-02-07 17:19:05 -06:00
committed by GitHub
parent 7cecd859ae
commit 668de93829
3 changed files with 37 additions and 2 deletions
+18 -2
View File
@@ -21,6 +21,14 @@ export default class MenuBuilder {
selector: 'orderFrontStandardAboutPanel:', selector: 'orderFrontStandardAboutPanel:',
}, },
{ type: 'separator' }, { type: 'separator' },
{
accelerator: 'Command+,',
click: () => {
this.mainWindow.webContents.send('renderer-open-settings');
},
label: 'Settings',
},
{ type: 'separator' },
{ label: 'Services', submenu: [] }, { label: 'Services', submenu: [] },
{ type: 'separator' }, { type: 'separator' },
{ {
@@ -151,8 +159,8 @@ export default class MenuBuilder {
return [subMenuAbout, subMenuEdit, subMenuView, subMenuWindow, subMenuHelp]; return [subMenuAbout, subMenuEdit, subMenuView, subMenuWindow, subMenuHelp];
} }
buildDefaultTemplate() { buildDefaultTemplate(): MenuItemConstructorOptions[] {
const templateDefault = [ const templateDefault: MenuItemConstructorOptions[] = [
{ {
label: '&File', label: '&File',
submenu: [ submenu: [
@@ -160,6 +168,14 @@ export default class MenuBuilder {
accelerator: 'Ctrl+O', accelerator: 'Ctrl+O',
label: '&Open', label: '&Open',
}, },
{
accelerator: 'Ctrl+,',
click: () => {
this.mainWindow.webContents.send('renderer-open-settings');
},
label: '&Settings...',
},
{ type: 'separator' },
{ {
accelerator: 'Ctrl+W', accelerator: 'Ctrl+W',
click: () => { click: () => {
+5
View File
@@ -61,6 +61,10 @@ const forceGarbageCollection = (): boolean => {
} }
}; };
const rendererOpenSettings = (cb: (event: IpcRendererEvent) => void) => {
ipcRenderer.on('renderer-open-settings', cb);
};
export const utils = { export const utils = {
checkForUpdates, checkForUpdates,
disableAutoUpdates, disableAutoUpdates,
@@ -74,6 +78,7 @@ export const utils = {
openApplicationDirectory, openApplicationDirectory,
openItem, openItem,
playerErrorListener, playerErrorListener,
rendererOpenSettings,
}; };
export type Utils = typeof utils; export type Utils = typeof utils;
+14
View File
@@ -10,6 +10,7 @@ import isElectron from 'is-electron';
import { lazy, Suspense, useEffect, useMemo, useRef, useState } from 'react'; import { lazy, Suspense, useEffect, useMemo, useRef, useState } from 'react';
import i18n from '/@/i18n/i18n'; import i18n from '/@/i18n/i18n';
import { openSettingsModal } from '/@/renderer/features/settings/utils/open-settings-modal';
import { WebAudioContext } from '/@/renderer/features/player/context/webaudio-context'; import { WebAudioContext } from '/@/renderer/features/player/context/webaudio-context';
import { useCheckForUpdates } from '/@/renderer/hooks/use-check-for-updates'; import { useCheckForUpdates } from '/@/renderer/hooks/use-check-for-updates';
import { useSyncSettingsToMain } from '/@/renderer/hooks/use-sync-settings-to-main'; import { useSyncSettingsToMain } from '/@/renderer/hooks/use-sync-settings-to-main';
@@ -79,6 +80,19 @@ export const App = () => {
} }
}, [language]); }, [language]);
useEffect(() => {
if (isElectron()) {
window.api.utils.rendererOpenSettings(() => {
openSettingsModal();
});
return () => {
ipc?.removeAllListeners('renderer-open-settings');
};
}
return undefined;
}, []);
const notificationStyles = useMemo( const notificationStyles = useMemo(
() => ({ () => ({
root: { root: {