diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 15f470e1..3eb362f0 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -580,6 +580,7 @@ "hotkey_favoritePreviousSong": "favorite $t(common.previousSong)", "hotkey_globalSearch": "global search", "hotkey_localSearch": "in-page search", + "hotkey_navigateHome": "navigate to home", "hotkey_playbackNext": "next track", "hotkey_playbackPause": "pause", "hotkey_playbackPlay": "play", diff --git a/src/renderer/features/settings/components/hotkeys/hotkey-manager-settings.tsx b/src/renderer/features/settings/components/hotkeys/hotkey-manager-settings.tsx index 1a126569..25faedf7 100644 --- a/src/renderer/features/settings/components/hotkeys/hotkey-manager-settings.tsx +++ b/src/renderer/features/settings/components/hotkeys/hotkey-manager-settings.tsx @@ -52,6 +52,10 @@ const BINDINGS_MAP: Record = { postProcess: 'sentenceCase', }), localSearch: i18n.t('setting.hotkey', { context: 'localSearch', postProcess: 'sentenceCase' }), + navigateHome: i18n.t('setting.hotkey', { + context: 'navigateHome', + postProcess: 'sentenceCase', + }), next: i18n.t('setting.hotkey', { context: 'playbackNext', postProcess: 'sentenceCase' }), pause: i18n.t('setting.hotkey', { context: 'playbackPause', postProcess: 'sentenceCase' }), play: i18n.t('setting.hotkey', { context: 'playbackPlay', postProcess: 'sentenceCase' }), diff --git a/src/renderer/layouts/default-layout.tsx b/src/renderer/layouts/default-layout.tsx index 846057fa..8d9b8bf2 100644 --- a/src/renderer/layouts/default-layout.tsx +++ b/src/renderer/layouts/default-layout.tsx @@ -10,6 +10,7 @@ import { ContextMenuProvider } from '/@/renderer/features/context-menu'; import { CommandPalette } from '/@/renderer/features/search/components/command-palette'; import { MainContent } from '/@/renderer/layouts/default-layout/main-content'; import { PlayerBar } from '/@/renderer/layouts/default-layout/player-bar'; +import { AppRoute } from '/@/renderer/router/routes'; import { useCommandPalette } from '/@/renderer/store'; import { useGeneralSettings, @@ -70,6 +71,7 @@ export const DefaultLayout = ({ shell }: DefaultLayoutProps) => { [bindings.globalSearch.hotkey, () => handlers.open()], [bindings.browserBack.hotkey, () => navigate(-1)], [bindings.browserForward.hotkey, () => navigate(1)], + [bindings.navigateHome.hotkey, () => navigate(AppRoute.HOME)], ...(isElectron() ? zoomHotkeys : []), ]); diff --git a/src/renderer/store/settings.store.ts b/src/renderer/store/settings.store.ts index b07baef0..de1e0308 100644 --- a/src/renderer/store/settings.store.ts +++ b/src/renderer/store/settings.store.ts @@ -133,6 +133,7 @@ export enum BindingActions { GLOBAL_SEARCH = 'globalSearch', LOCAL_SEARCH = 'localSearch', MUTE = 'volumeMute', + NAVIGATE_HOME = 'navigateHome', NEXT = 'next', PAUSE = 'pause', PLAY = 'play', @@ -426,6 +427,7 @@ const initialState: SettingsState = { favoritePreviousToggle: { allowGlobal: true, hotkey: '', isGlobal: false }, globalSearch: { allowGlobal: false, hotkey: 'mod+k', isGlobal: false }, localSearch: { allowGlobal: false, hotkey: 'mod+f', isGlobal: false }, + navigateHome: { allowGlobal: false, hotkey: '', isGlobal: false }, next: { allowGlobal: true, hotkey: '', isGlobal: false }, pause: { allowGlobal: true, hotkey: '', isGlobal: false }, play: { allowGlobal: true, hotkey: '', isGlobal: false },