Skip to content

Commit 1a26846

Browse files
committed
Add accessibility API status to menu item
1 parent 5d6b7e3 commit 1a26846

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

ExtensionService/AppDelegate+Menu.swift

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ extension AppDelegate {
1212
.init("xcodeInspectorDebugMenu")
1313
}
1414

15+
fileprivate var accessibilityAPIPermissionMenuItemIdentifier: NSUserInterfaceItemIdentifier {
16+
.init("accessibilitAPIPermissionMenuItem")
17+
}
18+
1519
@objc func buildStatusBarMenu() {
1620
let statusBar = NSStatusBar.system
1721
statusBarItem = statusBar.statusItem(
@@ -61,6 +65,13 @@ extension AppDelegate {
6165
xcodeInspectorDebug.submenu = xcodeInspectorDebugMenu
6266
xcodeInspectorDebug.isHidden = false
6367

68+
let accessibilityAPIPermission = NSMenuItem(
69+
title: "Accessibility API Permission: N/A",
70+
action: nil,
71+
keyEquivalent: ""
72+
)
73+
accessibilityAPIPermission.identifier = accessibilityAPIPermissionMenuItemIdentifier
74+
6475
let quitItem = NSMenuItem(
6576
title: "Quit",
6677
action: #selector(quit),
@@ -75,6 +86,7 @@ extension AppDelegate {
7586
statusBarMenu.addItem(openGlobalChat)
7687
statusBarMenu.addItem(.separator())
7788
statusBarMenu.addItem(xcodeInspectorDebug)
89+
statusBarMenu.addItem(accessibilityAPIPermission)
7890
statusBarMenu.addItem(quitItem)
7991

8092
statusBarMenu.delegate = self
@@ -92,6 +104,15 @@ extension AppDelegate: NSMenuDelegate {
92104
xcodeInspectorDebug.isHidden = !UserDefaults.shared
93105
.value(for: \.enableXcodeInspectorDebugMenu)
94106
}
107+
108+
if let accessibilityAPIPermission = menu.items.first(where: { item in
109+
item.identifier == accessibilityAPIPermissionMenuItemIdentifier
110+
}) {
111+
AXIsProcessTrusted()
112+
accessibilityAPIPermission.title =
113+
"Accessibility API Permission: \(AXIsProcessTrusted() ? "Granted" : "Not Granted")"
114+
}
115+
95116
case xcodeInspectorDebugMenuIdentifier:
96117
let inspector = XcodeInspector.shared
97118
menu.items.removeAll()
@@ -117,7 +138,7 @@ extension AppDelegate: NSMenuDelegate {
117138
.append(.text("Active Workspace: \(xcode.workspaceURL?.path ?? "N/A")"))
118139
xcodeMenu.items
119140
.append(.text("Active Document: \(xcode.documentURL?.path ?? "N/A")"))
120-
141+
121142
for (key, workspace) in xcode.realtimeWorkspaces {
122143
let workspaceItem = NSMenuItem(
123144
title: "Workspace \(key)",
@@ -157,3 +178,4 @@ private extension NSMenuItem {
157178
return item
158179
}
159180
}
181+

0 commit comments

Comments
 (0)