How to check for full-screen apps, robustly?
How to check for full-screen apps, robustly?
- Subject: How to check for full-screen apps, robustly?
- From: Gabriel Zachmann via Cocoa-dev <email@hidden>
- Date: Sat, 19 Aug 2023 10:51:45 +0200
How can I robustly check in my app whether or not there is any other window
running in full-screen?
I would like to prevent my app from going full-screen if another app is
currently running in full-screen.
(For instance, when the user is watching a video in Quicktime Player or Safari
in full-screen, or is having a video call, then they probably don't want my app
to interfere.)
So far, I did that with the following lines of code (omitting some minor
details):
guard let winArray = CGWindowListCopyWindowInfo(options, kCGNullWindowID) as?
[[ String : Any]]
else { .. }
for winInfo in winArray
{
guard let boundsDict = winInfo[kCGWindowBounds as String] as! CFDictionary?
else { .. }
guard let win_rect = CGRect.init( dictionaryRepresentation: boundsDict )
if ( __CGSizeEqualToSize( win_rect.size, mainScreen.frame.size) )
.. found full-screen window ..
}
Now, this does not work any more on Mac's with "the notch".
At least, the Quicktime full-screen window, and a youtube video playing in
Safari in full-screen, is smaller than the mainScreen.frame.size .
I guess I could detect whether or not it's a Mac with the notch, and use a
smaller mainScreen.frame.size accordingly;
but I am pretty sure this would break with the next Mac models again.
So, I am looking for something more future-proof.
Best regards, Gabriel
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden