Skip to content

Commit deec199

Browse files
Merge pull request #161 from zorth64/feature/background-blur
2 parents 3ab87ba + ce06510 commit deec199

10 files changed

Lines changed: 460 additions & 13 deletions

File tree

SlimHUD.xcodeproj/project.pbxproj

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
54CD36742E307B03003B7522 /* BackdropLayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54CD36732E307B03003B7522 /* BackdropLayerView.swift */; };
1011
FA095EAD2D8896DB006F6531 /* SystemObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA095EAC2D8896DA006F6531 /* SystemObserver.swift */; };
1112
FA0E038629663300004066FF /* Release_Notes.md in Resources */ = {isa = PBXBuildFile; fileRef = FA0E038529663300004066FF /* Release_Notes.md */; };
1213
FA0E03882966331A004066FF /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = FA0E038729663319004066FF /* README.md */; };
@@ -108,6 +109,11 @@
108109
/* End PBXContainerItemProxy section */
109110

110111
/* Begin PBXFileReference section */
112+
54CD366F2E307A22003B7522 /* CABackdropLayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CABackdropLayer.h; sourceTree = "<group>"; };
113+
54CD36702E307A22003B7522 /* CAFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CAFilter.h; sourceTree = "<group>"; };
114+
54CD36712E307A22003B7522 /* CAPropertyInfo-Protocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CAPropertyInfo-Protocol.h"; sourceTree = "<group>"; };
115+
54CD36722E307A22003B7522 /* SlimHUD-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SlimHUD-Bridging-Header.h"; sourceTree = "<group>"; };
116+
54CD36732E307B03003B7522 /* BackdropLayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackdropLayerView.swift; sourceTree = "<group>"; };
111117
FA095EAC2D8896DA006F6531 /* SystemObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemObserver.swift; sourceTree = "<group>"; };
112118
FA0E038529663300004066FF /* Release_Notes.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = Release_Notes.md; sourceTree = "<group>"; };
113119
FA0E038729663319004066FF /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
@@ -221,6 +227,17 @@
221227
/* End PBXFrameworksBuildPhase section */
222228

