@@ -12,6 +12,7 @@ import { Box, Flex } from "@radix-ui/themes";
1212import { useNavigationStore } from "@stores/navigationStore" ;
1313import { useCallback , useState } from "react" ;
1414import { Toaster } from "sonner" ;
15+ import { trpcReact } from "@/renderer/trpc" ;
1516import { useTaskDeepLink } from "../hooks/useTaskDeepLink" ;
1617import { GlobalEventHandlers } from "./GlobalEventHandlers" ;
1718
@@ -27,6 +28,58 @@ export function MainLayout() {
2728 setCommandMenuOpen ( ( prev ) => ! prev ) ;
2829 } , [ ] ) ;
2930
31+ useHotkeys ( "mod+k" , ( ) => setCommandMenuOpen ( ( prev ) => ! prev ) , {
32+ enabled : ! commandMenuOpen ,
33+ } ) ;
34+ useHotkeys ( "mod+t" , ( ) => setCommandMenuOpen ( ( prev ) => ! prev ) , {
35+ enabled : ! commandMenuOpen ,
36+ } ) ;
37+ useHotkeys ( "mod+p" , ( ) => setCommandMenuOpen ( ( prev ) => ! prev ) , {
38+ enabled : ! commandMenuOpen ,
39+ } ) ;
40+ useHotkeys ( "mod+n" , ( ) => handleFocusTaskMode ( ) ) ;
41+ useHotkeys ( "mod+," , ( ) => handleOpenSettings ( ) ) ;
42+ useHotkeys ( "mod+[" , ( ) => goBack ( ) ) ;
43+ useHotkeys ( "mod+]" , ( ) => goForward ( ) ) ;
44+ useHotkeys ( "mod+b" , ( ) => toggleLeftSidebar ( ) ) ;
45+ useHotkeys ( "mod+shift+b" , ( ) => toggleRightSidebar ( ) ) ;
46+
47+ // Subscribe to UI events from main process via tRPC
48+ trpcReact . ui . onOpenSettings . useSubscription ( undefined , {
49+ onData : ( ) => handleOpenSettings ( ) ,
50+ } ) ;
51+
52+ trpcReact . ui . onNewTask . useSubscription ( undefined , {
53+ onData : ( ) => handleFocusTaskMode ( ) ,
54+ } ) ;
55+
56+ trpcReact . ui . onResetLayout . useSubscription ( undefined , {
57+ onData : ( ) => handleResetLayout ( ) ,
58+ } ) ;
59+
60+ trpcReact . ui . onClearStorage . useSubscription ( undefined , {
61+ onData : ( ) => handleClearStorage ( ) ,
62+ } ) ;
63+
64+ useEffect ( ( ) => {
65+ const handleMouseButton = ( event : MouseEvent ) => {
66+ if ( event . button === 3 ) {
67+ // Button 3 = back
68+ event . preventDefault ( ) ;
69+ goBack ( ) ;
70+ } else if ( event . button === 4 ) {
71+ // Button 4 = forward
72+ event . preventDefault ( ) ;
73+ goForward ( ) ;
74+ }
75+ } ;
76+
77+ window . addEventListener ( "mouseup" , handleMouseButton ) ;
78+ return ( ) => {
79+ window . removeEventListener ( "mouseup" , handleMouseButton ) ;
80+ } ;
81+ } , [ goBack , goForward ] ) ;
82+
3083 return (
3184 < Flex direction = "column" height = "100vh" >
3285 < HeaderRow />
0 commit comments