Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App doesn’t work without Screen Recording permission granted #3819

Closed
michkozak opened this issue Nov 6, 2024 · 28 comments
Closed

App doesn’t work without Screen Recording permission granted #3819

michkozak opened this issue Nov 6, 2024 · 28 comments
Labels
bug Something isn't working unreproducible Need help from the author to reproduce the issue

Comments

@michkozak
Copy link

I don't want to give AltTab permissions to record my screen, I don't need it to show me window thumbnails, I'm perfectly fine with just icons and titles. However, if I don't grant it that permission - the app simply doesn't work. Nothing pops up when I press the configured keyboard shortcuts. As soon as I grant the app Screen Recording permission - everything works fine.

Mind you, this is with Use the app without this permission. Thumbnails won't show checked and Appearance set to App Icons. Accessibility permission is, of course, granted.

AltTab 7.2.0 running on Ventura 13.7.1, M1 MacBook Air.

P.S. Now that I'm writing this, I remembered that this was the case a good while back. Someone recommended AltTab to me, I downloaded it to try it out and at that time I didn't want to grant it the Screen Recording permission too - and the app didn't work. I think I was on Monterey at that time.

P.P.S. Sorry for duplication, I first sent this as an in-app feedback.

@michkozak michkozak added the bug Something isn't working label Nov 6, 2024
@antoinelibert
Copy link

Hello,

I have the exact same issue on my MBP M3 Pro with Sequoia 15.0.1 and latest AltTab 7.2.0.

If the app doesn't have the Screen Recording permission enabled (disabled in MacOSX setting and the checkbox "Use the app without this permission" enabled) , none of the three available apparence work. Option + Tab does nothing at all.

I already tried resetting and reinstalling, no change.

Thanks.

@lwouis
Copy link
Owner

lwouis commented Nov 6, 2024

Hi,

Could you please both share videos of the issue in motion? Showing the system permissions, AltTab permission window, and the behavior you see when pressing the shortcut? Could you please also click the menubar icon for AltTab and select "Show"?

Thank you

@lwouis lwouis added the unreproducible Need help from the author to reproduce the issue label Nov 6, 2024
@michkozak
Copy link
Author

Attaching screenshots instead.

Accessibility permissions:

Screenshot 2024-11-06 at 21 44 23

Screen Recording permissions:

Screenshot 2024-11-06 at 21 44 40

AltTab permissions:

Screenshot 2024-11-06 at 21 39 26

AltTab Controls settings:

Screenshot 2024-11-06 at 21 39 33 Screenshot 2024-11-06 at 21 39 36

AltTab Appearance settings:

Screenshot 2024-11-06 at 21 39 39

Pressing the configured shortcuts (⌘⇥ and ⌘`) results in nothing. Clicking on "Show" in AltTab's menubar icon results in nothing either.

P.S. As a side note, I can confirm I'm experiencing #3801 too: even after I grant AltTab the Screen Recording permissions (as a test) and relaunch it, it still says it doesn't have them:

Screenshot 2024-11-06 at 21 40 05

@Akiat
Copy link

Akiat commented Nov 6, 2024

I have the same issue on a Macbook 13 - Sequoia 15.0.1 👍

@lwouis
Copy link
Owner

lwouis commented Nov 6, 2024

Pressing the configured shortcuts (⌘⇥ and ⌘`) results in nothing.

On your screenshots, the configured shortcuts use , not

@Akiat
Copy link

Akiat commented Nov 6, 2024

@lwouis on my side, I tried with both shortcuts (with ⎇, or ⌘), but without success (and I just tried again, still no success).

@lwouis
Copy link
Owner

lwouis commented Nov 6, 2024

Could someone please share a video of the issue? I don't have any hint on why this happens on your setups. Watching a full screen recording may show a hint of what's going on.
Thank you 🙇

@michkozak
Copy link
Author

