├── .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 | 
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 |
--------------------------------------------------------------------------------