TotalSpaces support on MacOS 10.14 Mojave

Thanks for the reports.

@PaulS Sometimes if the plugin is slow to start that error message may come, I’ll look at waiting longer.
@production There may be some system limits to creating desktops, it used to be 16 (hence the old error message, which I need to change) but these days I’m not sure exactly how Apple limits it - At least I can create more than 20 on my machine. So it may be hardware dependent.

I’m working with 25 desktops on my iMac Pro, via TotalSpaces 2, works great.

This version fixes a few bugs, including the app names in dark mode.

http://downloads.binaryage.com/TotalSpaces2-2.7.6.dmg

Release notes here: https://totalspaces.binaryage.com/changes-beta

I’m using 2.7.6. I just migrated from an older laptop running High Sierra over to a new laptop running Mojave. Previously TotalSpaces2 was working fine. SIP is disabled. However, I don’t see anything listed under " System Preferences > Security & Privacy > Privacy > Automation". The box is just empty. I’m getting the “Could not create all requested desktops. The system limit is 16 (plus specials)” message. Do I need to do anything to make TotalSpaces2 appear in the System Preferences?

Also, I’ve tried uninstalling and reinstalling. I found that my preferences are being saved even though I am deleting ~/Library/Preferences/com.binaryage.TotalSpaces2.plist and ~/Library/Preferences/com.binaryage.totalspacescrashwatcher.plist. I searched for and deleted any files with the word totalspaces, mainly “~/Library/Application\ Support/TotalSpaces2”, still the preferences were saved when I reinstalled.

I’m in the same position as @martinbutt. Just got a new laptop with Mojave and TotalSpaces2 just won’t work. I’ve tried uninstalling & reinstalling and restarting in between those steps. I also don’t see anything under " System Preferences > Security & Privacy > Privacy > Automation". When starting it up I’m seeing “Please check TotalSpaces2 can control Dock in System Preferences / Security & Privacy / Privacy / Automation”.

Here are my logs from a clean install:

Dragging TotalSpaces2 into Applications

