Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions SlimHUD.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
objects = {

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

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

/* Begin PBXGroup section */
54CD366E2E307943003B7522 /* PrivateHeaders */ = {
isa = PBXGroup;
children = (
54CD366F2E307A22003B7522 /* CABackdropLayer.h */,
54CD36702E307A22003B7522 /* CAFilter.h */,
54CD36712E307A22003B7522 /* CAPropertyInfo-Protocol.h */,
54CD36722E307A22003B7522 /* SlimHUD-Bridging-Header.h */,
);
path = PrivateHeaders;
sourceTree = "<group>";
};
FA1A024E29CE80E100365137 /* Frameworks */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -266,6 +283,7 @@
FA95EDF32956FCBF005B39CD /* SlimHUD */ = {
isa = PBXGroup;
children = (
54CD366E2E307943003B7522 /* PrivateHeaders */,
FA95EDF42956FCBF005B39CD /* AppDelegate.swift */,
FA95EE1F2956FCDA005B39CD /* Controllers */,
FA95EE4B2956FE50005B39CD /* Extensions */,
Expand Down Expand Up @@ -392,6 +410,7 @@
FA95EE622956FEE4005B39CD /* Views */ = {
isa = PBXGroup;
children = (
54CD36732E307B03003B7522 /* BackdropLayerView.swift */,
FA95EE7B295741DE005B39CD /* MainMenu.storyboard */,
FA95EE6C29573F36005B39CD /* Hud.swift */,
FA95EE632956FEEA005B39CD /* Settings */,
Expand Down Expand Up @@ -665,6 +684,7 @@
FA95EDF52956FCBF005B39CD /* AppDelegate.swift in Sources */,
FA98AB4429CD194500D3F92A /* ShadowPopupViewController.swift in Sources */,
FA95EE512956FE73005B39CD /* NSButtonExtension.swift in Sources */,
54CD36742E307B03003B7522 /* BackdropLayerView.swift in Sources */,
FA2D3DE22971EC2B00ABADDE /* MainMenuController.swift in Sources */,
FACDE693297F1BD300EDF165 /* TabsView.swift in Sources */,
FA232B4E2981E6A900F96E51 /* AboutViewController.swift in Sources */,
Expand Down Expand Up @@ -860,6 +880,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.alexpera.SlimHUD;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "$SRCROOT/SlimHUD/PrivateHeaders/SlimHUD-Bridging-Header.h";
SWIFT_VERSION = 5.0;
};
name = Debug;
Expand Down Expand Up @@ -892,6 +913,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.alexpera.SlimHUD;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "$SRCROOT/SlimHUD/PrivateHeaders/SlimHUD-Bridging-Header.h";
SWIFT_VERSION = 5.0;
};
name = Release;
Expand Down
59 changes: 59 additions & 0 deletions SlimHUD/PrivateHeaders/CABackdropLayer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//
// Generated by https://github.com/blacktop/ipsw (Version: 3.1.549, BuildCommit: 3da8ece356e0f31d6b3a8e7f419e446ace69898f)
//
// - LC_BUILD_VERSION: Platform: macOS, MinOS: 15, SDK: 15, Tool: ld (1115.7.3)
// - LC_BUILD_VERSION: Platform: macCatalyst, MinOS: 18, SDK: 18, Tool: ld (1115.7.3)
// - LC_SOURCE_VERSION: 1149.6.2.0.0
//
#ifndef CABackdropLayer_h
#define CABackdropLayer_h

#include <QuartzCore/CALayer.h>

@import Foundation;

@protocol CABackdropLayerDelegate, CALayerDelegate;

@interface CABackdropLayer : CALayer

@property BOOL enabled;
@property (copy) NSString *groupName;
@property BOOL usesGlobalGroupNamespace;
@property (copy) NSString *groupNamespace;
@property double scale;
@property CGRect backdropRect;
@property double marginWidth;
@property BOOL disablesOccludedBackdropBlurs;
@property BOOL captureOnly;
@property BOOL allowsInPlaceFiltering;
@property BOOL reducesCaptureBitDepth;
@property BOOL ignoresScreenClip;
@property double bleedAmount;
@property BOOL windowServerAware;
@property BOOL inverseMeshed;
@property BOOL allowsSubstituteColor;
@property struct CGColor * substituteColor;
@property BOOL ignoresOffscreenGroups;
@property double zoom;
@property (weak) id <CABackdropLayerDelegate, CALayerDelegate> delegate;

/* class methods */
+ (void)initialize;
+ (id)defaultValueForKey:(id)key;
+ (id)CA_attributes;
+ (BOOL)CA_automaticallyNotifiesObservers:(Class)observers;
+ (BOOL)_hasRenderLayerSubclass;

/* instance methods */
- (void)didChangeValueForKey:(id)key;
- (BOOL)isEnabled;
- (void)layerDidBecomeVisible:(BOOL)visible;
- (BOOL)isInverseMeshed;
- (void *)_copyRenderLayer:(void *)layer layerFlags:(unsigned int)flags commitFlags:(unsigned int *)flags;
- (void)_renderBackgroundInContext:(struct CGContext *)context;
- (_Bool)_renderLayerDefinesProperty:(unsigned int)property;
- (unsigned int)_renderLayerPropertyAnimationFlags:(unsigned int)flags;

@end

#endif /* CABackdropLayer_h */
97 changes: 97 additions & 0 deletions SlimHUD/PrivateHeaders/CAFilter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
/* CoreAnimation - CAFilter.h

Copyright (c) 2006-2007 Apple Inc.
All rights reserved. */

#ifndef CAFILTER_H
#define CAFILTER_H

#include <QuartzCore/CABase.h>
#include "CAPropertyInfo-Protocol.h"

CA_EXTERN_C_BEGIN

@interface CAFilter : NSObject <NSCopying, NSMutableCopying, CAPropertyInfo>

@property (class, readonly) NSArray<NSString *> *_Nonnull filterTypes;

@property (assign) BOOL cachesInputImage;
@property (assign, getter=isEnabled) BOOL enabled;
@property (copy) NSString *name;
@property (readonly, assign) NSString *type;

@property (readonly, strong) NSArray<NSString *> *inputKeys;
@property (readonly, strong) NSArray<NSString *> *outputKeys;

+ (nullable CAFilter *)filterWithType:(nonnull NSString *)type;
+ (nullable CAFilter *)filterWithName:(nonnull NSString *)name;
- (nullable instancetype)initWithType:(nonnull NSString *)type;
- (nullable instancetype)initWithName:(nonnull NSString *)name;

- (void)setDefaults;

@end

/** Filter types. **/

CA_EXTERN NSString * const kCAFilterMultiplyColor;
CA_EXTERN NSString * const kCAFilterColorAdd;
CA_EXTERN NSString * const kCAFilterColorSubtract;
CA_EXTERN NSString * const kCAFilterColorMonochrome;
CA_EXTERN NSString * const kCAFilterColorMatrix;
CA_EXTERN NSString * const kCAFilterColorHueRotate;
CA_EXTERN NSString * const kCAFilterColorSaturate;
CA_EXTERN NSString * const kCAFilterColorBrightness;
CA_EXTERN NSString * const kCAFilterColorContrast;
CA_EXTERN NSString * const kCAFilterColorInvert;
CA_EXTERN NSString * const kCAFilterLuminanceToAlpha;
CA_EXTERN NSString * const kCAFilterBias;
CA_EXTERN NSString * const kCAFilterDistanceField;
CA_EXTERN NSString * const kCAFilterGaussianBlur;
CA_EXTERN NSString * const kCAFilterLanczosResize;
CA_EXTERN NSString * const kCAFilterClear;
CA_EXTERN NSString * const kCAFilterCopy;
CA_EXTERN NSString * const kCAFilterSourceOver;
CA_EXTERN NSString * const kCAFilterSourceIn;
CA_EXTERN NSString * const kCAFilterSourceOut;
CA_EXTERN NSString * const kCAFilterSourceAtop;
CA_EXTERN NSString * const kCAFilterDest;
CA_EXTERN NSString * const kCAFilterDestOver;
CA_EXTERN NSString * const kCAFilterDestIn;
CA_EXTERN NSString * const kCAFilterDestOut;
CA_EXTERN NSString * const kCAFilterDestAtop;
CA_EXTERN NSString * const kCAFilterXor;
CA_EXTERN NSString * const kCAFilterPlusL;
CA_EXTERN NSString * const kCAFilterSubtractS;
CA_EXTERN NSString * const kCAFilterSubtractD;
CA_EXTERN NSString * const kCAFilterMultiply;
CA_EXTERN NSString * const kCAFilterMinimum;
CA_EXTERN NSString * const kCAFilterMaximum;
CA_EXTERN NSString * const kCAFilterPlusD;
CA_EXTERN NSString * const kCAFilterNormalBlendMode;
CA_EXTERN NSString * const kCAFilterMultiplyBlendMode;
CA_EXTERN NSString * const kCAFilterScreenBlendMode;
CA_EXTERN NSString * const kCAFilterOverlayBlendMode;
CA_EXTERN NSString * const kCAFilterDarkenBlendMode;
CA_EXTERN NSString * const kCAFilterLightenBlendMode;
CA_EXTERN NSString * const kCAFilterColorDodgeBlendMode;
CA_EXTERN NSString * const kCAFilterColorBurnBlendMode;
CA_EXTERN NSString * const kCAFilterSoftLightBlendMode;
CA_EXTERN NSString * const kCAFilterHardLightBlendMode;
CA_EXTERN NSString * const kCAFilterDifferenceBlendMode;
CA_EXTERN NSString * const kCAFilterExclusionBlendMode;
CA_EXTERN NSString * const kCAFilterSubtractBlendMode;
CA_EXTERN NSString * const kCAFilterDivideBlendMode;
CA_EXTERN NSString * const kCAFilterLinearBurnBlendMode;
CA_EXTERN NSString * const kCAFilterLinearDodgeBlendMode;
CA_EXTERN NSString * const kCAFilterLinearLightBlendMode;
CA_EXTERN NSString * const kCAFilterPinLightBlendMode;
CA_EXTERN NSString * const kCAFilterPageCurl;
CA_EXTERN NSString * const kCAFilterVibrantDark;
CA_EXTERN NSString * const kCAFilterVibrantLight;
CA_EXTERN NSString * const kCAFilterDarkenSourceOver;
CA_EXTERN NSString * const kCAFilterLightenSourceOver;

CA_EXTERN_C_END

#endif // CAFILTER_H
27 changes: 27 additions & 0 deletions SlimHUD/PrivateHeaders/CAPropertyInfo-Protocol.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//
// Generated by https://github.com/blacktop/ipsw (Version: 3.1.549, BuildCommit: 3da8ece356e0f31d6b3a8e7f419e446ace69898f)
//
// - LC_BUILD_VERSION: Platform: macOS, MinOS: 15, SDK: 15, Tool: ld (1115.7.3)
// - LC_BUILD_VERSION: Platform: macCatalyst, MinOS: 18, SDK: 18, Tool: ld (1115.7.3)
// - LC_SOURCE_VERSION: 1149.6.2.0.0
//
#ifndef CAPropertyInfo_Protocol_h
#define CAPropertyInfo_Protocol_h
@import Foundation;

@protocol CAPropertyInfo

@required

/* class methods */
+ (id)properties;
+ (id)attributesForKey:(id)key;

/* required instance methods */
- (id)attributesForKeyPath:(id)path;

@optional

@end

#endif /* CAPropertyInfo_Protocol_h */
8 changes: 8 additions & 0 deletions SlimHUD/PrivateHeaders/SlimHUD-Bridging-Header.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
//
// SlimHUD-Bridging-Header.h
// SlimHUD
//
// Created by zorth64 on 17/04/25.
//
#include "CABackdropLayer.h"
#include "CAFilter.h"
24 changes: 14 additions & 10 deletions SlimHUD/Services/DisplayManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -198,21 +198,25 @@ class DisplayManager {
// })
// return windows.contains("Window Server") || windows.contains("Dock")

var foundFullScreenWindow = false

for window in windows {
if let windowName = window[kCGWindowOwnerName] as? String {
// if Window Server or Dock are visible the user is certainly not using fullscreen
if windowName == "Window Server" || windowName == "Dock" {
return false
}
if window[kCGWindowBounds]?["Height"] as? CGFloat ?? 0 == screenSize.height &&
window[kCGWindowBounds]?["Width"] as? CGFloat ?? 0 == screenSize.width &&
windowName != "SlimHUD" {
return true
guard let windowName = window[kCGWindowOwnerName] as? String else { continue }
// if Window Server or Dock are visible the user is certainly not using fullscreen
if windowName == "Window Server" || windowName == "Dock" {
return false
}
if let bounds = window[kCGWindowBounds] as? [String: Any],
let height = bounds["Height"] as? CGFloat,
let width = bounds["Width"] as? CGFloat {

if height == screenSize.height && width == screenSize.width && windowName != "SlimHUD" {
foundFullScreenWindow = true
}
}
}

return true
return foundFullScreenWindow
}

}
Loading
Loading