top | item 29628338

(no title)

Sidnicious | 4 years ago

I made a very quick hack to deal with this; it should hide the dot. Improvements welcome:

https://github.com/s4y/undot

EDIT: As far as I know, the best long-term answer here is for apps that present visuals full screen to "capture" the external display for exclusive use using an API (https://developer.apple.com/documentation/coregraphics/14562...), but that's not super common right now.

discuss

order

chipotle_coyote|4 years ago

> As far as I know, the best long-term answer here is for apps that present visuals full screen to "capture" the external display for exclusive use using an API...

If I'm understanding you correctly, that means there's already a supported workaround for this if apps just use that API? I don't want to downplay the annoyance of this for apps that aren't using that API, but this suggests there's already an official answer.

I'm mildly surprised the orange dot shows up in full-screen apps; I was going to suggest that might be the easiest "fix" for Apple to make that doesn't require either adding a new security setting or taking away the indicator entirely -- have it only show up in the menu bar, and not when the menu bar isn't present.

csydas|4 years ago

I'd like to ask a follow-up also as I don't do any Mac dev, but has this API been around for a bit then? Like Monterey has been out for a bit and it's a little surprising that this article and the subsequent discussion is only popping up now, especially if there is an API answer to it already.

I ask earnestly if the change is really such a substantial one?

I have mixed feelings after reading the comments as I think that there are fairly valid arguments in both directions (e.g., that the solutions are plentiful, but also that workarounds aren't really a solution), but the arguments feel a bit empty if there's a "right" way to be handling the visuals that just isn't being used.

As a user I like the change in general as I have caught naughty applications that try to use mic input when I really don't want it, and my misclick/absentmindedness is not uncommon, so seeing such things helps a lot as I don't really think it's reasonable to constantly be checking the various app permissions to make sure they're what I want. This is a good reminder for me.

But I totally get not wanting the dot, as it's even been a prank on a site I go to to have a tiny red pixel just to annoy people (and it's a prank I've used). So I get the frustration with an unexpected visual. But, if there's a way to do the same activity by having the app utilize the correct API, it seems like an issue that is solved in the next update from these visual production apps, no?

stefan_|4 years ago

Grabbing into a different programs UI to move some dot off-screen by 99999 pixels does not exactly rise to the level of an API.

mikewhy|4 years ago

> If I'm understanding you correctly, that means there's already a supported workaround for this if apps just use that API?

I don't think this API helps people that use display out, like a projector or screen.

ibejoeb|4 years ago

Is that really all it takes to disable this? I guess if I'm a malware author looking to do surreptitious recording, I'll have to bundle these extra 10 lines of code lol...

Sidnicious|4 years ago

You can, but note that as a user you have to open System Preferences and check a checkbox to allow said malware to do this. (Apple locked down the accessibility APIs that let apps easily manipulate each other a few years ago.)

shortformblog|4 years ago

That you built this in such a short span of time is impressive, and really does a great job undercutting the “security” reasons for the dot to be there.

klodolph|4 years ago

I don't think this undercuts the security reasons. I think the general idea is that if you leave Zoom / FaceTime / OBS open and recording, the orange dot is there. Same dot, same place, no matter what app you are using, as long as the developer doesn't disable it.

Using the API to disable the dot requires some pretty scary permissions to be enabled on the app disabling the dot.

wanderingstan|4 years ago

Can you explain the approach a bit? Looks like you’re finding the window holding the dot and moving it offscreen?

Sidnicious|4 years ago

Yes, exactly. I'm sure there are more elegant answers — plus watching events so that it can hide the window right away instead of running in a loop — but I haven't used the accessibility APIs much lately and this is the first working approach I found.

Starmina|4 years ago

Thanks, Seems to work great.

Hacky way to have it running all the time :

I put this into a bash file to run the loop in the background at boot.

Just add the .sh in Preferences > Users & Group > Login Items

Then don't forget to chmod +x the bash file so it can be run.

--

#!/bin/bash

nohup bash -c 'while :; do /Users/starmina/Scripts/undot/undot; sleep 1; done' </dev/null >/dev/null 2>&1 &

--

I'd be glad to hear a of a better way to do it.

palijer|4 years ago

On vacation and no laptop, but perhaps someone can add better readme directions to the patch.

To us software folks, I t makes sense, but I imagine this'll be linked to many individuals outside of software who won't know even what git is or how to get the fix.

ratww|4 years ago

Great work!