Pressing the configured shortcuts (⌘⇥ and ⌘`) results in nothing.

On your screenshots, the configured shortcuts use , not

@lwouis I, of course, made a mistake when writing that comment - meant ⌥⇥ and ⌥`. Pressing ⌘⇥ and ⌘` naturally activate built-in app switcher and cycle through current app's windows, respectively :).

I'll try to record a video. Although I honestly don't think it will help, there's really nothing special happening, won't give you any more insight than what I've written and the screenshots provided.

Maybe I could provide some logs when trying to perform these actions? Any instructions on how to do that would be great.

@michkozak
Copy link
Author

@lwouis I recorded a 90s video, showing setting AltTab from scratch, from first launch, with all settings erased prior to that, and only granting it Accessibility permissions, but not Screen Recording permissions, where you can clearly see it's not working - but as soon as I give it Screen Recording permissions it does.

Unfortunately, it's ~300MB, and GitHub won't allow anything bigger than 10MB.

@lwouis
Copy link
Owner

lwouis commented Nov 7, 2024

@michkozak you can upload it on Youtube as unlisted. You can also upload to Google Drive, iCloud, etc, and share the link here 👍

@michkozak
Copy link
Author

@lwouis Here's the video on YouTube.

@lwouis
Copy link
Owner

lwouis commented Nov 7, 2024

Thank you @michkozak!

At 0:58 in your video, I note something unusual: when you click on the toggle to grant AltTab permission, the toggle acts strangely. Did you perhaps double-click it?

Then, we see the pop up asking to restart AltTab. It pops up twice in a row. When the second pop up appears, we see clearly that AltTab is no longer visible in the menubar. What is being quit then?

I've tried to double-click the toggle, and uncovered a macOS bug. See this video.

I must say this Screen Recording permission was introduced by Apple in Catalina, and has been nothing but a buggy mess every since. It makes me sad to work on it, and debug these cases. It's such a mess. It should be a binary toggle. Every user should get the same experience.

Anyway, I can't reproduce the double popup you got. That one is the only thing that I think could help us get to the root cause. Why on Earth do you get 2 popups in a row?

Are you sure you don't have 2 instances of AltTab running at once perhaps? This looks weird as well:

image

then

image

You can type "AltTab" in ActivityMonitor to confirm how many instances are running.

@michkozak
Copy link
Author

Ok, so 😁:

At 0:58 in your video, I note something unusual: when you click on the toggle to grant AltTab permission, the toggle acts strangely. Did you perhaps double-click it?

I didn't double-click it. That's just the "standard" (as in: buggy) behavior of the "reimagined" System Settings in Ventura. Not sure about Sonoma and Sequoia, if things improved, but the new System Settings they introduced in Ventura is much more buggy, much less reliable than the System Preferences up until and including Monterey. And lots, lots of quirky UI glitches just like this one.

I've seen this happen many times, since the first day I upgraded to Ventura. Sometimes it works as expected. Sometimes it takes a second to register the click and then it is reflected in the UI. Sometimes once the UI catches up and the toggle changes state - it does the thing you saw in the video; looks like it was clicked twice, it goes from off to on to off to on. And sometimes it doesn't register the click at all - and you have to click a second time to get it to work. Anyhow, in that video, I only clicked once.

That was just bad luck, it just happened to glitch when I was recording. Before recording the video, when I was messing around with AltTab, trying to get it to work - there were no glitches, but still the app wouldn't work without Screen Recording permissions.

More importantly, that glitch was when granting the Screen Recording permissions, which I did only to demonstrate that then the app works. But the problem here is that it should work without it, with only Accessibility permissions granted, as the app itself states, giving you the option to check "Use the app without this permission".

Then, we see the pop up asking to restart AltTab. It pops up twice in a row. When the second pop up appears, we see clearly that AltTab is no longer visible in the menubar. What is being quit then?

It pops up twice in a row because of the glitch mentioned above. I only clicked once, but it somehow registered it twice, so the toggle switched state twice and presumably a call to an API was made twice too - so two subsequent popups.

The first Quit & Reopen restarted the app and it disappeared from the menubar. The second Quit & Reopen either (a) made an API call but it failed, since the app was not yet launched, or (b) restarted it again - the process was probably alive, but it was not yet reflected in the UI, meaning no icon in the menubar.

I must say this Screen Recording permission was introduced by Apple in Catalina, and has been nothing but a buggy mess every since. It makes me sad to work on it, and debug these cases. It's such a mess. It should be a binary toggle. Every user should get the same experience.

I agree. The expanded permissions system introduced in Catalina was and is nothing but pain.

Are you sure you don't have 2 instances of AltTab running at once perhaps? This looks weird as well (referring to screenshots showing two AltTab icons visible in the menubar):

I'm sure, there's only one AltTab process running. What you see there is standard Bartender behavior. I only have some icons always visible in the system's menubar, and the rest semi-hidden in the second bar (Bartender's), that stays hidden until explicitly summoned.

When you have an icon in the secondary, Bartender's bar, if you activate it, it shows up in the system's menubar where you can interact with it - but it doesn't disappear from the Bartender's bar. Also, when you launch an app, majority of time it first shows up in the system's menubar, then Bartender catches up and it shows up in its bar as well. And that's the behavior you're seeing in the video.

Hope this clears things up.

Anyway, I'm happy to record video again, without that glitch, to prove that it doesn't matter. Or do anything else that might help you diagnose it, I'm open to suggestions :).

@lwouis
Copy link
Owner

lwouis commented Nov 8, 2024

Hi,

Could you please run this local build in Terminal.app and share the output here?

In particular, the output while you're pressing the shortcut and nothing happens. Also, the output when you click "Show" in the menubar dropdown.

Thank you 🙇

@guillaumebrunerie
Copy link

guillaumebrunerie commented Nov 8, 2024

I have the same problem (coming from #3770).

Could you please run this local build in Terminal.app and share the output here?

Here is the output I got with the permission disabled and no popup showing at all (I removed AltTab and then installed the local build instead and then ran open -a /Applications/AltTab.app --stdout /tmp/alttab.txt):

2024-11-08 19:33:25.253 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-08 19:33:30.336 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-08 19:33:32.767 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(256) false
2024-11-08 19:33:32.767 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-08 19:33:32.868 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.down) nil nil false
2024-11-08 19:33:32.868 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-08 19:33:32.868 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global down false nil 0
2024-11-08 19:33:32.868 ❤️ ERROR ATShortcut.swift:82 executeAction() - nextWindowShortcut
2024-11-08 19:33:32.868 ❤️ ERROR App.swift:272 showUiOrCycleSelection() - 0 0 true
2024-11-08 19:33:32.870 ❤️ ERROR App.swift:275 showUiOrCycleSelection() - 8 true
2024-11-08 19:33:33.035 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.up) nil nil false
2024-11-08 19:33:33.035 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) down -> up
2024-11-08 19:33:33.050 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-08 19:33:33.050 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-08 19:33:33.050 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(0) 0
2024-11-08 19:33:35.318 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-08 19:33:35.679 ❤️ ERROR App.swift:272 showUiOrCycleSelection() - 0 0 true
2024-11-08 19:33:35.680 ❤️ ERROR App.swift:275 showUiOrCycleSelection() - 8 true
2024-11-08 19:33:37.806 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(4096) false
2024-11-08 19:33:38.089 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-08 19:33:38.568 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(4096) false
2024-11-08 19:33:38.917 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-08 19:33:39.991 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true

Does that help?

In particular, the output while you're pressing the shortcut and nothing happens. Also, the output when you click "Show" in the menubar dropdown.

I’m not sure if it happens exactly when pressing the shortcut or clicking "Show", as this --stdout option seems to be buffered in some way, so I don’t get the messages in real time (is there a better way to run it from the terminal?).

I tried when the permission is granted (and AltTab works), and there I get similar but slightly different messages:

2024-11-08 19:48:15.273 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-08 19:48:15.273 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(3) 0
2024-11-08 19:48:15.273 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-08 19:48:15.273 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(2) 0
2024-11-08 19:48:15.273 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-08 19:48:15.273 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(4) 0
2024-11-08 19:48:15.274 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-08 19:48:15.274 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(1) 0
2024-11-08 19:48:17.385 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted granted true
2024-11-08 19:48:21.527 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(256) false
2024-11-08 19:48:21.527 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-08 19:48:21.980 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.down) nil nil false
2024-11-08 19:48:21.980 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-08 19:48:21.980 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global down false nil 0
2024-11-08 19:48:21.981 ❤️ ERROR ATShortcut.swift:82 executeAction() - nextWindowShortcut
2024-11-08 19:48:21.981 ❤️ ERROR App.swift:272 showUiOrCycleSelection() - 0 0 true
2024-11-08 19:48:21.982 ❤️ ERROR App.swift:275 showUiOrCycleSelection() - 6 false
2024-11-08 19:48:21.986 ❤️ ERROR App.swift:293 showUiOrCycleSelection() - true milliseconds(100)
2024-11-08 19:48:22.015 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted granted true
2024-11-08 19:48:22.092 ❤️ ERROR App.swift:311 rebuildUi() - true
2024-11-08 19:48:22.092 ❤️ ERROR App.swift:316 rebuildUi() - true
2024-11-08 19:48:22.112 ❤️ ERROR App.swift:321 rebuildUi() - true
2024-11-08 19:48:22.120 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.up) nil nil false
2024-11-08 19:48:22.120 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) down -> up
2024-11-08 19:48:22.288 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-08 19:48:22.288 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-08 19:48:22.288 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up true Optional(0) 0
2024-11-08 19:48:22.288 ❤️ ERROR ATShortcut.swift:82 executeAction() - holdShortcut

I’m not sure how to understand this output, but hopefully it helps.

@willhains
Copy link

+1
I'm having the same issue.
image
Both ⌥Tab and menubar→Show do nothing.
It works if I enable screen recording permission, but I don't want/need that.

@lwouis
Copy link
Owner

lwouis commented Nov 8, 2024

Thank you @guillaumebrunerie! I narrowed the issue down thanks to your logs. AltTab doesn't show because it thinks MissionControl is active (e.g. Expose is showing).

For some reason, this heuristic triggers when AltTab has no permission, I think.

Could you please run this new local build and share the logs? AltTab is not granted Screen Recording Permission, then:

  • When you trigger AltTab and mission control is not active
  • When you trigger AltTab and mission control is active

Thank you 🙇

@michkozak
Copy link
Author

michkozak commented Nov 9, 2024

Hi,

Could you please run this local build in Terminal.app and share the output here?

In particular, the output while you're pressing the shortcut and nothing happens. Also, the output when you click "Show" in the menubar dropdown.

Thank you 🙇

Did a clean reinstall.

Here's my output when pressing the shortcut:

.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 01:17:29.544 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 01:17:30.558 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(512) false
2024-11-09 01:17:30.558 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 01:17:30.559 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - local down false nil 0
2024-11-09 01:17:30.747 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 01:17:30.748 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 01:17:30.986 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(512) false
2024-11-09 01:17:30.986 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 01:17:30.987 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - local down false nil 0
2024-11-09 01:17:31.109 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 01:17:31.109 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 01:17:32.648 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 01:17:37.651 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 01:17:42.644 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 01:17:47.118 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(2048) false
2024-11-09 01:17:47.119 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 01:17:47.119 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 01:17:47.119 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 01:17:47.119 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 01:17:47.119 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 01:17:47.228 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.down) nil nil false
2024-11-09 01:17:47.228 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-09 01:17:47.228 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global down false nil 0
2024-11-09 01:17:47.229 ❤️ ERROR ATShortcut.swift:82 executeAction() - nextWindowShortcut
2024-11-09 01:17:47.229 ❤️ ERROR App.swift:272 showUiOrCycleSelection() - 0 0 true
2024-11-09 01:17:47.229 ❤️ ERROR App.swift:275 showUiOrCycleSelection() - 27 true
2024-11-09 01:17:47.233 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 01:17:47.316 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.up) nil nil false
2024-11-09 01:17:47.316 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) down -> up
2024-11-09 01:17:47.324 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 01:17:47.325 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 01:17:47.325 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(2) 0
2024-11-09 01:17:47.325 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 01:17:47.325 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(4) 0
2024-11-09 01:17:47.326 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 01:17:47.326 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(0) 0
2024-11-09 01:17:47.326 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up

For whatever reason, it's not outputting anything when I click on Show in the menubar dropdown.

@michkozak
Copy link
Author

michkozak commented Nov 9, 2024

Thank you @guillaumebrunerie! I narrowed the issue down thanks to your logs. AltTab doesn't show because it thinks MissionControl is active (e.g. Expose is showing).

For some reason, this heuristic triggers when AltTab has no permission, I think.

Could you please run this new local build and share the logs? AltTab is not granted Screen Recording Permission, then:

  • When you trigger AltTab and mission control is not active
  • When you trigger AltTab and mission control is active

Thank you 🙇

Once again, after a clean reinstall, using the new build:

  • No output when pressing the shortcut when Mission Control is not active
  • No output when pressing the shortcut when Mission Control is active
  • No output when clicking on Show in the menubar dropdown when Mission Control is not active

Strange, but tried it multiple times, same result. Hopefully, @guillaumebrunerie will have better luck.

@guillaumebrunerie
Copy link

I did get some output with the new build. At 10:41:30 I pressed the shortcut twice, and at 10:41:45 I clicked "Show" twice.

2024-11-09 10:41:20.358 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:41:25.442 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:41:30.322 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(256) false
2024-11-09 10:41:30.322 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 10:41:30.379 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.down) nil nil false
2024-11-09 10:41:30.379 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-09 10:41:30.379 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global down false nil 0
2024-11-09 10:41:30.379 ❤️ ERROR ATShortcut.swift:82 executeAction() - nextWindowShortcut
2024-11-09 10:41:30.379 ❤️ ERROR App.swift:273 showUiOrCycleSelection() - 0 0 true
2024-11-09 10:41:30.380 ❤️ ERROR MissionControl.swift:15 isActive() -
2024-11-09 10:41:30.382 ❤️ ERROR MissionControl.swift:19 isActive() - nil Optional(20) Optional({
    Height = 956;
    Width = 1470;
    X = 0;
    Y = 0;
})
2024-11-09 10:41:30.384 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:41:30.582 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 10:41:30.582 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 10:41:30.582 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 10:41:30.583 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(0) 0
2024-11-09 10:41:30.598 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.up) nil nil false
2024-11-09 10:41:30.598 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-09 10:41:31.325 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(256) false
2024-11-09 10:41:31.325 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 10:41:31.325 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 10:41:31.393 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.down) nil nil false
2024-11-09 10:41:31.394 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-09 10:41:31.394 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global down false nil 0
2024-11-09 10:41:31.394 ❤️ ERROR ATShortcut.swift:82 executeAction() - nextWindowShortcut
2024-11-09 10:41:31.394 ❤️ ERROR App.swift:273 showUiOrCycleSelection() - 0 0 true
2024-11-09 10:41:31.394 ❤️ ERROR MissionControl.swift:15 isActive() -
2024-11-09 10:41:31.396 ❤️ ERROR MissionControl.swift:19 isActive() - nil Optional(20) Optional({
    Height = 956;
    Width = 1470;
    X = 0;
    Y = 0;
})
2024-11-09 10:41:31.557 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.up) nil nil false
2024-11-09 10:41:31.557 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) down -> up
2024-11-09 10:41:31.561 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 10:41:31.561 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 10:41:31.561 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(0) 0
2024-11-09 10:41:36.968 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:41:42.025 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:41:45.246 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:41:47.143 ❤️ ERROR App.swift:273 showUiOrCycleSelection() - 0 0 true
2024-11-09 10:41:47.143 ❤️ ERROR MissionControl.swift:15 isActive() -
2024-11-09 10:41:47.144 ❤️ ERROR MissionControl.swift:19 isActive() - nil Optional(20) Optional({
    Height = 956;
    Width = 1470;
    X = 0;
    Y = 0;
})
2024-11-09 10:41:49.135 ❤️ ERROR App.swift:273 showUiOrCycleSelection() - 0 0 true
2024-11-09 10:41:49.135 ❤️ ERROR MissionControl.swift:15 isActive() -
2024-11-09 10:41:49.136 ❤️ ERROR MissionControl.swift:19 isActive() - nil Optional(20) Optional({
    Height = 956;
    Width = 1470;
    X = 0;
    Y = 0;
})
2024-11-09 10:41:50.445 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true

@guillaumebrunerie
Copy link

This was without Mission control active, trying to use AltTab normally. Pressing the shortcut once when Mission control is active (F3, showing a mosaic of all open apps and windows) gives the following output:

2024-11-09 10:46:02.300 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:46:04.913 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 10:46:06.699 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 10:46:07.368 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:46:12.360 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:46:19.049 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:46:24.032 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:46:27.853 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:46:32.116 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(256) false
2024-11-09 10:46:32.117 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil up -> down
2024-11-09 10:46:32.202 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.down) nil nil false
2024-11-09 10:46:32.202 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-09 10:46:32.202 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global down false nil 0
2024-11-09 10:46:32.202 ❤️ ERROR ATShortcut.swift:82 executeAction() - nextWindowShortcut
2024-11-09 10:46:32.203 ❤️ ERROR App.swift:273 showUiOrCycleSelection() - 0 0 true
2024-11-09 10:46:32.203 ❤️ ERROR MissionControl.swift:15 isActive() -
2024-11-09 10:46:32.205 ❤️ ERROR MissionControl.swift:19 isActive() - nil Optional(20) Optional({
    Height = 956;
    Width = 1470;
    X = 0;
    Y = 0;
})
2024-11-09 10:46:32.209 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true
2024-11-09 10:46:32.448 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 10:46:32.449 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 10:46:32.449 ❤️ ERROR ATShortcut.swift:64 shouldTrigger() - global up false Optional(0) 0
2024-11-09 10:46:32.449 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 10:46:32.453 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - Optional(__C.EventHotKeyID(signature: 1634497652, id: 0)) Optional(AltTab.ShortcutState.up) nil nil false
2024-11-09 10:46:32.453 ❤️ ERROR ATShortcut.swift:25 matches() - shortcutId EventHotKeyID(signature: 1634497652, id: 0) up -> down
2024-11-09 10:46:35.556 ❤️ ERROR KeyboardEvents.swift:135 handleEvent() - nil nil nil Optional(0) false
2024-11-09 10:46:35.556 ❤️ ERROR ATShortcut.swift:40 matches() - modifiers nil down -> up
2024-11-09 10:46:39.108 ❤️ ERROR SystemPermissions.swift:45 observePermissionsRemovedWhileAltTabIsRunning() - granted skipped true

@git-hub-pat
Copy link

I can confirm the same issue with macOS 15.1. As soon as I remove the permission, the app no longer works as desired. If the permissions are given, everything is ok.

@lwouis
Copy link
Owner

lwouis commented Nov 9, 2024

Hi everyone,

I'm surprised by @guillaumebrunerie's logs.

I've implemented the what yabai does for Mission Control. They have found private notifications we can use. It's working on my local machine. I think this may solve the problem for users on macOS >= 12.

Here's a new local build. Could you please try it out?

If I'm correct it should fix the issue for all of you. Also, could you please share logs of an invocation with mission control active and one with mission control inactive?

Thank you 🙇

@michkozak
Copy link
Author

Hi everyone,

I'm surprised by @guillaumebrunerie's logs.

I've implemented the what yabai does for Mission Control. They have found private notifications we can use. It's working on my local machine. I think this may solve the problem for users on macOS >= 12.

Here's a new local build. Could you please try it out?

If I'm correct it should fix the issue for all of you. Also, could you please share logs of an invocation with mission control active and one with mission control inactive?

Thank you 🙇

The new build works for me, Accessibility permissions granted, Screen Recording Permissions denied.

Output when Mission Control is not active:

2024-11-09 19:09:21.079 ❤️ ERROR GeneralTab.swift:102 startAtLoginCallback() - Failed to remove LaunchAgent Error Domain=NSCocoaErrorDomain Code=4 "“com.lwouis.alt-tab-macos.plist” couldn’t be removed." UserInfo={NSUserStringVariant=(
    Remove
), NSFilePath=/Users/michalk/Library/LaunchAgents/com.lwouis.alt-tab-macos.plist, NSUnderlyingError=0x60000046e850 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
2024-11-09 19:09:33.690 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:33.690 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:09:33.692 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:09:36.781 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:09:37.270 ❤️ ERROR ATShortcut.swift:79 executeAction() - holdShortcut
2024-11-09 19:09:37.275 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:09:37.276 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:09:46.786 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:46.786 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:09:46.788 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:09:48.696 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:09:49.281 ❤️ ERROR ATShortcut.swift:79 executeAction() - holdShortcut
2024-11-09 19:09:49.287 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:09:49.288 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:09:55.425 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:55.425 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:09:55.426 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:09:56.906 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:57.090 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:57.230 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:57.378 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:57.521 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:57.637 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:09:57.782 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:10:00.971 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:01.155 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:01.334 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:01.497 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:01.665 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:01.834 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:02.006 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:02.379 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:04.290 ❤️ ERROR ATShortcut.swift:79 executeAction() - holdShortcut
2024-11-09 19:10:04.294 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:10:04.295 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:10:04.979 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:10:04.980 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:10:04.980 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:10:05.856 ❤️ ERROR ATShortcut.swift:79 executeAction() - previousWindowShortcut
2024-11-09 19:10:06.144 ❤️ ERROR ATShortcut.swift:79 executeAction() - holdShortcut
2024-11-09 19:10:06.147 ❤️ ERROR MissionControl.swift:9 state() - inactive
2024-11-09 19:10:06.148 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})

Output when Mission Control is active:

2024-11-09 19:11:25.140 ❤️ ERROR MissionControl.swift:64 AltTab() - AXExposeShowAllWindows <AXUIElement 0x6000004b5a10> {pid=879}
2024-11-09 19:11:25.715 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:11:25.716 ❤️ ERROR MissionControl.swift:9 state() - showAllWindows
2024-11-09 19:11:25.717 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:25.717 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:25.718 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(18) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:25.718 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(17) Optional({
    Height = 109;
    Width = 100;
    X = 394;
    Y = 528;
})
2024-11-09 19:11:25.718 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(17) Optional({
    Height = 109;
    Width = 100;
    X = 1330;
    Y = 1054;
})
2024-11-09 19:11:28.044 ❤️ ERROR MissionControl.swift:64 AltTab() - AXExposeShowAllWindows <AXUIElement 0x600000450510> {pid=879}
2024-11-09 19:11:29.097 ❤️ ERROR MissionControl.swift:64 AltTab() - AXExposeShowAllWindows <AXUIElement 0x6000004cf210> {pid=879}
2024-11-09 19:11:29.414 ❤️ ERROR MissionControl.swift:64 AltTab() - AXExposeExit <AXUIElement Application 0x6000004500f0> {pid=879}
2024-11-09 19:11:39.519 ❤️ ERROR MissionControl.swift:64 AltTab() - AXExposeShowAllWindows <AXUIElement 0x6000004500f0> {pid=879}
2024-11-09 19:11:40.092 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:11:40.093 ❤️ ERROR MissionControl.swift:9 state() - showAllWindows
2024-11-09 19:11:40.095 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:40.095 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:40.095 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(18) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:40.095 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(17) Optional({
    Height = 109;
    Width = 100;
    X = 394;
    Y = 528;
})
2024-11-09 19:11:40.095 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(17) Optional({
    Height = 109;
    Width = 100;
    X = 1330;
    Y = 1054;
})
2024-11-09 19:11:43.129 ❤️ ERROR ATShortcut.swift:79 executeAction() - nextWindowShortcut
2024-11-09 19:11:43.130 ❤️ ERROR MissionControl.swift:9 state() - showAllWindows
2024-11-09 19:11:43.132 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:43.132 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(20) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:43.132 ❤️ ERROR MissionControl.swift:12 state() - nil Optional(18) Optional({
    Height = 1152;
    Width = 2048;
    X = 0;
    Y = 0;
})
2024-11-09 19:11:43.132 ❤️ ERROR MissionControl.s

@git-hub-pat
Copy link

I tried the new local build and it all seems to be running perfectly. This time also without the rights for screen recording. Great job. Thanks

@lwouis lwouis closed this as completed in f7de2bb Nov 10, 2024
github-actions bot pushed a commit that referenced this issue Nov 10, 2024
# [7.3.0](v7.2.0...v7.3.0) (2024-11-10)

### Bug Fixes

* better handle screen or space changes (closes [#1254](#1254), closes [#2983](#2983)) ([3c4aaf5](3c4aaf5))
* potential issues with key repeats due to concurrency ([4cfe16a](4cfe16a))
* switcher would not close, or cycle on its own (closes [#3117](#3117)) ([d430f83](d430f83))
* works without screen-recording permissions (closes [#3819](#3819)) ([f7de2bb](f7de2bb))

### Features

* can pass the --logs= flags at launch to show logs ([81eb07e](81eb07e))
* improve el, fi, hi, it, pl, pt localizations ([a9614c1](a9614c1))
@willhains
Copy link

Just updated to 7.3.0 via the Check for Updates menu, and turned off screen recording permissions.
I can confirm it is now working for me as expected.

Thank you! ❤️

@michkozak
Copy link
Author

@lwouis That's what I should have said in my last comment, too: thank you 🙏🏻.

@sinkr
Copy link

sinkr commented Dec 3, 2024

I decided to spend some time on this again and finally got it working on Sequoia 15.1.1. My installation is via Homebrew, so your re-installation method may be different (and maybe unnecessary), but this got me going again on 3 separate 15.1.1 arm64 Macs.

Most of this is not new, but deleting the preferences, et al. seemed to be what specifically got Alt-Tab running again for me:

rm -rf /Applications/AltTab.app
brew reinstall alt-tab
tccutil reset All com.lwouis.alt-tab-macos
rm -rf ~/Library/Saved\ Application\ State/com.lwouis.alt-tab-macos.savedState
rm -rf ~/Library/Application\ Support/com.lwouis.alt-tab-macos
rm -rf ~/Library/Preferences/com.lwouis.alt-tab-macos.plist

After going through the permission dialogues and granting the appropriate access, Alt-Tab began working for me again across 3 separate 15.1.1 Macs.

(I'm fine granting Alt-Tab screen recording permsissions.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working unreproducible Need help from the author to reproduce the issue
Projects
None yet
Development

No branches or pull requests

8 participants