Skip to content

Latest commit

 

History

History
116 lines (74 loc) · 6 KB

injection-troubles.md

File metadata and controls

116 lines (74 loc) · 6 KB
layout title subtitle
tf-doc
TotalFinder Injection Troubles
Troubles launching TotalFinder

Are you using an Apple Silicon (M1, M2, etc.) machine?

While TotalFinder is compatible with Apple Silicon, this is not officially supported by BinaryAge.

As a result, Apple Silicon support in TotalFinder must be manually enabled. You can find more info on how to do so on this page.

I guess you are visiting this page because you just saw this notification:

Notification: Troubles launching TotalFinder - Apple Events cannot be delivered

TotalFinder needs to send Apple Events to inject own code into running Finder.app and then successfully take control over it. Unfortunately this failed on your machine for some reason.

Have you tried turning it off and on again?

In Terminal.app, please reset privacy settings the system has remembered about TotalFinder:

tccutil reset AppleEvents com.binaryage.totalfinder.agent

Then please:

  1. Force Quit Finder.app via CMD+OPT+ESC.
  2. Launch /Applications/TotalFinder.app again.

This should trigger another attempt to inject TotalFinder into Finder. You should be presented with:

TotalFinder permission prompt

Press OK, to allow this. TotalFinder then should start working. E.g. you should see TotalFinder's menubar icon.

Didn't work? Ah, not good...

A bit of historical context

In the old days when TotalFinder was first written macOS was pretty unrestricted. Apps could talk to each other freely. It was flexible but potentially unsecure. Over time Apple devs started adding various ways how to harden the system. In recent macOS versions user has to grant permissions to TotalFinder to be able to talk to Finder using Apple Events.

This plan to harden the OS sounds good in theory but how to keep backward compatibility?

  1. obviously there are many apps doing various things in various ways => Apple devs must cover all such cases including weird corner cases
  2. rogue apps could abuse security prompts, trigger them repeatedly and nag users into submission => Apple devs must somehow present prompts in a sane way and implement some heuristics to prevent such abuse
  3. this security system gets pretty complex => Apple devs are expected not to introduce bugs

Unfortunately this wasn't executed perfectly. If you are interested in technical details here are some articles about this topic:

  1. https://eclecticlight.co/2018/08/07/running-apps-with-mojaves-privacy-protection/
  2. https://www.felix-schwarz.org/blog/2018/06/apple-event-sandboxing-in-macos-mojave
  3. https://www.felix-schwarz.org/blog/2018/08/new-apple-event-apis-in-macos-mojave

TotalFinder has also own history of troubles trying to adapt to the changes Apple devs were introducing and fighting their bugs while introducing our own bugs. Software is not perfect, let's troubleshoot it.

Troubleshooting

1. please make sure you are running latest TotalFinder for you macOS version.
2. please look into System Preferences > Security & Privacy > Privacy > Automation.

You should see that TotalFinder is granted automation permissions to control Finder.

3. what if there is no mention of TotalFinder?

Well, sometimes this privacy subsystem gets into an unfortunate state. It thinks that it should prompt user for permissions, and it also thinks it needs to prevent abuse, so it blocks any permission prompts. It also does not offer any way how to tweak the permission from Security & Privacy UI. Usually this ban on permission prompts is time-based. So it should expire after some time. Maybe?!

TotalFinder versions 1.13.0 up to 1.13.7 were affected by this. Later I found the real cause of this issue. TotalFinder version 1.13.8 and up should not be affected.

Other possibility is that the permission database is somehow borked. I believe that macOS 10.15 (Mojave) had issues with this. I would recommend resetting it from command-line:

tccutil reset AppleEvents

If that does not help, you might consider resetting all privacy decisions:

tccutil reset All

btw. To see manual pages of tccutil you can run:

man tccutil

I'm not sure if you need to kill any processes for this to take effect, better do it:

killall TotalFinder; killall Finder

Or better reboot your computer according to this article.

sudo reboot

Didn't help? Since you already have disabled the SIP, there is one last brutal way how to nuke broken privacy database

sudo rm "/Library/Application Support/com.apple.TCC/TCC.db"

Then immediately reboot your computer. At least this has worked to some people on the interwebs.

4. rebooted and no success, what next?

Please email me at [email protected]. We can continue there.