├── .gitignore ├── preview.png ├── CleanMenuBar.xcodeproj ├── xcuserdata │ └── kevinmbeaulieu.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── CleanMenuBar.xcscheme ├── project.xcworkspace │ └── contents.xcworkspacedata └── project.pbxproj ├── CleanMenuBar ├── CleanMenuBar.h ├── Info.plist └── CleanMenuBar.m ├── README.md └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.xcuserstate 3 | *.xcsettings 4 | *.sketch 5 | -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinmbeaulieu/CleanMenuBar/HEAD/preview.png -------------------------------------------------------------------------------- /CleanMenuBar.xcodeproj/xcuserdata/kevinmbeaulieu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /CleanMenuBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CleanMenuBar/CleanMenuBar.h: -------------------------------------------------------------------------------- 1 | // 2 | // CleanMenuBar.h 3 | // CleanMenuBar 4 | // 5 | // Created by Kevin Beaulieu on 12/22/16. 6 | // Copyright © 2016 Kevin M Beaulieu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CleanMenuBar : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CleanMenuBar 2 | 3 | ![preview](preview.png) 4 | 5 | # Information: 6 | 7 | - Tested on 10.12 8 | - SIMBL plugin to hide menu bar icons for selected third-party apps on macOS 9 | - Author: 10 | + [Kevin Beaulieu](https://github.com/kevinmbeaulieu) 11 | 12 | # Installation: 13 | 14 | 1. Download [mySIMBL](https://github.com/w0lfschild/app_updates/raw/master/mySIMBL/mySIMBL_0.2.5.zip) 15 | 2. Clone this repo 16 | 3. Edit `appsToHide` list in `CleanMenuBar/CleanMenuBar.m` to include bundle identifiers of apps you'd like to hide from menu bar. 17 | 4. Build Xcode project (will add CleanMenuBar to mySIMBL automatically) 18 | 5. Logout & log back into macOS 19 | -------------------------------------------------------------------------------- /CleanMenuBar.xcodeproj/xcuserdata/kevinmbeaulieu.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CleanMenuBar.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | Übersicht.xcscheme 13 | 14 | orderHint 15 | 2 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | B0C979291E0C796800EECDD4 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /CleanMenuBar/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 | CFBundleVersion 20 | 1 21 | NSHumanReadableCopyright 22 | Copyright © 2016 Kevin M Beaulieu. All rights reserved. 23 | NSPrincipalClass 24 | CleanMenuBar 25 | SIMBLTargetApplications 26 | 27 | 28 | BundleIdentifier 29 | * 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Kevin Beaulieu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /CleanMenuBar/CleanMenuBar.m: -------------------------------------------------------------------------------- 1 | // 2 | // CleanMenuBar.m 3 | // CleanMenuBar 4 | // 5 | // Created by Kevin Beaulieu on 12/22/16. 6 | // Copyright © 2016 Kevin M Beaulieu. All rights reserved. 7 | // 8 | 9 | #import "CleanMenuBar.h" 10 | 11 | @implementation CleanMenuBar 12 | 13 | + (void) load { 14 | NSArray *appsToHide = @[ 15 | @"co.atlasinformatics.Recall", 16 | @"com.todoist.mac.Todoist", 17 | @"com.knock.mac", 18 | @"net.matthewpalmer.Rocket", 19 | @"com.lastpass.LastPass", 20 | @"com.prosofteng.DriveGenius2", 21 | @"com.prosofteng.DriveGenius2.DrivePulse", 22 | @"com.google.GoogleDrive" 23 | ]; 24 | 25 | NSString *appID = [[NSBundle mainBundle] bundleIdentifier]; 26 | if ([appsToHide containsObject:appID]) { 27 | [self hideFromStatusBar]; 28 | } 29 | } 30 | 31 | + (void)hideFromStatusBar { 32 | NSStatusBar *statusBar = [NSStatusBar systemStatusBar]; 33 | 34 | NSPointerArray *statusItems = [statusBar valueForKey:@"_items"]; 35 | for (int i = 0; i < statusItems.count; i++) { 36 | NSStatusItem *item = [statusItems pointerAtIndex:i]; 37 | [statusBar removeStatusItem:item]; 38 | } 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /CleanMenuBar.xcodeproj/xcuserdata/kevinmbeaulieu.xcuserdatad/xcschemes/CleanMenuBar.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 | -------------------------------------------------------------------------------- /CleanMenuBar.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | B0C979351E0C798500EECDD4 /* CleanMenuBar.m in Sources */ = {isa = PBXBuildFile; fileRef = B0C979341E0C798500EECDD4 /* CleanMenuBar.m */; }; 11 | /* End PBXBuildFile section */ 12 | 13 | /* Begin PBXFileReference section */ 14 | B0C9792A1E0C796800EECDD4 /* CleanMenuBar.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CleanMenuBar.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 15 | B0C9792D1E0C796800EECDD4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 16 | B0C979331E0C798500EECDD4 /* CleanMenuBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CleanMenuBar.h; sourceTree = ""; }; 17 | B0C979341E0C798500EECDD4 /* CleanMenuBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CleanMenuBar.m; sourceTree = ""; }; 18 | /* End PBXFileReference section */ 19 | 20 | /* Begin PBXFrameworksBuildPhase section */ 21 | B0C979271E0C796800EECDD4 /* Frameworks */ = { 22 | isa = PBXFrameworksBuildPhase; 23 | buildActionMask = 2147483647; 24 | files = ( 25 | ); 26 | runOnlyForDeploymentPostprocessing = 0; 27 | }; 28 | /* End PBXFrameworksBuildPhase section */ 29 | 30 | /* Begin PBXGroup section */ 31 | B0C979211E0C796800EECDD4 = { 32 | isa = PBXGroup; 33 | children = ( 34 | B0C9792C1E0C796800EECDD4 /* CleanMenuBar */, 35 | B0C9792B1E0C796800EECDD4 /* Products */, 36 | ); 37 | sourceTree = ""; 38 | }; 39 | B0C9792B1E0C796800EECDD4 /* Products */ = { 40 | isa = PBXGroup; 41 | children = ( 42 | B0C9792A1E0C796800EECDD4 /* CleanMenuBar.bundle */, 43 | ); 44 | name = Products; 45 | sourceTree = ""; 46 | }; 47 | B0C9792C1E0C796800EECDD4 /* CleanMenuBar */ = { 48 | isa = PBXGroup; 49 | children = ( 50 | B0C9792D1E0C796800EECDD4 /* Info.plist */, 51 | B0C979331E0C798500EECDD4 /* CleanMenuBar.h */, 52 | B0C979341E0C798500EECDD4 /* CleanMenuBar.m */, 53 | ); 54 | path = CleanMenuBar; 55 | sourceTree = ""; 56 | }; 57 | /* End PBXGroup section */ 58 | 59 | /* Begin PBXNativeTarget section */ 60 | B0C979291E0C796800EECDD4 /* CleanMenuBar */ = { 61 | isa = PBXNativeTarget; 62 | buildConfigurationList = B0C979301E0C796800EECDD4 /* Build configuration list for PBXNativeTarget "CleanMenuBar" */; 63 | buildPhases = ( 64 | B0C979261E0C796800EECDD4 /* Sources */, 65 | B0C979271E0C796800EECDD4 /* Frameworks */, 66 | B0C979281E0C796800EECDD4 /* Resources */, 67 | ); 68 | buildRules = ( 69 | ); 70 | dependencies = ( 71 | ); 72 | name = CleanMenuBar; 73 | productName = CleanMenuBar; 74 | productReference = B0C9792A1E0C796800EECDD4 /* CleanMenuBar.bundle */; 75 | productType = "com.apple.product-type.bundle"; 76 | }; 77 | /* End PBXNativeTarget section */ 78 | 79 | /* Begin PBXProject section */ 80 | B0C979221E0C796800EECDD4 /* Project object */ = { 81 | isa = PBXProject; 82 | attributes = { 83 | LastUpgradeCheck = 0820; 84 | ORGANIZATIONNAME = "Kevin M Beaulieu"; 85 | TargetAttributes = { 86 | B0C979291E0C796800EECDD4 = { 87 | CreatedOnToolsVersion = 8.2.1; 88 | ProvisioningStyle = Automatic; 89 | }; 90 | }; 91 | }; 92 | buildConfigurationList = B0C979251E0C796800EECDD4 /* Build configuration list for PBXProject "CleanMenuBar" */; 93 | compatibilityVersion = "Xcode 3.2"; 94 | developmentRegion = English; 95 | hasScannedForEncodings = 0; 96 | knownRegions = ( 97 | en, 98 | ); 99 | mainGroup = B0C979211E0C796800EECDD4; 100 | productRefGroup = B0C9792B1E0C796800EECDD4 /* Products */; 101 | projectDirPath = ""; 102 | projectRoot = ""; 103 | targets = ( 104 | B0C979291E0C796800EECDD4 /* CleanMenuBar */, 105 | ); 106 | }; 107 | /* End PBXProject section */ 108 | 109 | /* Begin PBXResourcesBuildPhase section */ 110 | B0C979281E0C796800EECDD4 /* Resources */ = { 111 | isa = PBXResourcesBuildPhase; 112 | buildActionMask = 2147483647; 113 | files = ( 114 | ); 115 | runOnlyForDeploymentPostprocessing = 0; 116 | }; 117 | /* End PBXResourcesBuildPhase section */ 118 | 119 | /* Begin PBXSourcesBuildPhase section */ 120 | B0C979261E0C796800EECDD4 /* Sources */ = { 121 | isa = PBXSourcesBuildPhase; 122 | buildActionMask = 2147483647; 123 | files = ( 124 | B0C979351E0C798500EECDD4 /* CleanMenuBar.m in Sources */, 125 | ); 126 | runOnlyForDeploymentPostprocessing = 0; 127 | }; 128 | /* End PBXSourcesBuildPhase section */ 129 | 130 | /* Begin XCBuildConfiguration section */ 131 | B0C9792E1E0C796800EECDD4 /* Debug */ = { 132 | isa = XCBuildConfiguration; 133 | buildSettings = { 134 | ALWAYS_SEARCH_USER_PATHS = NO; 135 | CLANG_ANALYZER_NONNULL = YES; 136 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 137 | CLANG_CXX_LIBRARY = "libc++"; 138 | CLANG_ENABLE_MODULES = YES; 139 | CLANG_ENABLE_OBJC_ARC = YES; 140 | CLANG_WARN_BOOL_CONVERSION = YES; 141 | CLANG_WARN_CONSTANT_CONVERSION = YES; 142 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 143 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 144 | CLANG_WARN_EMPTY_BODY = YES; 145 | CLANG_WARN_ENUM_CONVERSION = YES; 146 | CLANG_WARN_INFINITE_RECURSION = YES; 147 | CLANG_WARN_INT_CONVERSION = YES; 148 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 149 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 150 | CLANG_WARN_UNREACHABLE_CODE = YES; 151 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 152 | CODE_SIGN_IDENTITY = ""; 153 | COPY_PHASE_STRIP = NO; 154 | DEBUG_INFORMATION_FORMAT = dwarf; 155 | ENABLE_STRICT_OBJC_MSGSEND = YES; 156 | ENABLE_TESTABILITY = YES; 157 | GCC_C_LANGUAGE_STANDARD = gnu99; 158 | GCC_DYNAMIC_NO_PIC = NO; 159 | GCC_NO_COMMON_BLOCKS = YES; 160 | GCC_OPTIMIZATION_LEVEL = 0; 161 | GCC_PREPROCESSOR_DEFINITIONS = ( 162 | "DEBUG=1", 163 | "$(inherited)", 164 | ); 165 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 166 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 167 | GCC_WARN_UNDECLARED_SELECTOR = YES; 168 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 169 | GCC_WARN_UNUSED_FUNCTION = YES; 170 | GCC_WARN_UNUSED_VARIABLE = YES; 171 | MACOSX_DEPLOYMENT_TARGET = 10.12; 172 | MTL_ENABLE_DEBUG_INFO = YES; 173 | ONLY_ACTIVE_ARCH = YES; 174 | SDKROOT = macosx; 175 | }; 176 | name = Debug; 177 | }; 178 | B0C9792F1E0C796800EECDD4 /* Release */ = { 179 | isa = XCBuildConfiguration; 180 | buildSettings = { 181 | ALWAYS_SEARCH_USER_PATHS = NO; 182 | CLANG_ANALYZER_NONNULL = YES; 183 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 184 | CLANG_CXX_LIBRARY = "libc++"; 185 | CLANG_ENABLE_MODULES = YES; 186 | CLANG_ENABLE_OBJC_ARC = YES; 187 | CLANG_WARN_BOOL_CONVERSION = YES; 188 | CLANG_WARN_CONSTANT_CONVERSION = YES; 189 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 190 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 191 | CLANG_WARN_EMPTY_BODY = YES; 192 | CLANG_WARN_ENUM_CONVERSION = YES; 193 | CLANG_WARN_INFINITE_RECURSION = YES; 194 | CLANG_WARN_INT_CONVERSION = YES; 195 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 196 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 197 | CLANG_WARN_UNREACHABLE_CODE = YES; 198 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 199 | CODE_SIGN_IDENTITY = ""; 200 | COPY_PHASE_STRIP = NO; 201 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 202 | ENABLE_NS_ASSERTIONS = NO; 203 | ENABLE_STRICT_OBJC_MSGSEND = YES; 204 | GCC_C_LANGUAGE_STANDARD = gnu99; 205 | GCC_NO_COMMON_BLOCKS = YES; 206 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 207 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 208 | GCC_WARN_UNDECLARED_SELECTOR = YES; 209 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 210 | GCC_WARN_UNUSED_FUNCTION = YES; 211 | GCC_WARN_UNUSED_VARIABLE = YES; 212 | MACOSX_DEPLOYMENT_TARGET = 10.12; 213 | MTL_ENABLE_DEBUG_INFO = NO; 214 | SDKROOT = macosx; 215 | }; 216 | name = Release; 217 | }; 218 | B0C979311E0C796800EECDD4 /* Debug */ = { 219 | isa = XCBuildConfiguration; 220 | buildSettings = { 221 | CODE_SIGN_IDENTITY = ""; 222 | COMBINE_HIDPI_IMAGES = YES; 223 | CONFIGURATION_BUILD_DIR = "~/Library/Application Support/SIMBL/Plugins"; 224 | INFOPLIST_FILE = CleanMenuBar/Info.plist; 225 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; 226 | PRODUCT_BUNDLE_IDENTIFIER = com.kevinmbeaulieu.CleanMenuBar; 227 | PRODUCT_NAME = "$(TARGET_NAME)"; 228 | SKIP_INSTALL = YES; 229 | WRAPPER_EXTENSION = bundle; 230 | }; 231 | name = Debug; 232 | }; 233 | B0C979321E0C796800EECDD4 /* Release */ = { 234 | isa = XCBuildConfiguration; 235 | buildSettings = { 236 | CODE_SIGN_IDENTITY = ""; 237 | COMBINE_HIDPI_IMAGES = YES; 238 | INFOPLIST_FILE = CleanMenuBar/Info.plist; 239 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; 240 | PRODUCT_BUNDLE_IDENTIFIER = com.kevinmbeaulieu.CleanMenuBar; 241 | PRODUCT_NAME = "$(TARGET_NAME)"; 242 | SKIP_INSTALL = YES; 243 | WRAPPER_EXTENSION = bundle; 244 | }; 245 | name = Release; 246 | }; 247 | /* End XCBuildConfiguration section */ 248 | 249 | /* Begin XCConfigurationList section */ 250 | B0C979251E0C796800EECDD4 /* Build configuration list for PBXProject "CleanMenuBar" */ = { 251 | isa = XCConfigurationList; 252 | buildConfigurations = ( 253 | B0C9792E1E0C796800EECDD4 /* Debug */, 254 | B0C9792F1E0C796800EECDD4 /* Release */, 255 | ); 256 | defaultConfigurationIsVisible = 0; 257 | defaultConfigurationName = Release; 258 | }; 259 | B0C979301E0C796800EECDD4 /* Build configuration list for PBXNativeTarget "CleanMenuBar" */ = { 260 | isa = XCConfigurationList; 261 | buildConfigurations = ( 262 | B0C979311E0C796800EECDD4 /* Debug */, 263 | B0C979321E0C796800EECDD4 /* Release */, 264 | ); 265 | defaultConfigurationIsVisible = 0; 266 | defaultConfigurationName = Release; 267 | }; 268 | /* End XCConfigurationList section */ 269 | }; 270 | rootObject = B0C979221E0C796800EECDD4 /* Project object */; 271 | } 272 | --------------------------------------------------------------------------------