├── BlurFocus.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── w0lf.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── w0lf.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ ├── BlurFocus.xcscheme │ └── xcschememanagement.plist ├── BlurFocus ├── BlurFocus.m └── Info.plist ├── README.md ├── build └── BlurFocus.zip └── preview.png /BlurFocus.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | FBE8FA4D1CD5179800F79687 /* BlurFocus.m in Sources */ = {isa = PBXBuildFile; fileRef = FBE8FA4C1CD5179800F79687 /* BlurFocus.m */; }; 11 | /* End PBXBuildFile section */ 12 | 13 | /* Begin PBXFileReference section */ 14 | FBE8FA431CD5176600F79687 /* BlurFocus.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BlurFocus.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 15 | FBE8FA461CD5176600F79687 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 16 | FBE8FA4C1CD5179800F79687 /* BlurFocus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlurFocus.m; sourceTree = ""; }; 17 | /* End PBXFileReference section */ 18 | 19 | /* Begin PBXFrameworksBuildPhase section */ 20 | FBE8FA401CD5176600F79687 /* Frameworks */ = { 21 | isa = PBXFrameworksBuildPhase; 22 | buildActionMask = 2147483647; 23 | files = ( 24 | ); 25 | runOnlyForDeploymentPostprocessing = 0; 26 | }; 27 | /* End PBXFrameworksBuildPhase section */ 28 | 29 | /* Begin PBXGroup section */ 30 | FBE8FA3A1CD5176600F79687 = { 31 | isa = PBXGroup; 32 | children = ( 33 | FBE8FA451CD5176600F79687 /* BlurFocus */, 34 | FBE8FA441CD5176600F79687 /* Products */, 35 | ); 36 | sourceTree = ""; 37 | }; 38 | FBE8FA441CD5176600F79687 /* Products */ = { 39 | isa = PBXGroup; 40 | children = ( 41 | FBE8FA431CD5176600F79687 /* BlurFocus.bundle */, 42 | ); 43 | name = Products; 44 | sourceTree = ""; 45 | }; 46 | FBE8FA451CD5176600F79687 /* BlurFocus */ = { 47 | isa = PBXGroup; 48 | children = ( 49 | FBE8FA4C1CD5179800F79687 /* BlurFocus.m */, 50 | FBE8FA461CD5176600F79687 /* Info.plist */, 51 | ); 52 | path = BlurFocus; 53 | sourceTree = ""; 54 | }; 55 | /* End PBXGroup section */ 56 | 57 | /* Begin PBXNativeTarget section */ 58 | FBE8FA421CD5176600F79687 /* BlurFocus */ = { 59 | isa = PBXNativeTarget; 60 | buildConfigurationList = FBE8FA491CD5176600F79687 /* Build configuration list for PBXNativeTarget "BlurFocus" */; 61 | buildPhases = ( 62 | FBE8FA3F1CD5176600F79687 /* Sources */, 63 | FBE8FA401CD5176600F79687 /* Frameworks */, 64 | FBE8FA411CD5176600F79687 /* Resources */, 65 | FB4978A41CFC2D0A005A2253 /* ShellScript */, 66 | ); 67 | buildRules = ( 68 | ); 69 | dependencies = ( 70 | ); 71 | name = BlurFocus; 72 | productName = BlurFocus; 73 | productReference = FBE8FA431CD5176600F79687 /* BlurFocus.bundle */; 74 | productType = "com.apple.product-type.bundle"; 75 | }; 76 | /* End PBXNativeTarget section */ 77 | 78 | /* Begin PBXProject section */ 79 | FBE8FA3B1CD5176600F79687 /* Project object */ = { 80 | isa = PBXProject; 81 | attributes = { 82 | LastUpgradeCheck = 0810; 83 | ORGANIZATIONNAME = "Wolfgang Baird"; 84 | TargetAttributes = { 85 | FBE8FA421CD5176600F79687 = { 86 | CreatedOnToolsVersion = 7.3; 87 | }; 88 | }; 89 | }; 90 | buildConfigurationList = FBE8FA3E1CD5176600F79687 /* Build configuration list for PBXProject "BlurFocus" */; 91 | compatibilityVersion = "Xcode 3.2"; 92 | developmentRegion = English; 93 | hasScannedForEncodings = 0; 94 | knownRegions = ( 95 | en, 96 | ); 97 | mainGroup = FBE8FA3A1CD5176600F79687; 98 | productRefGroup = FBE8FA441CD5176600F79687 /* Products */; 99 | projectDirPath = ""; 100 | projectRoot = ""; 101 | targets = ( 102 | FBE8FA421CD5176600F79687 /* BlurFocus */, 103 | ); 104 | }; 105 | /* End PBXProject section */ 106 | 107 | /* Begin PBXResourcesBuildPhase section */ 108 | FBE8FA411CD5176600F79687 /* Resources */ = { 109 | isa = PBXResourcesBuildPhase; 110 | buildActionMask = 2147483647; 111 | files = ( 112 | ); 113 | runOnlyForDeploymentPostprocessing = 0; 114 | }; 115 | /* End PBXResourcesBuildPhase section */ 116 | 117 | /* Begin PBXShellScriptBuildPhase section */ 118 | FB4978A41CFC2D0A005A2253 /* ShellScript */ = { 119 | isa = PBXShellScriptBuildPhase; 120 | buildActionMask = 2147483647; 121 | files = ( 122 | ); 123 | inputPaths = ( 124 | ); 125 | outputPaths = ( 126 | ); 127 | runOnlyForDeploymentPostprocessing = 0; 128 | shellPath = /bin/sh; 129 | shellScript = "# @desc Auto-increment the build number every time the project is run.\nVERSIONNUM=$(/usr/libexec/PlistBuddy -c \"Print CFBundleShortVersionString\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\")\nNEWSUBVERSION=`echo $VERSIONNUM | awk -F \".\" '{print $3}'`\nNEWSUBVERSION=$(($NEWSUBVERSION + 1))\nNEWVERSIONSTRING=`echo $VERSIONNUM | awk -F \".\" '{print $1 \".\" $2 \".'$NEWSUBVERSION'\" }'`\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString $NEWVERSIONSTRING\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\"\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $NEWVERSIONSTRING\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\"\n\n# @desc Move bundle to SIMBL plugins folder after building\nif [[ \"$WRAPPER_EXTENSION\" == \"bundle\" ]]; then\nif [[ -e /Library/Application\\ Support/SIMBL/Plugins ]]; then\ncp -Rf \"${BUILT_PRODUCTS_DIR}/${EXECUTABLE_NAME}.$WRAPPER_EXTENSION\" /Library/Application\\ Support/SIMBL/Plugins\nfi\nfi\n\nif [[ ! -e \"${SRCROOT}/build\" ]]; then\nmkdir \"${SRCROOT}/build\"\nfi\ncp -Rf \"${BUILT_PRODUCTS_DIR}/${EXECUTABLE_NAME}.$WRAPPER_EXTENSION\" \"${SRCROOT}/build\"\n#zip -r \"${SRCROOT}/build/${EXECUTABLE_NAME}_${NEWVERSIONSTRING}.zip\" \"${SRCROOT}/build/${EXECUTABLE_NAME}.bundle\"\n#/Users/w0lf/bin/trashman \"${SRCROOT}/build/${EXECUTABLE_NAME}.bundle\""; 130 | }; 131 | /* End PBXShellScriptBuildPhase section */ 132 | 133 | /* Begin PBXSourcesBuildPhase section */ 134 | FBE8FA3F1CD5176600F79687 /* Sources */ = { 135 | isa = PBXSourcesBuildPhase; 136 | buildActionMask = 2147483647; 137 | files = ( 138 | FBE8FA4D1CD5179800F79687 /* BlurFocus.m in Sources */, 139 | ); 140 | runOnlyForDeploymentPostprocessing = 0; 141 | }; 142 | /* End PBXSourcesBuildPhase section */ 143 | 144 | /* Begin XCBuildConfiguration section */ 145 | FBE8FA471CD5176600F79687 /* Debug */ = { 146 | isa = XCBuildConfiguration; 147 | buildSettings = { 148 | ALWAYS_SEARCH_USER_PATHS = NO; 149 | CLANG_ANALYZER_NONNULL = YES; 150 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 151 | CLANG_CXX_LIBRARY = "libc++"; 152 | CLANG_ENABLE_MODULES = YES; 153 | CLANG_ENABLE_OBJC_ARC = YES; 154 | CLANG_WARN_BOOL_CONVERSION = YES; 155 | CLANG_WARN_CONSTANT_CONVERSION = YES; 156 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 157 | CLANG_WARN_EMPTY_BODY = YES; 158 | CLANG_WARN_ENUM_CONVERSION = YES; 159 | CLANG_WARN_INFINITE_RECURSION = YES; 160 | CLANG_WARN_INT_CONVERSION = YES; 161 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 162 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 163 | CLANG_WARN_UNREACHABLE_CODE = YES; 164 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 165 | CODE_SIGN_IDENTITY = "-"; 166 | COPY_PHASE_STRIP = NO; 167 | DEBUG_INFORMATION_FORMAT = dwarf; 168 | ENABLE_STRICT_OBJC_MSGSEND = YES; 169 | ENABLE_TESTABILITY = YES; 170 | GCC_C_LANGUAGE_STANDARD = gnu99; 171 | GCC_DYNAMIC_NO_PIC = NO; 172 | GCC_NO_COMMON_BLOCKS = YES; 173 | GCC_OPTIMIZATION_LEVEL = 0; 174 | GCC_PREPROCESSOR_DEFINITIONS = ( 175 | "DEBUG=1", 176 | "$(inherited)", 177 | ); 178 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 179 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 180 | GCC_WARN_UNDECLARED_SELECTOR = YES; 181 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 182 | GCC_WARN_UNUSED_FUNCTION = YES; 183 | GCC_WARN_UNUSED_VARIABLE = YES; 184 | MACOSX_DEPLOYMENT_TARGET = 10.9; 185 | MTL_ENABLE_DEBUG_INFO = YES; 186 | ONLY_ACTIVE_ARCH = YES; 187 | SDKROOT = macosx; 188 | }; 189 | name = Debug; 190 | }; 191 | FBE8FA481CD5176600F79687 /* Release */ = { 192 | isa = XCBuildConfiguration; 193 | buildSettings = { 194 | ALWAYS_SEARCH_USER_PATHS = NO; 195 | CLANG_ANALYZER_NONNULL = YES; 196 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 197 | CLANG_CXX_LIBRARY = "libc++"; 198 | CLANG_ENABLE_MODULES = YES; 199 | CLANG_ENABLE_OBJC_ARC = YES; 200 | CLANG_WARN_BOOL_CONVERSION = YES; 201 | CLANG_WARN_CONSTANT_CONVERSION = YES; 202 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 203 | CLANG_WARN_EMPTY_BODY = YES; 204 | CLANG_WARN_ENUM_CONVERSION = YES; 205 | CLANG_WARN_INFINITE_RECURSION = YES; 206 | CLANG_WARN_INT_CONVERSION = YES; 207 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 208 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 209 | CLANG_WARN_UNREACHABLE_CODE = YES; 210 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 211 | CODE_SIGN_IDENTITY = "-"; 212 | COPY_PHASE_STRIP = NO; 213 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 214 | ENABLE_NS_ASSERTIONS = NO; 215 | ENABLE_STRICT_OBJC_MSGSEND = YES; 216 | GCC_C_LANGUAGE_STANDARD = gnu99; 217 | GCC_NO_COMMON_BLOCKS = YES; 218 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 219 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 220 | GCC_WARN_UNDECLARED_SELECTOR = YES; 221 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 222 | GCC_WARN_UNUSED_FUNCTION = YES; 223 | GCC_WARN_UNUSED_VARIABLE = YES; 224 | MACOSX_DEPLOYMENT_TARGET = 10.9; 225 | MTL_ENABLE_DEBUG_INFO = NO; 226 | SDKROOT = macosx; 227 | }; 228 | name = Release; 229 | }; 230 | FBE8FA4A1CD5176600F79687 /* Debug */ = { 231 | isa = XCBuildConfiguration; 232 | buildSettings = { 233 | COMBINE_HIDPI_IMAGES = YES; 234 | INFOPLIST_FILE = BlurFocus/Info.plist; 235 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; 236 | PRODUCT_BUNDLE_IDENTIFIER = org.w0lf.BlurFocus; 237 | PRODUCT_NAME = "$(TARGET_NAME)"; 238 | SKIP_INSTALL = YES; 239 | WRAPPER_EXTENSION = bundle; 240 | }; 241 | name = Debug; 242 | }; 243 | FBE8FA4B1CD5176600F79687 /* Release */ = { 244 | isa = XCBuildConfiguration; 245 | buildSettings = { 246 | COMBINE_HIDPI_IMAGES = YES; 247 | INFOPLIST_FILE = BlurFocus/Info.plist; 248 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; 249 | PRODUCT_BUNDLE_IDENTIFIER = org.w0lf.BlurFocus; 250 | PRODUCT_NAME = "$(TARGET_NAME)"; 251 | SKIP_INSTALL = YES; 252 | WRAPPER_EXTENSION = bundle; 253 | }; 254 | name = Release; 255 | }; 256 | /* End XCBuildConfiguration section */ 257 | 258 | /* Begin XCConfigurationList section */ 259 | FBE8FA3E1CD5176600F79687 /* Build configuration list for PBXProject "BlurFocus" */ = { 260 | isa = XCConfigurationList; 261 | buildConfigurations = ( 262 | FBE8FA471CD5176600F79687 /* Debug */, 263 | FBE8FA481CD5176600F79687 /* Release */, 264 | ); 265 | defaultConfigurationIsVisible = 0; 266 | defaultConfigurationName = Release; 267 | }; 268 | FBE8FA491CD5176600F79687 /* Build configuration list for PBXNativeTarget "BlurFocus" */ = { 269 | isa = XCConfigurationList; 270 | buildConfigurations = ( 271 | FBE8FA4A1CD5176600F79687 /* Debug */, 272 | FBE8FA4B1CD5176600F79687 /* Release */, 273 | ); 274 | defaultConfigurationIsVisible = 0; 275 | defaultConfigurationName = Release; 276 | }; 277 | /* End XCConfigurationList section */ 278 | }; 279 | rootObject = FBE8FA3B1CD5176600F79687 /* Project object */; 280 | } 281 | -------------------------------------------------------------------------------- /BlurFocus.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /BlurFocus.xcodeproj/project.xcworkspace/xcuserdata/w0lf.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w0lfschild/BlurFocus/3e55e5954bd060416a635cc47e7b28c2aa55651f/BlurFocus.xcodeproj/project.xcworkspace/xcuserdata/w0lf.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /BlurFocus.xcodeproj/xcuserdata/w0lf.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /BlurFocus.xcodeproj/xcuserdata/w0lf.xcuserdatad/xcschemes/BlurFocus.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /BlurFocus.xcodeproj/xcuserdata/w0lf.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | BlurFocus.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | FBE8FA421CD5176600F79687 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /BlurFocus/BlurFocus.m: -------------------------------------------------------------------------------- 1 | // 2 | // BlurFocus.m 3 | // BlurFocus 4 | // 5 | // Created by Wolfgang Baird on 4/30/16. 6 | // Copyright © 2016 Wolfgang Baird. All rights reserved. 7 | // 8 | 9 | @import AppKit; 10 | #import 11 | #import 12 | 13 | NSArray* BF_addFilter(NSArray* gray, NSArray* def) 14 | { 15 | NSMutableArray *newFilters = [[NSMutableArray alloc] initWithArray:def]; 16 | [newFilters addObjectsFromArray:gray]; 17 | NSArray *result = [newFilters copy]; 18 | return result; 19 | } 20 | 21 | @interface BlurFocus : NSObject 22 | @end 23 | 24 | @implementation BlurFocus 25 | 26 | NSArray *_blurFilters; 27 | static void *filterCache = &filterCache; 28 | static void *isActive = &isActive; 29 | 30 | + (void)load 31 | { 32 | NSArray *blacklist = @[@"com.apple.notificationcenterui", @"com.google.chrome", @"com.google.chrome.canary", @"com.spotify.client"]; 33 | NSString *appID = [[NSBundle mainBundle] bundleIdentifier]; 34 | if (![blacklist containsObject:appID]) 35 | { 36 | CIFilter *filt = [CIFilter filterWithName:@"CIGaussianBlur"]; 37 | [filt setDefaults]; 38 | [filt setValue:[NSNumber numberWithFloat:1.0] forKey:@"inputRadius"]; 39 | 40 | _blurFilters = [NSArray arrayWithObjects:filt, nil]; 41 | 42 | NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; 43 | [center addObserver:self selector:@selector(BF_blurWindow:) name:NSWindowDidResignKeyNotification object:nil]; 44 | [center addObserver:self selector:@selector(BF_blurWindow:) name:NSWindowDidResignMainNotification object:nil]; 45 | [center addObserver:self selector:@selector(BF_clearWindow:) name:NSWindowDidBecomeMainNotification object:nil]; 46 | [center addObserver:self selector:@selector(BF_clearWindow:) name:NSWindowDidBecomeKeyNotification object:nil]; 47 | NSLog(@"BlurFocus loaded..."); 48 | } 49 | } 50 | 51 | + (void)BF_blurWindow:(NSNotification *)note 52 | { 53 | NSWindow *win = note.object; 54 | if (![objc_getAssociatedObject(win, isActive) boolValue] && !([win styleMask] & NSWindowStyleMaskFullScreen)) { 55 | NSArray *_defaultFilters = [[win.contentView superview] contentFilters]; 56 | objc_setAssociatedObject(win, filterCache, _defaultFilters, OBJC_ASSOCIATION_RETAIN); 57 | [[win.contentView superview] setWantsLayer:YES]; 58 | [[win.contentView superview] setContentFilters:BF_addFilter(_blurFilters, _defaultFilters)]; 59 | [win setAlphaValue:0.9]; 60 | objc_setAssociatedObject(win, isActive, [NSNumber numberWithBool:true], OBJC_ASSOCIATION_RETAIN); 61 | } 62 | } 63 | 64 | + (void)BF_clearWindow:(NSNotification *)note 65 | { 66 | NSWindow *win = note.object; 67 | if ([objc_getAssociatedObject(win, isActive) boolValue]) { 68 | [[win.contentView superview] setWantsLayer:YES]; 69 | [[win.contentView superview] setContentFilters:objc_getAssociatedObject(win, filterCache)]; 70 | [win setAlphaValue:1.0]; 71 | objc_setAssociatedObject(win, isActive, [NSNumber numberWithBool:false], OBJC_ASSOCIATION_RETAIN); 72 | } 73 | } 74 | 75 | @end 76 | -------------------------------------------------------------------------------- /BlurFocus/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0.19 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0.19 23 | NSHumanReadableCopyright 24 | Copyright © 2016 Wolfgang Baird. All rights reserved. 25 | NSPrincipalClass 26 | 27 | SIMBLTargetApplications 28 | 29 | 30 | BundleIdentifier 31 | * 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BlurFocus 2 | 3 | ![preview](preview.png) 4 | 5 | # Information: 6 | 7 | - Designed for 10.9+ 8 | - MacForge plugin to blur background windows on MacOS 9 | - Author: [w0lfschild](https://github.com/w0lfschild) 10 | 11 | # Installation: 12 | 13 | 1. Download [MacForge](https://github.com/w0lfschild/app_updates/raw/master/MacForge/MacForge.zip) 14 | 2. Install [BlurFocus](https://www.macenhance.com/mflink?macforge://github.com/w0lfschild/myRepo/raw/master/mytweaks/org.w0lf.BlurFocus) 15 | 16 | ### License: 17 | Pretty much the BSD license, just don't repackage it and call it your own please! 18 | Also if you do make some changes, feel free to make a pull request and help make things more awesome! 19 | -------------------------------------------------------------------------------- /build/BlurFocus.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w0lfschild/BlurFocus/3e55e5954bd060416a635cc47e7b28c2aa55651f/build/BlurFocus.zip -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w0lfschild/BlurFocus/3e55e5954bd060416a635cc47e7b28c2aa55651f/preview.png --------------------------------------------------------------------------------