223229
/* Begin PBXGroup section */
230+
54CD366E2E307943003B7522 /* PrivateHeaders */ = {
231+
isa = PBXGroup;
232+
children = (
233+
54CD366F2E307A22003B7522 /* CABackdropLayer.h */,
234+
54CD36702E307A22003B7522 /* CAFilter.h */,
235+
54CD36712E307A22003B7522 /* CAPropertyInfo-Protocol.h */,
236+
54CD36722E307A22003B7522 /* SlimHUD-Bridging-Header.h */,
237+
);
238+
path = PrivateHeaders;
239+
sourceTree = "<group>";
240+
};
224241
FA1A024E29CE80E100365137 /* Frameworks */ = {
225242
isa = PBXGroup;
226243
children = (
@@ -266,6 +283,7 @@
266283
FA95EDF32956FCBF005B39CD /* SlimHUD */ = {
267284
isa = PBXGroup;
268285
children = (
286+
54CD366E2E307943003B7522 /* PrivateHeaders */,
269287
FA95EDF42956FCBF005B39CD /* AppDelegate.swift */,
270288
FA95EE1F2956FCDA005B39CD /* Controllers */,
271289
FA95EE4B2956FE50005B39CD /* Extensions */,
@@ -392,6 +410,7 @@
392410
FA95EE622956FEE4005B39CD /* Views */ = {
393411
isa = PBXGroup;
394412
children = (
413+
54CD36732E307B03003B7522 /* BackdropLayerView.swift */,
395414
FA95EE7B295741DE005B39CD /* MainMenu.storyboard */,
396415
FA95EE6C29573F36005B39CD /* Hud.swift */,
397416
FA95EE632956FEEA005B39CD /* Settings */,
@@ -665,6 +684,7 @@
665684
FA95EDF52956FCBF005B39CD /* AppDelegate.swift in Sources */,
666685
FA98AB4429CD194500D3F92A /* ShadowPopupViewController.swift in Sources */,
667686
FA95EE512956FE73005B39CD /* NSButtonExtension.swift in Sources */,
687+
54CD36742E307B03003B7522 /* BackdropLayerView.swift in Sources */,
668688
FA2D3DE22971EC2B00ABADDE /* MainMenuController.swift in Sources */,
669689
FACDE693297F1BD300EDF165 /* TabsView.swift in Sources */,
670690
FA232B4E2981E6A900F96E51 /* AboutViewController.swift in Sources */,
@@ -860,6 +880,7 @@
860880
PRODUCT_BUNDLE_IDENTIFIER = com.alexpera.SlimHUD;
861881
PRODUCT_NAME = "$(TARGET_NAME)";
862882
SWIFT_EMIT_LOC_STRINGS = YES;
883+
SWIFT_OBJC_BRIDGING_HEADER = "$SRCROOT/SlimHUD/PrivateHeaders/SlimHUD-Bridging-Header.h";
863884
SWIFT_VERSION = 5.0;
864885
};
865886
name = Debug;
@@ -892,6 +913,7 @@
892913
PRODUCT_BUNDLE_IDENTIFIER = com.alexpera.SlimHUD;
893914
PRODUCT_NAME = "$(TARGET_NAME)";
894915
SWIFT_EMIT_LOC_STRINGS = YES;
916+
SWIFT_OBJC_BRIDGING_HEADER = "$SRCROOT/SlimHUD/PrivateHeaders/SlimHUD-Bridging-Header.h";
895917
SWIFT_VERSION = 5.0;
896918
};
897919
name = Release;
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//
2+
// Generated by https://github.com/blacktop/ipsw (Version: 3.1.549, BuildCommit: 3da8ece356e0f31d6b3a8e7f419e446ace69898f)
3+
//
4+
// - LC_BUILD_VERSION: Platform: macOS, MinOS: 15, SDK: 15, Tool: ld (1115.7.3)
5+
// - LC_BUILD_VERSION: Platform: macCatalyst, MinOS: 18, SDK: 18, Tool: ld (1115.7.3)
6+
// - LC_SOURCE_VERSION: 1149.6.2.0.0
7+
//
8+
#ifndef CABackdropLayer_h
9+
#define CABackdropLayer_h
10+
11+
#include <QuartzCore/CALayer.h>
12+
13+
@import Foundation;
14+
15+
@protocol CABackdropLayerDelegate, CALayerDelegate;
16+
17+
@interface CABackdropLayer : CALayer
18+
19+
@property BOOL enabled;
20+
@property (copy) NSString *groupName;
21+
@property BOOL usesGlobalGroupNamespace;
22+
@property (copy) NSString *groupNamespace;
23+
@property double scale;
24+
@property CGRect backdropRect;
25+
@property double marginWidth;
26+
@property BOOL disablesOccludedBackdropBlurs;
27+
@property BOOL captureOnly;
28+
@property BOOL allowsInPlaceFiltering;
29+
@property BOOL reducesCaptureBitDepth;
30+
@property BOOL ignoresScreenClip;
31+
@property double bleedAmount;
32+
@property BOOL windowServerAware;
33+
@property BOOL inverseMeshed;
34+
@property BOOL allowsSubstituteColor;
35+
@property struct CGColor * substituteColor;
36+
@property BOOL ignoresOffscreenGroups;
37+
@property double zoom;
38+
@property (weak) id <CABackdropLayerDelegate, CALayerDelegate> delegate;
39+
40+
/* class methods */
41+
+ (void)initialize;
42+
+ (id)defaultValueForKey:(id)key;
43+
+ (id)CA_attributes;
44+
+ (BOOL)CA_automaticallyNotifiesObservers:(Class)observers;
45+
+ (BOOL)_hasRenderLayerSubclass;
46+
47+
/* instance methods */
48+
- (void)didChangeValueForKey:(id)key;
49+
- (BOOL)isEnabled;
50+
- (void)layerDidBecomeVisible:(BOOL)visible;
51+
- (BOOL)isInverseMeshed;
52+
- (void *)_copyRenderLayer:(void *)layer layerFlags:(unsigned int)flags commitFlags:(unsigned int *)flags;
53+
- (void)_renderBackgroundInContext:(struct CGContext *)context;
54+
- (_Bool)_renderLayerDefinesProperty:(unsigned int)property;
55+
- (unsigned int)_renderLayerPropertyAnimationFlags:(unsigned int)flags;
56+
57+
@end
58+
59+
#endif /* CABackdropLayer_h */

SlimHUD/PrivateHeaders/CAFilter.h

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/* CoreAnimation - CAFilter.h
2+
3+
Copyright (c) 2006-2007 Apple Inc.
4+
All rights reserved. */
5+
6+
#ifndef CAFILTER_H
7+
#define CAFILTER_H
8+
9+
#include <QuartzCore/CABase.h>
10+
#include "CAPropertyInfo-Protocol.h"
11+
12+
CA_EXTERN_C_BEGIN
13+
14+
@interface CAFilter : NSObject <NSCopying, NSMutableCopying, CAPropertyInfo>
15+
16+
@property (class, readonly) NSArray<NSString *> *_Nonnull filterTypes;
17+
18+
@property (assign) BOOL cachesInputImage;
19+
@property (assign, getter=isEnabled) BOOL enabled;
20+
@property (copy) NSString *name;
21+
@property (readonly, assign) NSString *type;
22+
23+
@property (readonly, strong) NSArray<NSString *> *inputKeys;
24+
@property (readonly, strong) NSArray<NSString *> *outputKeys;
25+
26+
+ (nullable CAFilter *)filterWithType:(nonnull NSString *)type;
27+
+ (nullable CAFilter *)filterWithName:(nonnull NSString *)name;
28+
- (nullable instancetype)initWithType:(nonnull NSString *)type;
29+
- (nullable instancetype)initWithName:(nonnull NSString *)name;
30+
31+
- (void)setDefaults;
32+
33+
@end
34+
35+
/** Filter types. **/
36+
37+
CA_EXTERN NSString * const kCAFilterMultiplyColor;
38+
CA_EXTERN NSString * const kCAFilterColorAdd;
39+
CA_EXTERN NSString * const kCAFilterColorSubtract;
40+
CA_EXTERN NSString * const kCAFilterColorMonochrome;
41+
CA_EXTERN NSString * const kCAFilterColorMatrix;
42+
CA_EXTERN NSString * const kCAFilterColorHueRotate;
43+
CA_EXTERN NSString * const kCAFilterColorSaturate;
44+
CA_EXTERN NSString * const kCAFilterColorBrightness;
45+
CA_EXTERN NSString * const kCAFilterColorContrast;
46+
CA_EXTERN NSString * const kCAFilterColorInvert;
47+
CA_EXTERN NSString * const kCAFilterLuminanceToAlpha;
48+
CA_EXTERN NSString * const kCAFilterBias;
49+
CA_EXTERN NSString * const kCAFilterDistanceField;
50+
CA_EXTERN NSString * const kCAFilterGaussianBlur;
51+
CA_EXTERN NSString * const kCAFilterLanczosResize;
52+
CA_EXTERN NSString * const kCAFilterClear;
53+
CA_EXTERN NSString * const kCAFilterCopy;
54+
CA_EXTERN NSString * const kCAFilterSourceOver;
55+
CA_EXTERN NSString * const kCAFilterSourceIn;
56+
CA_EXTERN NSString * const kCAFilterSourceOut;
57+
CA_EXTERN NSString * const kCAFilterSourceAtop;
58+
CA_EXTERN NSString * const kCAFilterDest;
59+
CA_EXTERN NSString * const kCAFilterDestOver;
60+
CA_EXTERN NSString * const kCAFilterDestIn;
61+
CA_EXTERN NSString * const kCAFilterDestOut;
62+
CA_EXTERN NSString * const kCAFilterDestAtop;
63+
CA_EXTERN NSString * const kCAFilterXor;
64+
CA_EXTERN NSString * const kCAFilterPlusL;
65+
CA_EXTERN NSString * const kCAFilterSubtractS;
66+
CA_EXTERN NSString * const kCAFilterSubtractD;
67+
CA_EXTERN NSString * const kCAFilterMultiply;
68+
CA_EXTERN NSString * const kCAFilterMinimum;
69+
CA_EXTERN NSString * const kCAFilterMaximum;
70+
CA_EXTERN NSString * const kCAFilterPlusD;
71+
CA_EXTERN NSString * const kCAFilterNormalBlendMode;
72+
CA_EXTERN NSString * const kCAFilterMultiplyBlendMode;
73+
CA_EXTERN NSString * const kCAFilterScreenBlendMode;
74+
CA_EXTERN NSString * const kCAFilterOverlayBlendMode;
75+
CA_EXTERN NSString * const kCAFilterDarkenBlendMode;
76+
CA_EXTERN NSString * const kCAFilterLightenBlendMode;
77+
CA_EXTERN NSString * const kCAFilterColorDodgeBlendMode;
78+
CA_EXTERN NSString * const kCAFilterColorBurnBlendMode;
79+
CA_EXTERN NSString * const kCAFilterSoftLightBlendMode;
80+
CA_EXTERN NSString * const kCAFilterHardLightBlendMode;
81+
CA_EXTERN NSString * const kCAFilterDifferenceBlendMode;
82+
CA_EXTERN NSString * const kCAFilterExclusionBlendMode;
83+
CA_EXTERN NSString * const kCAFilterSubtractBlendMode;
84+
CA_EXTERN NSString * const kCAFilterDivideBlendMode;
85+
CA_EXTERN NSString * const kCAFilterLinearBurnBlendMode;
86+
CA_EXTERN NSString * const kCAFilterLinearDodgeBlendMode;
87+
CA_EXTERN NSString * const kCAFilterLinearLightBlendMode;
88+
CA_EXTERN NSString * const kCAFilterPinLightBlendMode;
89+
CA_EXTERN NSString * const kCAFilterPageCurl;
90+
CA_EXTERN NSString * const kCAFilterVibrantDark;
91+
CA_EXTERN NSString * const kCAFilterVibrantLight;
92+
CA_EXTERN NSString * const kCAFilterDarkenSourceOver;
93+
CA_EXTERN NSString * const kCAFilterLightenSourceOver;
94+
95+
CA_EXTERN_C_END
96+
97+
#endif // CAFILTER_H
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//
2+
// Generated by https://github.com/blacktop/ipsw (Version: 3.1.549, BuildCommit: 3da8ece356e0f31d6b3a8e7f419e446ace69898f)
3+
//
4+
// - LC_BUILD_VERSION: Platform: macOS, MinOS: 15, SDK: 15, Tool: ld (1115.7.3)
5+
// - LC_BUILD_VERSION: Platform: macCatalyst, MinOS: 18, SDK: 18, Tool: ld (1115.7.3)
6+
// - LC_SOURCE_VERSION: 1149.6.2.0.0
7+
//
8+
#ifndef CAPropertyInfo_Protocol_h
9+
#define CAPropertyInfo_Protocol_h
10+
@import Foundation;
11+
12+
@protocol CAPropertyInfo
13+
14+
@required
15+
16+
/* class methods */
17+
+ (id)properties;
18+
+ (id)attributesForKey:(id)key;
19+
20+
/* required instance methods */
21+
- (id)attributesForKeyPath:(id)path;
22+
23+
@optional
24+
25+
@end
26+
27+
#endif /* CAPropertyInfo_Protocol_h */
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// SlimHUD-Bridging-Header.h
3+
// SlimHUD
4+
//
5+
// Created by zorth64 on 17/04/25.
6+
//
7+
#include "CABackdropLayer.h"
8+
#include "CAFilter.h"

SlimHUD/Services/DisplayManager.swift

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -198,21 +198,25 @@ class DisplayManager {
198198
// })
199199
// return windows.contains("Window Server") || windows.contains("Dock")
200200

201+
var foundFullScreenWindow = false
202+
201203
for window in windows {
202-
if let windowName = window[kCGWindowOwnerName] as? String {
203-
// if Window Server or Dock are visible the user is certainly not using fullscreen
204-
if windowName == "Window Server" || windowName == "Dock" {
205-
return false
206-
}
207-
if window[kCGWindowBounds]?["Height"] as? CGFloat ?? 0 == screenSize.height &&
208-
window[kCGWindowBounds]?["Width"] as? CGFloat ?? 0 == screenSize.width &&
209-
windowName != "SlimHUD" {
210-
return true
204+
guard let windowName = window[kCGWindowOwnerName] as? String else { continue }
205+
// if Window Server or Dock are visible the user is certainly not using fullscreen
206+
if windowName == "Window Server" || windowName == "Dock" {
207+
return false
208+
}
209+
if let bounds = window[kCGWindowBounds] as? [String: Any],
210+
let height = bounds["Height"] as? CGFloat,
211+
let width = bounds["Width"] as? CGFloat {
212+
213+
if height == screenSize.height && width == screenSize.width && windowName != "SlimHUD" {
214+
foundFullScreenWindow = true
211215
}
212216
}
213217
}
214218

215-
return true
219+
return foundFullScreenWindow
216220
}
217221

218222
}

0 commit comments

Comments
 (0)