├── .gitignore
├── Icons
├── 1024pt.png
├── 128pt.png
├── 16pt.png
├── 2048pt.png
├── 256pt.png
├── 32pt.png
├── 512pt.png
└── 64pt.png
├── README.md
├── macos-spaces.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
│ └── xcuserdata
│ │ └── collinmurch.xcuserdatad
│ │ ├── UserInterfaceState.xcuserstate
│ │ └── WorkspaceSettings.xcsettings
├── xcshareddata
│ └── xcschemes
│ │ └── macos-spaces.xcscheme
└── xcuserdata
│ └── collinmurch.xcuserdatad
│ ├── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes
│ └── xcschememanagement.plist
└── macos-spaces
├── AppDelegate.swift
├── Assets.xcassets
├── AppIcon.appiconset
│ ├── 1024pt.png
│ ├── 128pt.png
│ ├── 16pt.png
│ ├── 256pt-1.png
│ ├── 256pt.png
│ ├── 32pt-1.png
│ ├── 32pt.png
│ ├── 512pt-1.png
│ ├── 512pt.png
│ ├── 64pt.png
│ └── Contents.json
└── Contents.json
├── Info.plist
├── Main.storyboard
└── macos_spaces.entitlements
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | .DS_Store
3 | Icons/macos-spaces-icon.afphoto
4 |
--------------------------------------------------------------------------------
/Icons/1024pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/1024pt.png
--------------------------------------------------------------------------------
/Icons/128pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/128pt.png
--------------------------------------------------------------------------------
/Icons/16pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/16pt.png
--------------------------------------------------------------------------------
/Icons/2048pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/2048pt.png
--------------------------------------------------------------------------------
/Icons/256pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/256pt.png
--------------------------------------------------------------------------------
/Icons/32pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/32pt.png
--------------------------------------------------------------------------------
/Icons/512pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/512pt.png
--------------------------------------------------------------------------------
/Icons/64pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/Icons/64pt.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # macos-spaces
2 |
3 | A simple application that displays which desktop space is currently focused, like many Linux distributions.
4 |
5 |
6 |
7 | ## Examples
8 |
9 | Dark Mode
10 |
11 | 
12 | 
13 |
14 | Light Mode
15 |
16 | 
17 | 
18 |
19 |
20 | ***
21 |
22 | ## Installation
23 |
24 | Download zip file from latest release: [Releases](https://github.com/collinmurch/macos-spaces/releases/)
25 |
26 | After downloading, unzip and place application in /Applications.
27 |
28 | I haven't gotten it signed yet, so you also have to go to System Preferences and allow apps from all developers.
29 |
30 | _Optional:_ Add as a login item for your user in System Preferences to open on startup.
31 |
32 | ***
33 |
34 | ## Known Issues
35 |
36 | * When changing the order of desktop spaces, macos-spaces can take several minutes to recognize that a change in the order has taken place
37 |
38 | * Multi-monitor support may or may not work
39 |
40 | ***
41 |
42 | Thanks to: [WhichSpace](https://github.com/gechr/WhichSpace), for demonstrating how to observe when dark mode is switched to light mode and vice-versa.
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1E49C602221DFB06005009C9 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E49C601221DFB06005009C9 /* Main.storyboard */; };
11 | 1EA4EF9B21F50CB7005E844B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA4EF9A21F50CB7005E844B /* AppDelegate.swift */; };
12 | 1EA4EF9F21F50CB8005E844B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1EA4EF9E21F50CB8005E844B /* Assets.xcassets */; };
13 | 1EA4EFAE21F50CB8005E844B /* macos_spacesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA4EFAD21F50CB8005E844B /* macos_spacesTests.swift */; };
14 | 1EA4EFB921F50CB8005E844B /* macos_spacesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA4EFB821F50CB8005E844B /* macos_spacesUITests.swift */; };
15 | /* End PBXBuildFile section */
16 |
17 | /* Begin PBXContainerItemProxy section */
18 | 1EA4EFAA21F50CB8005E844B /* PBXContainerItemProxy */ = {
19 | isa = PBXContainerItemProxy;
20 | containerPortal = 1EA4EF8F21F50CB7005E844B /* Project object */;
21 | proxyType = 1;
22 | remoteGlobalIDString = 1EA4EF9621F50CB7005E844B;
23 | remoteInfo = "macos-spaces";
24 | };
25 | 1EA4EFB521F50CB8005E844B /* PBXContainerItemProxy */ = {
26 | isa = PBXContainerItemProxy;
27 | containerPortal = 1EA4EF8F21F50CB7005E844B /* Project object */;
28 | proxyType = 1;
29 | remoteGlobalIDString = 1EA4EF9621F50CB7005E844B;
30 | remoteInfo = "macos-spaces";
31 | };
32 | /* End PBXContainerItemProxy section */
33 |
34 | /* Begin PBXFileReference section */
35 | 1E49C601221DFB06005009C9 /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; };
36 | 1EA4EF9721F50CB7005E844B /* macos-spaces.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "macos-spaces.app"; sourceTree = BUILT_PRODUCTS_DIR; };
37 | 1EA4EF9A21F50CB7005E844B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
38 | 1EA4EF9E21F50CB8005E844B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
39 | 1EA4EFA321F50CB8005E844B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
40 | 1EA4EFA421F50CB8005E844B /* macos_spaces.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macos_spaces.entitlements; sourceTree = ""; };
41 | 1EA4EFA921F50CB8005E844B /* macos-spacesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "macos-spacesTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
42 | 1EA4EFAD21F50CB8005E844B /* macos_spacesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = macos_spacesTests.swift; sourceTree = ""; };
43 | 1EA4EFAF21F50CB8005E844B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
44 | 1EA4EFB421F50CB8005E844B /* macos-spacesUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "macos-spacesUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
45 | 1EA4EFB821F50CB8005E844B /* macos_spacesUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = macos_spacesUITests.swift; sourceTree = ""; };
46 | 1EA4EFBA21F50CB8005E844B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
47 | /* End PBXFileReference section */
48 |
49 | /* Begin PBXFrameworksBuildPhase section */
50 | 1EA4EF9421F50CB7005E844B /* Frameworks */ = {
51 | isa = PBXFrameworksBuildPhase;
52 | buildActionMask = 2147483647;
53 | files = (
54 | );
55 | runOnlyForDeploymentPostprocessing = 0;
56 | };
57 | 1EA4EFA621F50CB8005E844B /* Frameworks */ = {
58 | isa = PBXFrameworksBuildPhase;
59 | buildActionMask = 2147483647;
60 | files = (
61 | );
62 | runOnlyForDeploymentPostprocessing = 0;
63 | };
64 | 1EA4EFB121F50CB8005E844B /* Frameworks */ = {
65 | isa = PBXFrameworksBuildPhase;
66 | buildActionMask = 2147483647;
67 | files = (
68 | );
69 | runOnlyForDeploymentPostprocessing = 0;
70 | };
71 | /* End PBXFrameworksBuildPhase section */
72 |
73 | /* Begin PBXGroup section */
74 | 1EA4EF8E21F50CB7005E844B = {
75 | isa = PBXGroup;
76 | children = (
77 | 1EA4EF9921F50CB7005E844B /* macos-spaces */,
78 | 1EA4EFAC21F50CB8005E844B /* macos-spacesTests */,
79 | 1EA4EFB721F50CB8005E844B /* macos-spacesUITests */,
80 | 1EA4EF9821F50CB7005E844B /* Products */,
81 | );
82 | sourceTree = "";
83 | };
84 | 1EA4EF9821F50CB7005E844B /* Products */ = {
85 | isa = PBXGroup;
86 | children = (
87 | 1EA4EF9721F50CB7005E844B /* macos-spaces.app */,
88 | 1EA4EFA921F50CB8005E844B /* macos-spacesTests.xctest */,
89 | 1EA4EFB421F50CB8005E844B /* macos-spacesUITests.xctest */,
90 | );
91 | name = Products;
92 | sourceTree = "";
93 | };
94 | 1EA4EF9921F50CB7005E844B /* macos-spaces */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 1EA4EF9A21F50CB7005E844B /* AppDelegate.swift */,
98 | 1EA4EF9E21F50CB8005E844B /* Assets.xcassets */,
99 | 1EA4EFA321F50CB8005E844B /* Info.plist */,
100 | 1EA4EFA421F50CB8005E844B /* macos_spaces.entitlements */,
101 | 1E49C601221DFB06005009C9 /* Main.storyboard */,
102 | );
103 | path = "macos-spaces";
104 | sourceTree = "";
105 | };
106 | 1EA4EFAC21F50CB8005E844B /* macos-spacesTests */ = {
107 | isa = PBXGroup;
108 | children = (
109 | 1EA4EFAD21F50CB8005E844B /* macos_spacesTests.swift */,
110 | 1EA4EFAF21F50CB8005E844B /* Info.plist */,
111 | );
112 | path = "macos-spacesTests";
113 | sourceTree = "";
114 | };
115 | 1EA4EFB721F50CB8005E844B /* macos-spacesUITests */ = {
116 | isa = PBXGroup;
117 | children = (
118 | 1EA4EFB821F50CB8005E844B /* macos_spacesUITests.swift */,
119 | 1EA4EFBA21F50CB8005E844B /* Info.plist */,
120 | );
121 | path = "macos-spacesUITests";
122 | sourceTree = "";
123 | };
124 | /* End PBXGroup section */
125 |
126 | /* Begin PBXNativeTarget section */
127 | 1EA4EF9621F50CB7005E844B /* macos-spaces */ = {
128 | isa = PBXNativeTarget;
129 | buildConfigurationList = 1EA4EFBD21F50CB8005E844B /* Build configuration list for PBXNativeTarget "macos-spaces" */;
130 | buildPhases = (
131 | 1EA4EF9321F50CB7005E844B /* Sources */,
132 | 1EA4EF9421F50CB7005E844B /* Frameworks */,
133 | 1EA4EF9521F50CB7005E844B /* Resources */,
134 | );
135 | buildRules = (
136 | );
137 | dependencies = (
138 | );
139 | name = "macos-spaces";
140 | productName = "macos-spaces";
141 | productReference = 1EA4EF9721F50CB7005E844B /* macos-spaces.app */;
142 | productType = "com.apple.product-type.application";
143 | };
144 | 1EA4EFA821F50CB8005E844B /* macos-spacesTests */ = {
145 | isa = PBXNativeTarget;
146 | buildConfigurationList = 1EA4EFC021F50CB8005E844B /* Build configuration list for PBXNativeTarget "macos-spacesTests" */;
147 | buildPhases = (
148 | 1EA4EFA521F50CB8005E844B /* Sources */,
149 | 1EA4EFA621F50CB8005E844B /* Frameworks */,
150 | 1EA4EFA721F50CB8005E844B /* Resources */,
151 | );
152 | buildRules = (
153 | );
154 | dependencies = (
155 | 1EA4EFAB21F50CB8005E844B /* PBXTargetDependency */,
156 | );
157 | name = "macos-spacesTests";
158 | productName = "macos-spacesTests";
159 | productReference = 1EA4EFA921F50CB8005E844B /* macos-spacesTests.xctest */;
160 | productType = "com.apple.product-type.bundle.unit-test";
161 | };
162 | 1EA4EFB321F50CB8005E844B /* macos-spacesUITests */ = {
163 | isa = PBXNativeTarget;
164 | buildConfigurationList = 1EA4EFC321F50CB8005E844B /* Build configuration list for PBXNativeTarget "macos-spacesUITests" */;
165 | buildPhases = (
166 | 1EA4EFB021F50CB8005E844B /* Sources */,
167 | 1EA4EFB121F50CB8005E844B /* Frameworks */,
168 | 1EA4EFB221F50CB8005E844B /* Resources */,
169 | );
170 | buildRules = (
171 | );
172 | dependencies = (
173 | 1EA4EFB621F50CB8005E844B /* PBXTargetDependency */,
174 | );
175 | name = "macos-spacesUITests";
176 | productName = "macos-spacesUITests";
177 | productReference = 1EA4EFB421F50CB8005E844B /* macos-spacesUITests.xctest */;
178 | productType = "com.apple.product-type.bundle.ui-testing";
179 | };
180 | /* End PBXNativeTarget section */
181 |
182 | /* Begin PBXProject section */
183 | 1EA4EF8F21F50CB7005E844B /* Project object */ = {
184 | isa = PBXProject;
185 | attributes = {
186 | LastSwiftUpdateCheck = 1010;
187 | LastUpgradeCheck = 1010;
188 | ORGANIZATIONNAME = collinmurch;
189 | TargetAttributes = {
190 | 1EA4EF9621F50CB7005E844B = {
191 | CreatedOnToolsVersion = 10.1;
192 | SystemCapabilities = {
193 | com.apple.Sandbox = {
194 | enabled = 0;
195 | };
196 | };
197 | };
198 | 1EA4EFA821F50CB8005E844B = {
199 | CreatedOnToolsVersion = 10.1;
200 | TestTargetID = 1EA4EF9621F50CB7005E844B;
201 | };
202 | 1EA4EFB321F50CB8005E844B = {
203 | CreatedOnToolsVersion = 10.1;
204 | TestTargetID = 1EA4EF9621F50CB7005E844B;
205 | };
206 | };
207 | };
208 | buildConfigurationList = 1EA4EF9221F50CB7005E844B /* Build configuration list for PBXProject "macos-spaces" */;
209 | compatibilityVersion = "Xcode 9.3";
210 | developmentRegion = en;
211 | hasScannedForEncodings = 0;
212 | knownRegions = (
213 | en,
214 | Base,
215 | );
216 | mainGroup = 1EA4EF8E21F50CB7005E844B;
217 | productRefGroup = 1EA4EF9821F50CB7005E844B /* Products */;
218 | projectDirPath = "";
219 | projectRoot = "";
220 | targets = (
221 | 1EA4EF9621F50CB7005E844B /* macos-spaces */,
222 | 1EA4EFA821F50CB8005E844B /* macos-spacesTests */,
223 | 1EA4EFB321F50CB8005E844B /* macos-spacesUITests */,
224 | );
225 | };
226 | /* End PBXProject section */
227 |
228 | /* Begin PBXResourcesBuildPhase section */
229 | 1EA4EF9521F50CB7005E844B /* Resources */ = {
230 | isa = PBXResourcesBuildPhase;
231 | buildActionMask = 2147483647;
232 | files = (
233 | 1E49C602221DFB06005009C9 /* Main.storyboard in Resources */,
234 | 1EA4EF9F21F50CB8005E844B /* Assets.xcassets in Resources */,
235 | );
236 | runOnlyForDeploymentPostprocessing = 0;
237 | };
238 | 1EA4EFA721F50CB8005E844B /* Resources */ = {
239 | isa = PBXResourcesBuildPhase;
240 | buildActionMask = 2147483647;
241 | files = (
242 | );
243 | runOnlyForDeploymentPostprocessing = 0;
244 | };
245 | 1EA4EFB221F50CB8005E844B /* Resources */ = {
246 | isa = PBXResourcesBuildPhase;
247 | buildActionMask = 2147483647;
248 | files = (
249 | );
250 | runOnlyForDeploymentPostprocessing = 0;
251 | };
252 | /* End PBXResourcesBuildPhase section */
253 |
254 | /* Begin PBXSourcesBuildPhase section */
255 | 1EA4EF9321F50CB7005E844B /* Sources */ = {
256 | isa = PBXSourcesBuildPhase;
257 | buildActionMask = 2147483647;
258 | files = (
259 | 1EA4EF9B21F50CB7005E844B /* AppDelegate.swift in Sources */,
260 | );
261 | runOnlyForDeploymentPostprocessing = 0;
262 | };
263 | 1EA4EFA521F50CB8005E844B /* Sources */ = {
264 | isa = PBXSourcesBuildPhase;
265 | buildActionMask = 2147483647;
266 | files = (
267 | 1EA4EFAE21F50CB8005E844B /* macos_spacesTests.swift in Sources */,
268 | );
269 | runOnlyForDeploymentPostprocessing = 0;
270 | };
271 | 1EA4EFB021F50CB8005E844B /* Sources */ = {
272 | isa = PBXSourcesBuildPhase;
273 | buildActionMask = 2147483647;
274 | files = (
275 | 1EA4EFB921F50CB8005E844B /* macos_spacesUITests.swift in Sources */,
276 | );
277 | runOnlyForDeploymentPostprocessing = 0;
278 | };
279 | /* End PBXSourcesBuildPhase section */
280 |
281 | /* Begin PBXTargetDependency section */
282 | 1EA4EFAB21F50CB8005E844B /* PBXTargetDependency */ = {
283 | isa = PBXTargetDependency;
284 | target = 1EA4EF9621F50CB7005E844B /* macos-spaces */;
285 | targetProxy = 1EA4EFAA21F50CB8005E844B /* PBXContainerItemProxy */;
286 | };
287 | 1EA4EFB621F50CB8005E844B /* PBXTargetDependency */ = {
288 | isa = PBXTargetDependency;
289 | target = 1EA4EF9621F50CB7005E844B /* macos-spaces */;
290 | targetProxy = 1EA4EFB521F50CB8005E844B /* PBXContainerItemProxy */;
291 | };
292 | /* End PBXTargetDependency section */
293 |
294 | /* Begin XCBuildConfiguration section */
295 | 1EA4EFBB21F50CB8005E844B /* Debug */ = {
296 | isa = XCBuildConfiguration;
297 | buildSettings = {
298 | ALWAYS_SEARCH_USER_PATHS = NO;
299 | CLANG_ANALYZER_NONNULL = YES;
300 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
301 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
302 | CLANG_CXX_LIBRARY = "libc++";
303 | CLANG_ENABLE_MODULES = YES;
304 | CLANG_ENABLE_OBJC_ARC = YES;
305 | CLANG_ENABLE_OBJC_WEAK = YES;
306 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
307 | CLANG_WARN_BOOL_CONVERSION = YES;
308 | CLANG_WARN_COMMA = YES;
309 | CLANG_WARN_CONSTANT_CONVERSION = YES;
310 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
311 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
312 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
313 | CLANG_WARN_EMPTY_BODY = YES;
314 | CLANG_WARN_ENUM_CONVERSION = YES;
315 | CLANG_WARN_INFINITE_RECURSION = YES;
316 | CLANG_WARN_INT_CONVERSION = YES;
317 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
318 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
319 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
320 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
321 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
322 | CLANG_WARN_STRICT_PROTOTYPES = YES;
323 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
324 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
325 | CLANG_WARN_UNREACHABLE_CODE = YES;
326 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
327 | CODE_SIGN_IDENTITY = "-";
328 | COPY_PHASE_STRIP = NO;
329 | DEBUG_INFORMATION_FORMAT = dwarf;
330 | ENABLE_STRICT_OBJC_MSGSEND = YES;
331 | ENABLE_TESTABILITY = YES;
332 | GCC_C_LANGUAGE_STANDARD = gnu11;
333 | GCC_DYNAMIC_NO_PIC = NO;
334 | GCC_NO_COMMON_BLOCKS = YES;
335 | GCC_OPTIMIZATION_LEVEL = 0;
336 | GCC_PREPROCESSOR_DEFINITIONS = (
337 | "DEBUG=1",
338 | "$(inherited)",
339 | );
340 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
341 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
342 | GCC_WARN_UNDECLARED_SELECTOR = YES;
343 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
344 | GCC_WARN_UNUSED_FUNCTION = YES;
345 | GCC_WARN_UNUSED_VARIABLE = YES;
346 | MACOSX_DEPLOYMENT_TARGET = 10.14;
347 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
348 | MTL_FAST_MATH = YES;
349 | ONLY_ACTIVE_ARCH = YES;
350 | SDKROOT = macosx;
351 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
352 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
353 | };
354 | name = Debug;
355 | };
356 | 1EA4EFBC21F50CB8005E844B /* Release */ = {
357 | isa = XCBuildConfiguration;
358 | buildSettings = {
359 | ALWAYS_SEARCH_USER_PATHS = NO;
360 | CLANG_ANALYZER_NONNULL = YES;
361 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
362 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
363 | CLANG_CXX_LIBRARY = "libc++";
364 | CLANG_ENABLE_MODULES = YES;
365 | CLANG_ENABLE_OBJC_ARC = YES;
366 | CLANG_ENABLE_OBJC_WEAK = YES;
367 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
368 | CLANG_WARN_BOOL_CONVERSION = YES;
369 | CLANG_WARN_COMMA = YES;
370 | CLANG_WARN_CONSTANT_CONVERSION = YES;
371 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
372 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
373 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
374 | CLANG_WARN_EMPTY_BODY = YES;
375 | CLANG_WARN_ENUM_CONVERSION = YES;
376 | CLANG_WARN_INFINITE_RECURSION = YES;
377 | CLANG_WARN_INT_CONVERSION = YES;
378 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
379 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
380 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
381 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
382 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
383 | CLANG_WARN_STRICT_PROTOTYPES = YES;
384 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
385 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
386 | CLANG_WARN_UNREACHABLE_CODE = YES;
387 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
388 | CODE_SIGN_IDENTITY = "-";
389 | COPY_PHASE_STRIP = NO;
390 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
391 | ENABLE_NS_ASSERTIONS = NO;
392 | ENABLE_STRICT_OBJC_MSGSEND = YES;
393 | GCC_C_LANGUAGE_STANDARD = gnu11;
394 | GCC_NO_COMMON_BLOCKS = YES;
395 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
396 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
397 | GCC_WARN_UNDECLARED_SELECTOR = YES;
398 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
399 | GCC_WARN_UNUSED_FUNCTION = YES;
400 | GCC_WARN_UNUSED_VARIABLE = YES;
401 | MACOSX_DEPLOYMENT_TARGET = 10.14;
402 | MTL_ENABLE_DEBUG_INFO = NO;
403 | MTL_FAST_MATH = YES;
404 | SDKROOT = macosx;
405 | SWIFT_COMPILATION_MODE = wholemodule;
406 | SWIFT_OPTIMIZATION_LEVEL = "-O";
407 | };
408 | name = Release;
409 | };
410 | 1EA4EFBE21F50CB8005E844B /* Debug */ = {
411 | isa = XCBuildConfiguration;
412 | buildSettings = {
413 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
414 | CODE_SIGN_STYLE = Automatic;
415 | COMBINE_HIDPI_IMAGES = YES;
416 | INFOPLIST_FILE = "macos-spaces/Info.plist";
417 | LD_RUNPATH_SEARCH_PATHS = (
418 | "$(inherited)",
419 | "@executable_path/../Frameworks",
420 | );
421 | PRODUCT_BUNDLE_IDENTIFIER = "collinmurch.macos-spaces";
422 | PRODUCT_NAME = "$(TARGET_NAME)";
423 | SWIFT_VERSION = 4.2;
424 | };
425 | name = Debug;
426 | };
427 | 1EA4EFBF21F50CB8005E844B /* Release */ = {
428 | isa = XCBuildConfiguration;
429 | buildSettings = {
430 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
431 | CODE_SIGN_STYLE = Automatic;
432 | COMBINE_HIDPI_IMAGES = YES;
433 | INFOPLIST_FILE = "macos-spaces/Info.plist";
434 | LD_RUNPATH_SEARCH_PATHS = (
435 | "$(inherited)",
436 | "@executable_path/../Frameworks",
437 | );
438 | PRODUCT_BUNDLE_IDENTIFIER = "collinmurch.macos-spaces";
439 | PRODUCT_NAME = "$(TARGET_NAME)";
440 | SWIFT_VERSION = 4.2;
441 | };
442 | name = Release;
443 | };
444 | 1EA4EFC121F50CB8005E844B /* Debug */ = {
445 | isa = XCBuildConfiguration;
446 | buildSettings = {
447 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
448 | BUNDLE_LOADER = "$(TEST_HOST)";
449 | CODE_SIGN_STYLE = Automatic;
450 | COMBINE_HIDPI_IMAGES = YES;
451 | INFOPLIST_FILE = "macos-spacesTests/Info.plist";
452 | LD_RUNPATH_SEARCH_PATHS = (
453 | "$(inherited)",
454 | "@executable_path/../Frameworks",
455 | "@loader_path/../Frameworks",
456 | );
457 | PRODUCT_BUNDLE_IDENTIFIER = "collinmurch.macos-spacesTests";
458 | PRODUCT_NAME = "$(TARGET_NAME)";
459 | SWIFT_VERSION = 4.2;
460 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/macos-spaces.app/Contents/MacOS/macos-spaces";
461 | };
462 | name = Debug;
463 | };
464 | 1EA4EFC221F50CB8005E844B /* Release */ = {
465 | isa = XCBuildConfiguration;
466 | buildSettings = {
467 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
468 | BUNDLE_LOADER = "$(TEST_HOST)";
469 | CODE_SIGN_STYLE = Automatic;
470 | COMBINE_HIDPI_IMAGES = YES;
471 | INFOPLIST_FILE = "macos-spacesTests/Info.plist";
472 | LD_RUNPATH_SEARCH_PATHS = (
473 | "$(inherited)",
474 | "@executable_path/../Frameworks",
475 | "@loader_path/../Frameworks",
476 | );
477 | PRODUCT_BUNDLE_IDENTIFIER = "collinmurch.macos-spacesTests";
478 | PRODUCT_NAME = "$(TARGET_NAME)";
479 | SWIFT_VERSION = 4.2;
480 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/macos-spaces.app/Contents/MacOS/macos-spaces";
481 | };
482 | name = Release;
483 | };
484 | 1EA4EFC421F50CB8005E844B /* Debug */ = {
485 | isa = XCBuildConfiguration;
486 | buildSettings = {
487 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
488 | CODE_SIGN_STYLE = Automatic;
489 | COMBINE_HIDPI_IMAGES = YES;
490 | INFOPLIST_FILE = "macos-spacesUITests/Info.plist";
491 | LD_RUNPATH_SEARCH_PATHS = (
492 | "$(inherited)",
493 | "@executable_path/../Frameworks",
494 | "@loader_path/../Frameworks",
495 | );
496 | PRODUCT_BUNDLE_IDENTIFIER = "collinmurch.macos-spacesUITests";
497 | PRODUCT_NAME = "$(TARGET_NAME)";
498 | SWIFT_VERSION = 4.2;
499 | TEST_TARGET_NAME = "macos-spaces";
500 | };
501 | name = Debug;
502 | };
503 | 1EA4EFC521F50CB8005E844B /* Release */ = {
504 | isa = XCBuildConfiguration;
505 | buildSettings = {
506 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
507 | CODE_SIGN_STYLE = Automatic;
508 | COMBINE_HIDPI_IMAGES = YES;
509 | INFOPLIST_FILE = "macos-spacesUITests/Info.plist";
510 | LD_RUNPATH_SEARCH_PATHS = (
511 | "$(inherited)",
512 | "@executable_path/../Frameworks",
513 | "@loader_path/../Frameworks",
514 | );
515 | PRODUCT_BUNDLE_IDENTIFIER = "collinmurch.macos-spacesUITests";
516 | PRODUCT_NAME = "$(TARGET_NAME)";
517 | SWIFT_VERSION = 4.2;
518 | TEST_TARGET_NAME = "macos-spaces";
519 | };
520 | name = Release;
521 | };
522 | /* End XCBuildConfiguration section */
523 |
524 | /* Begin XCConfigurationList section */
525 | 1EA4EF9221F50CB7005E844B /* Build configuration list for PBXProject "macos-spaces" */ = {
526 | isa = XCConfigurationList;
527 | buildConfigurations = (
528 | 1EA4EFBB21F50CB8005E844B /* Debug */,
529 | 1EA4EFBC21F50CB8005E844B /* Release */,
530 | );
531 | defaultConfigurationIsVisible = 0;
532 | defaultConfigurationName = Release;
533 | };
534 | 1EA4EFBD21F50CB8005E844B /* Build configuration list for PBXNativeTarget "macos-spaces" */ = {
535 | isa = XCConfigurationList;
536 | buildConfigurations = (
537 | 1EA4EFBE21F50CB8005E844B /* Debug */,
538 | 1EA4EFBF21F50CB8005E844B /* Release */,
539 | );
540 | defaultConfigurationIsVisible = 0;
541 | defaultConfigurationName = Release;
542 | };
543 | 1EA4EFC021F50CB8005E844B /* Build configuration list for PBXNativeTarget "macos-spacesTests" */ = {
544 | isa = XCConfigurationList;
545 | buildConfigurations = (
546 | 1EA4EFC121F50CB8005E844B /* Debug */,
547 | 1EA4EFC221F50CB8005E844B /* Release */,
548 | );
549 | defaultConfigurationIsVisible = 0;
550 | defaultConfigurationName = Release;
551 | };
552 | 1EA4EFC321F50CB8005E844B /* Build configuration list for PBXNativeTarget "macos-spacesUITests" */ = {
553 | isa = XCConfigurationList;
554 | buildConfigurations = (
555 | 1EA4EFC421F50CB8005E844B /* Debug */,
556 | 1EA4EFC521F50CB8005E844B /* Release */,
557 | );
558 | defaultConfigurationIsVisible = 0;
559 | defaultConfigurationName = Release;
560 | };
561 | /* End XCConfigurationList section */
562 | };
563 | rootObject = 1EA4EF8F21F50CB7005E844B /* Project object */;
564 | }
565 |
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/project.xcworkspace/xcuserdata/collinmurch.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces.xcodeproj/project.xcworkspace/xcuserdata/collinmurch.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/project.xcworkspace/xcuserdata/collinmurch.xcuserdatad/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildLocationStyle
6 | UseAppPreferences
7 | CustomBuildLocationType
8 | RelativeToDerivedData
9 | DerivedDataLocationStyle
10 | Default
11 | EnabledFullIndexStoreVisibility
12 |
13 | IssueFilterStyle
14 | ShowActiveSchemeOnly
15 | LiveSourceIssuesEnabled
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/xcshareddata/xcschemes/macos-spaces.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
43 |
49 |
50 |
51 |
52 |
53 |
59 |
60 |
61 |
62 |
63 |
64 |
74 |
76 |
82 |
83 |
84 |
85 |
86 |
87 |
93 |
95 |
101 |
102 |
103 |
104 |
106 |
107 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/xcuserdata/collinmurch.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/macos-spaces.xcodeproj/xcuserdata/collinmurch.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | macos-spaces.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 1EA4EF9621F50CB7005E844B
16 |
17 | primary
18 |
19 |
20 | 1EA4EFA821F50CB8005E844B
21 |
22 | primary
23 |
24 |
25 | 1EA4EFB321F50CB8005E844B
26 |
27 | primary
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/macos-spaces/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // macos-spaces
4 | //
5 | // Created by Collin Murch on 1/20/19.
6 | // Copyright © 2019 collinmurch. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | @NSApplicationMain
12 | class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
13 |
14 | var darkMode: Bool = true
15 |
16 | var totalSpaces: Int = 1
17 |
18 | var statusBar: NSStatusItem = NSStatusBar.system.statusItem(withLength: -1)
19 | var menu: NSMenu = NSMenu()
20 |
21 | @IBOutlet weak var workspace: NSWorkspace!
22 |
23 | // Configure application
24 | override func awakeFromNib() {
25 | NSApplication.shared.setActivationPolicy(.accessory)
26 |
27 | statusBar.menu = menu
28 | // menu.addItem(withTitle: "@collinmurch", action: nil, keyEquivalent: "")
29 | menu.addItem(withTitle: "Quit macos-spaces", action: #selector (quitClicked), keyEquivalent: "")
30 |
31 | // Update UIMode (also generates new image), and configure observers
32 | observers()
33 | updateUIMode()
34 | }
35 |
36 | // Configure observers for dark mode and space switch
37 | func observers() {
38 | // Configure observer that fires when desktop space changes
39 | workspace = NSWorkspace.shared
40 |
41 | workspace.notificationCenter.addObserver(
42 | self,
43 | selector: #selector(AppDelegate.updateSpace),
44 | name: NSWorkspace.activeSpaceDidChangeNotification,
45 | object: workspace
46 | )
47 |
48 | DistributedNotificationCenter.default.addObserver(
49 | self,
50 | selector: #selector(updateUIMode(sender: )),
51 | name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"),
52 | object: nil
53 | )
54 | }
55 |
56 | // Generate an image based on currently focused space
57 | func generateImage(activeSpace: Int) -> NSImage {
58 | // Create an image that is the correct size to hold all space boxes
59 | let img: NSImage = NSImage(size: NSSize.init(width: 17.0*Double(totalSpaces), height: 15.0))
60 |
61 | var text: String
62 | var bColor: NSColor
63 | var tColor: NSColor
64 |
65 | // Make new number rect for each space
66 | for i in 1...totalSpaces {
67 | text = "\(i)"
68 |
69 | // Create a text box
70 | let textRect = NSMakeRect(-5 + CGFloat(i-1)*17.0, -11, 25, 25)
71 |
72 | // If you get to the active space, then do the following (special)
73 | if i == activeSpace {
74 |
75 | // Create new rounded rect inside of original, to be background color
76 | let iRect = NSMakeRect(1 + CGFloat(i-1)*17.0, 1, 13, 13)
77 | let iPath: NSBezierPath = NSBezierPath(roundedRect: iRect, xRadius: 2.5, yRadius: 2.5)
78 |
79 | // Check for dark mode, and set colors appropriately
80 | if darkMode {
81 | tColor = NSColor.black
82 | bColor = NSColor.white
83 | } else {
84 | tColor = NSColor.white
85 | bColor = NSColor.black
86 | }
87 |
88 | // Select rounded rect and fill with background color
89 | img.lockFocus()
90 |
91 | bColor.set()
92 | iPath.fill()
93 |
94 | img.unlockFocus()
95 | } else {
96 | // Otherwise, set text color appropriately (no need for background color)
97 | if darkMode {
98 | tColor = NSColor.white
99 | } else {
100 | tColor = NSColor.black
101 | }
102 | }
103 |
104 | // Font and text settings
105 | let font = NSFont(name: "Helvetica Bold", size: 12.0)
106 | let textStyle = NSMutableParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
107 | textStyle.alignment = NSTextAlignment.center
108 | let attributeDict: [NSAttributedString.Key : Any] = [
109 | .font: font!,
110 | .foregroundColor: tColor,
111 | .paragraphStyle: textStyle,
112 | ]
113 |
114 | // Select image and draw in text
115 | img.lockFocus()
116 |
117 | text.draw(in: textRect, withAttributes: attributeDict)
118 |
119 | img.unlockFocus()
120 | }
121 |
122 | return img
123 | }
124 |
125 | // Update status bar icon
126 | @objc func updateSpace() {
127 | let currentSpace = getCurrentSpace()
128 |
129 | statusBar.button?.image = generateImage(activeSpace: currentSpace)
130 | }
131 |
132 | // Grab status of light or dark modes
133 | @objc func updateUIMode(sender: AnyObject?=nil) {
134 | let dictionary = UserDefaults.standard.persistentDomain(forName: UserDefaults.globalDomain);
135 | if let interfaceStyle = dictionary?["AppleInterfaceStyle"] as? NSString {
136 | self.darkMode = interfaceStyle.localizedCaseInsensitiveContains("dark")
137 | } else {
138 | self.darkMode = false
139 | }
140 |
141 | updateSpace()
142 | }
143 |
144 | // Get int of focused space
145 | func getCurrentSpace() -> Int {
146 | // Both return CFArrays which are not fun to deal with
147 | let allWindows = CGWindowListCopyWindowInfo(CGWindowListOption.optionAll, kCGNullWindowID)
148 | let currentWindow = CGWindowListCopyWindowInfo(CGWindowListOption.optionOnScreenOnly, kCGNullWindowID)
149 |
150 | // Get all desktop picture names in order, and grab currently active desktop
151 | let allMatched = parseWindowData(String(describing: allWindows))
152 | let currentMatched = parseWindowData(String(describing: currentWindow))
153 |
154 | totalSpaces = allMatched.count
155 |
156 | // Since pattern returns matches in reverse order, subtract matched index from total
157 | for (i, item) in allMatched.enumerated() {
158 | if item == currentMatched[0] {
159 | return totalSpaces-i
160 | }
161 | }
162 |
163 | // If fails, then return something that won't be displayed
164 | return 0
165 | }
166 |
167 | // Get desktop ID
168 | func parseWindowData(_ text: String) -> [String] {
169 | let lines = text.components(separatedBy: CharacterSet.newlines)
170 | var id = [String]()
171 |
172 | // Find line after "desktop" match, return all instances
173 | for (i, _) in lines.enumerated() {
174 | if lines[i].range(of:"Desktop Picture -") != nil {
175 | id.append(lines[i+1])
176 | }
177 | }
178 |
179 | return id
180 | }
181 |
182 | // Close application
183 | @objc func quitClicked() {
184 | NSApplication.shared.terminate(self)
185 | }
186 |
187 | func applicationWillTerminate(_ aNotification: Notification) {
188 | // Insert code here to tear down your application
189 | }
190 | }
191 |
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/1024pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/1024pt.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/128pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/128pt.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/16pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/16pt.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/256pt-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/256pt-1.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/256pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/256pt.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/32pt-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/32pt-1.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/32pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/32pt.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/512pt-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/512pt-1.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/512pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/512pt.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/64pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/collinmurch/macos-spaces/bedeb07b633c152d076438100a30029a28fd9769/macos-spaces/Assets.xcassets/AppIcon.appiconset/64pt.png
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "16x16",
5 | "idiom" : "mac",
6 | "filename" : "16pt.png",
7 | "scale" : "1x"
8 | },
9 | {
10 | "size" : "16x16",
11 | "idiom" : "mac",
12 | "filename" : "32pt.png",
13 | "scale" : "2x"
14 | },
15 | {
16 | "size" : "32x32",
17 | "idiom" : "mac",
18 | "filename" : "32pt-1.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "32x32",
23 | "idiom" : "mac",
24 | "filename" : "64pt.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "128x128",
29 | "idiom" : "mac",
30 | "filename" : "128pt.png",
31 | "scale" : "1x"
32 | },
33 | {
34 | "size" : "128x128",
35 | "idiom" : "mac",
36 | "filename" : "256pt.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "256x256",
41 | "idiom" : "mac",
42 | "filename" : "256pt-1.png",
43 | "scale" : "1x"
44 | },
45 | {
46 | "size" : "256x256",
47 | "idiom" : "mac",
48 | "filename" : "512pt-1.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "512x512",
53 | "idiom" : "mac",
54 | "filename" : "512pt.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "512x512",
59 | "idiom" : "mac",
60 | "filename" : "1024pt.png",
61 | "scale" : "2x"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
--------------------------------------------------------------------------------
/macos-spaces/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/macos-spaces/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSHumanReadableCopyright
26 | Copyright © 2019 collinmurch. All rights reserved.
27 | NSMainStoryboardFile
28 | Main
29 | NSPrincipalClass
30 | NSApplication
31 |
32 |
33 |
--------------------------------------------------------------------------------
/macos-spaces/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
--------------------------------------------------------------------------------
/macos-spaces/macos_spaces.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------