default 19:04:28.074203 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/, NSFilePath=/Applications/TotalSpaces2.app/PlugIns, NSUnderlyingError=0x7f9acdb359b0 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.079146 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/, NSFilePath=/Applications/TotalSpaces2.app/PlugIns, NSUnderlyingError=0x7f9acbfa2df0 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.095711 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/, NSFilePath=/Applications/TotalSpaces2.app/PlugIns, NSUnderlyingError=0x7f9acdb0c680 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.198009 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PlugIns, NSUnderlyingError=0x7f9acbd27c80 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.275938 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PlugIns, NSUnderlyingError=0x7f9acd924740 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.528713 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/PlugIns, NSUnderlyingError=0x7f9acbd27dd0 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.559174 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/PlugIns, NSUnderlyingError=0x7f9acbc5d2a0 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.571105 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/PlugIns, NSUnderlyingError=0x7f9acbd268a0 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}
default 19:04:28.598431 -0800 lsd Non-fatal error enumerating at , continuing: Error Domain=NSCocoaErrorDomain Code=260 “The file “PlugIns” couldn’t be opened because there is no such file.” UserInfo={NSURL=PlugIns/ – file:///Applications/TotalSpaces2.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/PlugIns, NSUnderlyingError=0x7f9acbe15f30 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}

Starting TotalSpaces2

default	19:06:23.785640 -0800	lsd	Non-fatal error enumerating at <private>, continuing: Error Domain=NSCocoaErrorDomain Code=260 "The file “PlugIns” couldn’t be opened because there is no such file." UserInfo={NSURL=PlugIns/ -- file:///Applications/TotalSpaces2.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/PlugIns, NSUnderlyingError=0x7f9acbe43540 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
default	19:06:23.838209 -0800	loginwindow	-[ApplicationManager checkInAppContext:refCon:eventData:] |      checked in app : TotalSpaces2
default	19:06:27.384481 -0800	lsd	Non-fatal error enumerating at <private>, continuing: Error Domain=NSCocoaErrorDomain Code=260 "The file “PlugIns” couldn’t be opened because there is no such file." UserInfo={NSURL=PlugIns/ -- file:///Applications/TotalSpaces2.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/PlugIns, NSUnderlyingError=0x7f9acdb37200 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
default	19:06:27.486703 -0800	launchservicesd	CHECKIN:0x0-0x73073 3121 com.binaryage.TotalSpaces2
default	19:06:27.487404 -0800	loginwindow	-[ApplicationManager checkInAppContext:refCon:eventData:] |      checked in app : TotalSpaces2
default	19:06:27.519803 -0800	TotalSpaces2	Current system appearance, (HLTB: 2), (SLS: 1)
default	19:06:27.524783 -0800	TotalSpaces2	Post-registration system appearance: (HLTB: 2)
error	19:06:27.533989 -0800	TotalSpaces2	Unable to load Info.plist exceptions (eGPUOverrides)
default	19:06:27.542167 -0800	TotalSpaces2	NSApp cache appearance:
-NSRequiresAquaSystemAppearance: 0
-appearance: (null)
-effectiveAppearance: <NSCompositeAppearance: 0x600002c321c0
 (
    "<NSDarkAquaAppearance: 0x600001a040c0>",
    "<NSSystemAppearance: 0x600001a04100>"
)>
default	19:06:27.608645 -0800	TotalSpaces2	existsInSystemPath
default	19:06:27.608698 -0800	TotalSpaces2	FS allowed
default	19:06:27.608738 -0800	TotalSpaces2	TFP allowed
default	19:06:27.608778 -0800	TotalSpaces2	System path version 2.0.3
default	19:06:27.608819 -0800	TotalSpaces2	Detected injector version 2.0.3
default	19:06:27.609180 -0800	TotalSpaces2	TotalSpaces2.app is carrying injector version 2.0.3
default	19:06:27.624112 -0800	tccd	-[TCCDAccessIdentity staticCode]: static code for: identifier com.binaryage.TotalSpaces2, type: 0: 0x7fbb54b07330 at /Applications/TotalSpaces2.app
default	19:06:30.614251 -0800	lsd	Non-fatal error enumerating at <private>, continuing: Error Domain=NSCocoaErrorDomain Code=260 "The file “PlugIns” couldn’t be opened because there is no such file." UserInfo={NSURL=PlugIns/ -- file:///Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/, NSFilePath=/Applications/TotalSpaces2.app/Contents/Resources/TotalSpacesCrashWatcher.app/Contents/PlugIns, NSUnderlyingError=0x7f9acbe4d960 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
default	19:06:30.626362 -0800	TotalSpaces2	CSSM Exception: -2147415792 CSSMERR_CSP_INVALID_KEY
default	19:06:30.653089 -0800	trustd	asynchronously fetching CRL (http://crl.apple.com/root.crl) for client (TotalSpaces2[3121]/0#-1 LF=0)
default	19:06:30.691536 -0800	TotalSpacesCrashWatcher	Watching '/Users/wbowers/Library/Logs/DiagnosticReports' for recent crash reports with prefix 'TotalSpaces2'
default	19:06:30.977583 -0800	trustd	asynchronously fetching CRL (http://crl.apple.com/root.crl) for client (TotalSpaces2[3121]/0#-1 LF=0)
default	19:06:31.030971 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee802cc0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.032378 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee8041e0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.032682 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804300 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.032966 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804410 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.033242 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804530 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.033868 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804770 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.034151 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee8048b0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.034426 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee8049e0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.034697 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804b00 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.035050 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804c20 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.035329 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804d50 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.035968 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee804f90 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.036333 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee8050a0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.036648 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee8051d0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.036949 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee8052f0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.037713 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee805530 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.038014 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee805650 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.038315 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee805770 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.038667 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee8058f0 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.038972 -0800	TotalSpaces2	Failed to resolve bookmark 7f82ee805a60 with error: Error Domain=NSOSStatusErrorDomain Code=-35
default	19:06:31.080539 -0800	TotalSpaces2	Inject called: waitingToInject: 0 injectionBackoff: 0
default	19:06:31.095845 -0800	TotalSpaces2	Sending injection events to 2425
default	19:06:31.110683 -0800	Dock	TCCAccessRequestIndirect: TCCAccessRequestIndirect with pid 2425: target_identity: {
    kTCCCodeIdentityAuthority = kTCCCodeIdentityDesignatedRequirementAuthority;
    kTCCCodeIdentityCSFlags = 570425345;
    kTCCCodeIdentityCanSendToAnyTarget = 0;
    kTCCCodeIdentityDesignatedRequirementData = <fade0c00 000000a8 00000001 00000006 00000002 0000001a 636f6d2e 62696e61 72796167 652e546f 74616c53 70616365 73320000 00000006 0000000f 00000006 0000000e 00000001 0000000a 2a864886 f7636406 02060000 00000000 00000006 0000000e 00000000 0000000a 2a864886 f7636406 010d0000 00000000 0000000b 00000000 0000000a 7375626a 6563742e 4f550000 00000001 0000000a 41503445 4a573551 59360000>;
    kTCCCodeIdentityExecutableURL = "file:///Applications/TotalSpaces2.app/Contents/MacOS/TotalSpaces2";
    kTCCCodeIdentityIdentifier = "com.binaryage.TotalSpaces2";
    kTCCCodeIdentityIdentifierType = 0;
    kTCCCodeIdentityPromptPolicy = 0;
    kTCCCodeIdentitySDKVersion = 658944;
    kTCCCodeIdentityTeamID = AP4EJW5QY6;
}
default	19:06:31.143368 -0800	TotalSpaces2	Monitoring Dock 2425
default	19:06:31.145140 -0800	tccd	target_executable_path_URL: file:///Applications/TotalSpaces2.app/Contents/MacOS/TotalSpaces2
default	19:06:32.144689 -0800	TotalSpaces2	Connecting Dock, backoff: 1
default	19:06:32.145129 -0800	TotalSpaces2	Failed to register connection
default	19:06:33.146315 -0800	TotalSpaces2	Connecting Dock, backoff: 2
default	19:06:33.146626 -0800	TotalSpaces2	Failed to register connection
default	19:06:33.791741 -0800	TotalSpaces2	Restarting Dock because FS version was incorrect.
default	19:06:33.808440 -0800	TotalSpaces2	Dock pid 2425 terminated
default	19:06:35.147239 -0800	TotalSpaces2	Connecting Dock, backoff: 4
default	19:06:35.147537 -0800	TotalSpaces2	Failed to register connection
default	19:06:38.806936 -0800	TotalSpaces2	Version check failed. Waiting 5 seconds. If this persists, restart or re-install TotalSpaces2. 1
default	19:06:38.808738 -0800	TotalSpaces2	Inject called: waitingToInject: 0 injectionBackoff: 0
default	19:06:38.822312 -0800	TotalSpaces2	Sending injection events to 3746
default	19:06:38.830798 -0800	Dock	TCCAccessRequestIndirect: TCCAccessRequestIndirect with pid 3746: target_identity: {
    kTCCCodeIdentityAuthority = kTCCCodeIdentityDesignatedRequirementAuthority;
    kTCCCodeIdentityCSFlags = 570425345;
    kTCCCodeIdentityCanSendToAnyTarget = 0;
    kTCCCodeIdentityDesignatedRequirementData = <fade0c00 000000a8 00000001 00000006 00000002 0000001a 636f6d2e 62696e61 72796167 652e546f 74616c53 70616365 73320000 00000006 0000000f 00000006 0000000e 00000001 0000000a 2a864886 f7636406 02060000 00000000 00000006 0000000e 00000000 0000000a 2a864886 f7636406 010d0000 00000000 0000000b 00000000 0000000a 7375626a 6563742e 4f550000 00000001 0000000a 41503445 4a573551 59360000>;
    kTCCCodeIdentityExecutableURL = "file:///Applications/TotalSpaces2.app/Contents/MacOS/TotalSpaces2";
    kTCCCodeIdentityIdentifier = "com.binaryage.TotalSpaces2";
    kTCCCodeIdentityIdentifierType = 0;
    kTCCCodeIdentityPromptPolicy = 0;
    kTCCCodeIdentitySDKVersion = 658944;
    kTCCCodeIdentityTeamID = AP4EJW5QY6;
}
default	19:06:38.842351 -0800	TotalSpaces2	Monitoring Dock 3746
default	19:06:38.850942 -0800	tccd	target_executable_path_URL: file:///Applications/TotalSpaces2.app/Contents/MacOS/TotalSpaces2
default	19:06:39.148626 -0800	TotalSpaces2	Connecting Dock, backoff: 8
default	19:06:39.149107 -0800	TotalSpaces2	Failed to register connection
default	19:06:39.843571 -0800	TotalSpaces2	Connecting Dock, backoff: 8
default	19:06:39.844047 -0800	TotalSpaces2	Failed to register connection
default	19:06:39.844163 -0800	TotalSpaces2	Retry already scheduled
default	19:06:40.648162 -0800	TotalSpaces2	LSExceptions shared instance invalidated for timeout.
default	19:06:43.807428 -0800	TotalSpaces2	Version check failed. Waiting 5 seconds. If this persists, restart or re-install TotalSpaces2. 2
default	19:06:47.149376 -0800	TotalSpaces2	Connecting Dock, backoff: 8
default	19:06:47.149796 -0800	TotalSpaces2	Failed to register connection
default	19:06:48.808374 -0800	TotalSpaces2	Version check failed. Waiting 5 seconds. If this persists, restart or re-install TotalSpaces2. 3

I hope I don’t have to go back to using Mission Control…

(Sorry about the odd formatting. The input automatically converted the first set of logs into a table and didn’t for the second.)

I’m also happy to pay for an upgrade for Mojave support. TS is too important for my productivity. It’s either this or downgrade my OS.

I was able to fix the issue for myself. The problem was two-fold I think, both having to do with ~/Library/Application Support/com.apple.TCC/TCC.db and the fact that my home folder was migrated over from an old computer (I think).

  1. My new user account didn’t have access to ~/Library/Application Support/com.apple.TCC, TCC.db's parent folder. So I right clicked it, clicked Get Info, clicked the padlock at the bottom, and gave my user permissions.
  2. The TCC.db file itself was corrupt (I think). All I did was move it to my desktop and restarted my computer. This removed all accessibility permissions I had given to any application. When I booted up again, all my startup programs asked for permissions. This included TS asking for Dock permissions. When I gave them, TS now showed up in the Automation list in Security & Privacy, and now it works!!!

This worked for me too, thanks willurd! I had been using the trial for years, and didn’t realized how essential it had become to my productivity, so purchased the full version.

1 Like

So glad I could help you out! I know I was personally dreading having to downgrade.

Dio porco!

I’m finding that Total Spaces 2 is working on Mojave (10.14.2) … if it starts. I have it set to start on login, but it fails (“Total Spaces 2 failed to start”) about 40% of the time. I don’t see a pattern for why it works sometimes and not others. It can be started manually, so it’s more an annoyance than a Big Deal.

Brand new MacBook Pro i7.

Hi guys :TS won’t launch on new macOS update from today : 10.14.4 (18E174f)
Anyone for whom it works ?
BTW : I am using the latest update, 2.7.7
Hi Steve,
have you experienced the issue ?

Please try with v2.7.8

http://downloads.binaryage.com/TotalSpaces2-2.7.8.dmg

Thank you Stephen, great work.
Testing now.
Thx for such a quick update.

Works like a champ. Thanks Stephen!

Beta 2 of 10.14.4 won’t work with v2.7.8, please try with v2.7.9

http://downloads.binaryage.com/TotalSpaces2-2.7.9.dmg

Let me know if it works ok!

Yes it does, thank you very much Stephen !

Hello everybody,
I’m a new user of TS and I’m really happy to have bought the full version.
But I just upgraded to Mojave (10.14.3) and TS can’t work without SIP off.
I don’t feel comfortable with using my mac without SIP so I wondered if there will be a chance to get TS working with SIP on? Or is it definitive?
Thank you!

Hi, if you download the latest beta of 10.14.4 (beta 3) you’ll need this version ot TotalSpaces2: http://downloads.binaryage.com/TotalSpaces2-2.7.11.dmg

Is there an alternative to TotalSpaces2 on Mojave? Without TotalSpace2 i will probably stay on Sierra forever :sob: