From 1b41a5a674f379762224a27635f19fb0a18f90df Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Sun, 8 Sep 2024 20:55:07 -0700 Subject: [PATCH] enable disabling tray --- src/i18n/locales/en.json | 2 + src/main/main.ts | 4 +- .../components/window/window-settings.tsx | 52 +++++++++++++++++-- src/renderer/store/settings.store.ts | 2 + 4 files changed, 55 insertions(+), 5 deletions(-) diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 2354ae69..1e759751 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -653,6 +653,8 @@ "transcodeBitrate_description": "selects the bitrate to transcode. 0 means let the server pick", "transcodeFormat": "format to transcode", "transcodeFormat_description": "selects the format to transcode. leave empty to let the server decide", + "trayEnabled": "show tray", + "trayEnabled_description": "show/hide tray icon/menu. if disabled, also disables minimize/exit to tray", "useSystemTheme": "use system theme", "useSystemTheme_description": "follow the system-defined light or dark preference", "volumeWheelStep": "volume wheel step", diff --git a/src/main/main.ts b/src/main/main.ts index df4bda3a..e6efa178 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -647,7 +647,9 @@ if (!singleInstance) { }); createWindow(); - createTray(); + if (store.get('window_enable_tray', true)) { + createTray(); + } app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. diff --git a/src/renderer/features/settings/components/window/window-settings.tsx b/src/renderer/features/settings/components/window/window-settings.tsx index cb9fdcb4..c4dc060f 100644 --- a/src/renderer/features/settings/components/window/window-settings.tsx +++ b/src/renderer/features/settings/components/window/window-settings.tsx @@ -81,11 +81,55 @@ export const WindowSettings = () => { isHidden: !isElectron(), title: t('setting.windowBarStyle', { postProcess: 'sentenceCase' }), }, + { + control: ( + { + if (!e) return; + localSettings?.set('window_enable_tray', e.currentTarget.checked); + if (e.currentTarget.checked) { + setSettings({ + window: { + ...settings, + tray: true, + }, + }); + } else { + localSettings?.set('window_start_minimized', false); + localSettings?.set('window_exit_to_tray', false); + localSettings?.set('window_minimize_to_tray', false); + + setSettings({ + window: { + ...settings, + exitToTray: false, + minimizeToTray: false, + startMinimized: false, + tray: false, + }, + }); + } + }} + /> + ), + description: t('setting.trayEnabled', { + context: 'description', + postProcess: 'sentenceCase', + }), + isHidden: !isElectron(), + note: t('common.restartRequired', { + postProcess: 'sentenceCase', + }), + title: t('setting.trayEnabled', { postProcess: 'sentenceCase' }), + }, { control: ( { if (!e) return; @@ -103,7 +147,7 @@ export const WindowSettings = () => { context: 'description', postProcess: 'sentenceCase', }), - isHidden: !isElectron(), + isHidden: !isElectron() || !settings.tray, title: t('setting.minimizeToTray', { postProcess: 'sentenceCase' }), }, { @@ -128,7 +172,7 @@ export const WindowSettings = () => { context: 'description', postProcess: 'sentenceCase', }), - isHidden: !isElectron(), + isHidden: !isElectron() || !settings.tray, title: t('setting.exitToTray', { postProcess: 'sentenceCase' }), }, { @@ -153,7 +197,7 @@ export const WindowSettings = () => { context: 'description', postProcess: 'sentenceCase', }), - isHidden: !isElectron(), + isHidden: !isElectron() || !settings.tray, title: t('setting.startMinimized', { postProcess: 'sentenceCase' }), }, ]; diff --git a/src/renderer/store/settings.store.ts b/src/renderer/store/settings.store.ts index 99a3ac21..db64dece 100644 --- a/src/renderer/store/settings.store.ts +++ b/src/renderer/store/settings.store.ts @@ -313,6 +313,7 @@ export interface SettingsState { exitToTray: boolean; minimizeToTray: boolean; startMinimized: boolean; + tray: boolean; windowBarStyle: Platform; }; } @@ -647,6 +648,7 @@ const initialState: SettingsState = { exitToTray: false, minimizeToTray: false, startMinimized: false, + tray: true, windowBarStyle: platformDefaultWindowBarStyle, }, };