@@ -159,7 +159,7 @@ fn show_in_file_manager_label() -> &'static str {
159159
160160#[ cfg( not( target_os = "macos" ) ) ]
161161fn show_in_file_manager_label ( ) -> & ' static str {
162- "Show in file manager"
162+ "Show in & file manager"
163163}
164164
165165/// Builds the application menu with default macOS items plus a custom View and File submenu enhancements.
@@ -481,8 +481,8 @@ fn build_menu_linux<R: Runtime>(
481481 let menu = Menu :: new ( app) ?;
482482
483483 // --- File menu ---
484- let open_item = MenuItem :: with_id ( app, OPEN_ID , "Open" , true , None :: < & str > ) ?;
485- let edit_item = MenuItem :: with_id ( app, EDIT_ID , "Edit" , true , Some ( "F4" ) ) ?;
484+ let open_item = MenuItem :: with_id ( app, OPEN_ID , "& Open" , true , None :: < & str > ) ?;
485+ let edit_item = MenuItem :: with_id ( app, EDIT_ID , "& Edit" , true , Some ( "F4" ) ) ?;
486486 let show_in_fm_item = MenuItem :: with_id (
487487 app,
488488 SHOW_IN_FINDER_ID ,
@@ -493,18 +493,18 @@ fn build_menu_linux<R: Runtime>(
493493 let copy_path_item = MenuItem :: with_id (
494494 app,
495495 COPY_PATH_ID ,
496- "Copy path to clipboard" ,
496+ "Copy & path to clipboard" ,
497497 true ,
498498 Some ( copy_path_accelerator ( ) ) ,
499499 ) ?;
500- let copy_filename_item = MenuItem :: with_id ( app, COPY_FILENAME_ID , "Copy filename " , true , None :: < & str > ) ?;
501- let new_tab_item = MenuItem :: with_id ( app, NEW_TAB_ID , "New tab" , true , Some ( "Cmd+T" ) ) ?;
502- let pin_tab_item = MenuItem :: with_id ( app, PIN_TAB_MENU_ID , "Pin tab" , true , None :: < & str > ) ?;
503- let close_tab_item = MenuItem :: with_id ( app, CLOSE_TAB_ID , "Close tab" , true , Some ( "Cmd+W" ) ) ?;
500+ let copy_filename_item = MenuItem :: with_id ( app, COPY_FILENAME_ID , "Copy file&name " , true , None :: < & str > ) ?;
501+ let new_tab_item = MenuItem :: with_id ( app, NEW_TAB_ID , "New & tab" , true , Some ( "Cmd+T" ) ) ?;
502+ let pin_tab_item = MenuItem :: with_id ( app, PIN_TAB_MENU_ID , "P&in tab" , true , None :: < & str > ) ?;
503+ let close_tab_item = MenuItem :: with_id ( app, CLOSE_TAB_ID , "& Close tab" , true , Some ( "Cmd+W" ) ) ?;
504504
505505 let file_menu = Submenu :: with_items (
506506 app,
507- "File" ,
507+ "& File" ,
508508 true ,
509509 & [
510510 & open_item,
@@ -521,27 +521,30 @@ fn build_menu_linux<R: Runtime>(
521521 menu. append ( & file_menu) ?;
522522
523523 // --- Edit menu ---
524- let rename_item = MenuItem :: with_id ( app, RENAME_ID , "Rename" , true , Some ( "F2" ) ) ?;
525- let settings_item = MenuItem :: with_id ( app, SETTINGS_ID , "Settings..." , true , Some ( "Cmd+," ) ) ?;
524+ // No accelerator — F2 is handled by the webview's centralized shortcut dispatch.
525+ // GTK menu accelerators intercept keys before they reach the webview, and the
526+ // is_focused() check in on_menu_event fails on Linux, so F2 rename never fires.
527+ let rename_item = MenuItem :: with_id ( app, RENAME_ID , "Re&name" , true , None :: < & str > ) ?;
528+ let settings_item = MenuItem :: with_id ( app, SETTINGS_ID , "&Settings..." , true , Some ( "Cmd+," ) ) ?;
526529 let license_label = if has_existing_license {
527- "See license details..."
530+ "See & license details..."
528531 } else {
529- "Enter license key..."
532+ "Enter & license key..."
530533 } ;
531534 let license_item = MenuItem :: with_id ( app, ENTER_LICENSE_KEY_ID , license_label, true , None :: < & str > ) ?;
532535
533536 let edit_menu = Submenu :: with_items (
534537 app,
535- "Edit" ,
538+ "& Edit" ,
536539 true ,
537540 & [
538- & PredefinedMenuItem :: undo ( app, None ) ?,
539- & PredefinedMenuItem :: redo ( app, None ) ?,
541+ & PredefinedMenuItem :: undo ( app, Some ( "&Undo" ) ) ?,
542+ & PredefinedMenuItem :: redo ( app, Some ( "&Redo" ) ) ?,
540543 & PredefinedMenuItem :: separator ( app) ?,
541- & PredefinedMenuItem :: cut ( app, None ) ?,
542- & PredefinedMenuItem :: copy ( app, None ) ?,
543- & PredefinedMenuItem :: paste ( app, None ) ?,
544- & PredefinedMenuItem :: select_all ( app, None ) ?,
544+ & PredefinedMenuItem :: cut ( app, Some ( "Cu&t" ) ) ?,
545+ & PredefinedMenuItem :: copy ( app, Some ( "&Copy" ) ) ?,
546+ & PredefinedMenuItem :: paste ( app, Some ( "&Paste" ) ) ?,
547+ & PredefinedMenuItem :: select_all ( app, Some ( "Select &all" ) ) ?,
545548 & PredefinedMenuItem :: separator ( app) ?,
546549 & rename_item,
547550 & PredefinedMenuItem :: separator ( app) ?,
@@ -555,39 +558,39 @@ fn build_menu_linux<R: Runtime>(
555558 let view_mode_full_item = CheckMenuItem :: with_id (
556559 app,
557560 VIEW_MODE_FULL_ID ,
558- "Full view" ,
561+ "& Full view" ,
559562 true ,
560563 view_mode == ViewMode :: Full ,
561564 Some ( "Cmd+1" ) ,
562565 ) ?;
563566 let view_mode_brief_item = CheckMenuItem :: with_id (
564567 app,
565568 VIEW_MODE_BRIEF_ID ,
566- "Brief view" ,
569+ "& Brief view" ,
567570 true ,
568571 view_mode == ViewMode :: Brief ,
569572 Some ( "Cmd+2" ) ,
570573 ) ?;
571574 let show_hidden_item = CheckMenuItem :: with_id (
572575 app,
573576 SHOW_HIDDEN_FILES_ID ,
574- "Show hidden files" ,
577+ "Show & hidden files" ,
575578 true ,
576579 show_hidden_files,
577580 Some ( "Cmd+Shift+." ) ,
578581 ) ?;
579582
580583 // Sort by submenu
581- let sort_by_name = MenuItem :: with_id ( app, SORT_BY_NAME_ID , "Name" , true , None :: < & str > ) ?;
582- let sort_by_ext = MenuItem :: with_id ( app, SORT_BY_EXTENSION_ID , "Extension" , true , None :: < & str > ) ?;
583- let sort_by_size = MenuItem :: with_id ( app, SORT_BY_SIZE_ID , "Size" , true , None :: < & str > ) ?;
584- let sort_by_modified = MenuItem :: with_id ( app, SORT_BY_MODIFIED_ID , "Date modified" , true , None :: < & str > ) ?;
585- let sort_by_created = MenuItem :: with_id ( app, SORT_BY_CREATED_ID , "Date created" , true , None :: < & str > ) ?;
586- let sort_asc = MenuItem :: with_id ( app, SORT_ASCENDING_ID , "Ascending" , true , None :: < & str > ) ?;
587- let sort_desc = MenuItem :: with_id ( app, SORT_DESCENDING_ID , "Descending" , true , None :: < & str > ) ?;
584+ let sort_by_name = MenuItem :: with_id ( app, SORT_BY_NAME_ID , "& Name" , true , None :: < & str > ) ?;
585+ let sort_by_ext = MenuItem :: with_id ( app, SORT_BY_EXTENSION_ID , "& Extension" , true , None :: < & str > ) ?;
586+ let sort_by_size = MenuItem :: with_id ( app, SORT_BY_SIZE_ID , "& Size" , true , None :: < & str > ) ?;
587+ let sort_by_modified = MenuItem :: with_id ( app, SORT_BY_MODIFIED_ID , "Date & modified" , true , None :: < & str > ) ?;
588+ let sort_by_created = MenuItem :: with_id ( app, SORT_BY_CREATED_ID , "Date & created" , true , None :: < & str > ) ?;
589+ let sort_asc = MenuItem :: with_id ( app, SORT_ASCENDING_ID , "& Ascending" , true , None :: < & str > ) ?;
590+ let sort_desc = MenuItem :: with_id ( app, SORT_DESCENDING_ID , "& Descending" , true , None :: < & str > ) ?;
588591 let sort_submenu = Submenu :: with_items (
589592 app,
590- "Sort by" ,
593+ "& Sort by" ,
591594 true ,
592595 & [
593596 & sort_by_name,
@@ -601,14 +604,19 @@ fn build_menu_linux<R: Runtime>(
601604 ] ,
602605 ) ?;
603606
604- let command_palette_item =
605- MenuItem :: with_id ( app, COMMAND_PALETTE_ID , "Command palette..." , true , Some ( "Cmd+Shift+P" ) ) ?;
606- let switch_pane_item = MenuItem :: with_id ( app, SWITCH_PANE_ID , "Switch pane" , true , Some ( "Tab" ) ) ?;
607- let swap_panes_item = MenuItem :: with_id ( app, SWAP_PANES_ID , "Swap panes" , true , Some ( "Cmd+U" ) ) ?;
607+ let command_palette_item = MenuItem :: with_id (
608+ app,
609+ COMMAND_PALETTE_ID ,
610+ "&Command palette..." ,
611+ true ,
612+ Some ( "Cmd+Shift+P" ) ,
613+ ) ?;
614+ let switch_pane_item = MenuItem :: with_id ( app, SWITCH_PANE_ID , "S&witch pane" , true , Some ( "Tab" ) ) ?;
615+ let swap_panes_item = MenuItem :: with_id ( app, SWAP_PANES_ID , "Swa&p panes" , true , Some ( "Cmd+U" ) ) ?;
608616
609617 let view_submenu = Submenu :: with_items (
610618 app,
611- "View" ,
619+ "& View" ,
612620 true ,
613621 & [
614622 & view_mode_full_item,
@@ -629,13 +637,13 @@ fn build_menu_linux<R: Runtime>(
629637 let view_brief_pos: usize = 1 ;
630638
631639 // --- Go menu ---
632- let go_back_item = MenuItem :: with_id ( app, GO_BACK_ID , "Back" , true , Some ( "Cmd+[" ) ) ?;
633- let go_forward_item = MenuItem :: with_id ( app, GO_FORWARD_ID , "Forward" , true , Some ( "Cmd+]" ) ) ?;
634- let go_parent_item = MenuItem :: with_id ( app, GO_PARENT_ID , "Parent folder" , true , Some ( "Cmd+Up" ) ) ?;
640+ let go_back_item = MenuItem :: with_id ( app, GO_BACK_ID , "& Back" , true , Some ( "Cmd+[" ) ) ?;
641+ let go_forward_item = MenuItem :: with_id ( app, GO_FORWARD_ID , "& Forward" , true , Some ( "Cmd+]" ) ) ?;
642+ let go_parent_item = MenuItem :: with_id ( app, GO_PARENT_ID , "& Parent folder" , true , Some ( "Cmd+Up" ) ) ?;
635643
636644 let go_menu = Submenu :: with_items (
637645 app,
638- "Go" ,
646+ "& Go" ,
639647 true ,
640648 & [
641649 & go_back_item,
@@ -647,8 +655,8 @@ fn build_menu_linux<R: Runtime>(
647655 menu. append ( & go_menu) ?;
648656
649657 // --- Help menu ---
650- let about_item = MenuItem :: with_id ( app, ABOUT_ID , "About cmdr" , true , None :: < & str > ) ?;
651- let help_menu = Submenu :: with_items ( app, "Help" , true , & [ & about_item] ) ?;
658+ let about_item = MenuItem :: with_id ( app, ABOUT_ID , "& About cmdr" , true , None :: < & str > ) ?;
659+ let help_menu = Submenu :: with_items ( app, "& Help" , true , & [ & about_item] ) ?;
652660 menu. append ( & help_menu) ?;
653661
654662 Ok ( MenuItems {
@@ -747,8 +755,8 @@ pub fn build_viewer_menu<R: Runtime>(app: &AppHandle<R>) -> tauri::Result<Menu<R
747755 {
748756 let menu = Menu :: new ( app) ?;
749757
750- let word_wrap_item = CheckMenuItem :: with_id ( app, VIEWER_WORD_WRAP_ID , "Word wrap" , true , false , None :: < & str > ) ?;
751- let view_submenu = Submenu :: with_items ( app, "View" , true , & [ & word_wrap_item] ) ?;
758+ let word_wrap_item = CheckMenuItem :: with_id ( app, VIEWER_WORD_WRAP_ID , "& Word wrap" , true , false , None :: < & str > ) ?;
759+ let view_submenu = Submenu :: with_items ( app, "& View" , true , & [ & word_wrap_item] ) ?;
752760 menu. append ( & view_submenu) ?;
753761
754762 Ok ( menu)
@@ -874,14 +882,14 @@ pub fn update_view_mode_accelerator<R: Runtime>(
874882 menu_state. view_mode_full . lock_ignore_poison ( ) ,
875883 menu_state. view_mode_full_position . lock_ignore_poison ( ) ,
876884 VIEW_MODE_FULL_ID ,
877- "Full view" ,
885+ "& Full view" ,
878886 )
879887 } else {
880888 (
881889 menu_state. view_mode_brief . lock_ignore_poison ( ) ,
882890 menu_state. view_mode_brief_position . lock_ignore_poison ( ) ,
883891 VIEW_MODE_BRIEF_ID ,
884- "Brief view" ,
892+ "& Brief view" ,
885893 )
886894 } ;
887895
0 commit comments