How to run TotalSpaces2 on El Capitan or Sierra

TotalSpaces2 versions 2.3.5 and above have support for OSX 10.11 El Capitan and macOS 10.12 Sierra, but cannot run on a normally configured machine due to system integrity protection, a new security feature in El Capitan.

This article will tell you how to configure your machine by modifying the new setting, so that you can run TotalSpaces2.

Starting with version 2.5.4 of TotalSpaces2, you can turn System Integrity Protection back on after you have installed TotalSpaces2 if you wish. See here for information.

Before you do this, it is important to get informed about what System Integrity Protection is, and what it means to turn it off. Technical details are well covered in the El Capitan review on Ars Technica. Apple also provide some information here.

Anyway, if you decide to modify the setting under El Capitan/Sierra, you will be able to install and run TotalSpaces2 as before. Just to be clear…

I'm not encouraging you to modify your System Integrity Protection settings. Your machine may be less secure if you do. It is entirely your decision.

How to modify System Integrity Protection

You must boot into the Recovery OS. You do this by restarting your machine, and holding     until the Apple logo appears.

Then select Terminal from the Utilities menu. It looks like this:

In the window that opens, type csrutil enable --without debug and press return. This turns off the part of System Integrity Protection that TotalSpaces2 needs to run, and OSX complains that it is an unsupported configuration.

Reboot your machine and you may install or run the latest version of TotalSpaces2.

Note, you can also use the csrutil disable command to completely disable System Integrity Protection. This has the advantage that there is no scary warning about an unsupported configuration, but the disadvantage that the whole of SIP (rather than just part) is disabled.

Technical details

TotalSpaces2 works by changing the way the Dock program handles spaces. OSX does not provide any other way to control spaces, this is the only way the functionality of TotalSpaces2 can be achieved.

In order to change some features inside Dock, we use a technique called code injection. This means we add some additional code to the Dock program whilst it is running to do what we need. This is relatively safe - in fact we do not change any part of OSX on the disk. You only have to quit TotalSpaces2, and the Dock program will restart and everything will be as if TotalSpaces2 was never running.

However, in El Capitan the OSX developers added a feature that disallows this kind of modification even if you have administrator access. It can also disallow other kinds of modifications (such as replacing parts of the system on disk).

In order for TotalSpaces2 to work, part of this new feature must be disabled. And we don’t recommend you do this unless you know what you are doing.

You can find some further information in our blog.