@@ -42,8 +42,8 @@ public func menuBar(viewModel: TrayMenuModel) -> some Scene { // todo should it
42
42
}
43
43
} . keyboardShortcut ( " E " , modifiers: . command)
44
44
getExperimentalUISettingsMenu ( viewModel: viewModel)
45
- openConfigButton
46
- reloadConfigButton
45
+ openConfigButton ( )
46
+ reloadConfigButton ( )
47
47
Button ( " Quit \( aeroSpaceAppName) " ) {
48
48
Task {
49
49
defer { terminateApp ( ) }
@@ -70,9 +70,10 @@ public func menuBar(viewModel: TrayMenuModel) -> some Scene { // todo should it
70
70
}
71
71
}
72
72
73
- var openConfigButton : some View {
73
+ @MainActor @ViewBuilder
74
+ func openConfigButton( showShortcutGroup: Bool = false ) -> some View {
74
75
let editor = getTextEditorToOpenConfig ( )
75
- return Button ( " Open config in ' \( editor. lastPathComponent) ' " ) {
76
+ let button = Button ( " Open config in ' \( editor. lastPathComponent) ' " ) {
76
77
let fallbackConfig : URL = FileManager . default. homeDirectoryForCurrentUser. appending ( path: configDotfileName)
77
78
switch findCustomConfigUrl ( ) {
78
79
case . file( let url) :
@@ -84,16 +85,36 @@ var openConfigButton: some View {
84
85
fallbackConfig. open ( with: editor)
85
86
}
86
87
} . keyboardShortcut ( " , " , modifiers: . command)
88
+ if showShortcutGroup {
89
+ shortcutGroup ( label: Text ( " ⌘ , " ) , content: button)
90
+ } else {
91
+ button
92
+ }
87
93
}
88
94
89
95
@MainActor @ViewBuilder
90
- var reloadConfigButton : some View {
96
+ func reloadConfigButton( showShortcutGroup : Bool = false ) -> some View {
91
97
if let token: RunSessionGuard = . isServerEnabled {
92
- Button ( " Reload config " ) {
98
+ let button = Button ( " Reload config " ) {
93
99
Task {
94
100
try await runSession ( . menuBarButton, token) { _ = reloadConfig ( ) }
95
101
}
96
102
} . keyboardShortcut ( " R " , modifiers: . command)
103
+ if showShortcutGroup {
104
+ shortcutGroup ( label: Text ( " ⌘ R " ) , content: button)
105
+ } else {
106
+ button
107
+ }
108
+ }
109
+ }
110
+
111
+ func shortcutGroup( label: some View , content: some View ) -> some View {
112
+ GroupBox {
113
+ VStack ( alignment: . trailing, spacing: 6 ) {
114
+ label
115
+ . foregroundStyle ( Color . secondary)
116
+ content
117
+ }
97
118
}
98
119
}
99
120
0 commit comments