[Update Discussion] TotalFinder 1.14.2 for Apple Silicon and Intel

@akemin_dayo,

Thank you for your hard work on updating TotalFinder for M1 Macs.

I’ve been experiencing an infrequent (couple times a week) bug on my M1 Mini running Monterey that seems to be caused by TotalFinder.

When accessing SMB shares on a LAN and viewing the contents of folders on those shares, the Finder can go into an unresponsive state. Eventually the Finder crashes and cannot be relaunched without it instantaneously crashing. Once it’s in this state, the computer has to be restarted.

After troubleshooting, I narrowed the culprit down to TotalFinder. Uninstalling TotalFinder has apparently brought stability back to the Finder when accessing local SMB shares.

What’s the best way to determine the exact cause of this issue with TotalFinder and the Finder so that the issue could, possibly, be fixed?

1 Like

Sometime last night, Apple released to the Developers Conf MacOS 13.0 Beta 2 (Version 13.0 Beta (22A5286j). I installed 1.14.2 and still does not work. SIP is fully disabled, Reduced Security mode is selected and owner, operator really wants Total Finder to work on “Ventura”. Any suggestions or possible work arounds or things you’d like me to try? This machine is used to test Windows 11 on ARM64 architecture under Parallels so if it breaks, it’s no big deal. Also the touch command to bypass the architecture check ha to be run under sudo or it will not run. More Apple security changes.

@Sames If you’re referring to the colour of the text in the menu bar, this actually changes depending the colour of your wallpaper — for instance, my menu bar text colour is black because I have a brightly-coloured wallpaper.

image

That being said, there are actually third-party tools like ChangeMenuBarColor (pre-built binary releases without having to use Mint can be found here) that allow you to effectively change the appearance of your menu bar (text colour included) by automatically modifying just the top, menu-bar-sized portion of your wallpaper.

Hopefully you’ll find that tool helpful.

As for the desktop icon text colour… I’m unfortunately not currently aware of any solutions for changing that (and it is probably out-of-scope for TotalFinder).


@strafer … Interesting. I can’t say I’ve personally ever run into this issue at all during my time dogfooding TotalFinder, and I use SMB network shares quite often.

What macOS version is this occurring on? Do you remember if you did any particular actions before Finder would crash?


@Ken TotalFinder is not yet supported on macOS 13. I still need to properly set up a testing environment and see what’s changed.

… Huh. Really? That… doesn’t sound right, considering the touch command is simply writing a file inside your home directory, which should be a very… normal thing to do.

I wonder if it’s also possible to make one final touch:

Display the actual icon of the computer in the sidebar (as this icon still remains the default proxy icon):

1 Like

Interestingly enough, I deleted the .totalfinder entry in the home directory (which was 0 bytes incidentally) ran the architecture command without sudo and got the error again, So I did it again because I’m stubborn and got the same file I had using sudo (zero bytes) after running the command the second time. So quick recap: first time: had to use sudo. second time: deleted file, ran without sudo - response is Nope…not going to create the file. third time. Up arrow, Enter and voila, the file is there. Muy loco or とても狂っている.

I’m running macOS Monterey 12.4 on an M1 mini. The SMB shares I’m connecting to are on a 2012 Mac mini running Mojave. The file sharing performance from the Monterey to Mojave has never been great; it takes a long time to mount shares, especially compared to my hackintosh (Mojave) which mounts the SMB shares quickly and reliably.

When connected to a shared volume, over wifi, the Finder would often crash when I tried to view a folder on that contained a lot of items (1000+ files and/or folders). After I uninstalled TotalFinder, the Finder no longer crashes when viewing these high item folders on a shared volume.

It could be that TotalFinder is conflicting with some other app or utility that I have running. But I don’t really know how to troubleshoot this issue to narrow down the culprit.

@Sames

In addition to ChangeMenuBarColor, there is also Boring Old Menu Bar which works well.

Hi Karen
I wish if you have time add an option for (copy to and move to) for specific folders under original copy and cut buttons.

Thanks for everything you did for us you are the best.

1 Like

I’m running 12.5b / OpenCore Legacy Patcher 0.4.7

Do I need to disable anything else? My only modification was to Allow Task For PID for TF to work per instructions in this thread. Configured and Booted SIP is identical.

I still get the Unable to deliver apple events. Any help would be appreciated.

1 Like

Really thanks for this project. When I updated my mac to macOS 13, it doesn’t work anymore. I found an interesting thing: After I switched my Apple Silicon Mac to “Reduced Security” mode, if I disable SIP, the Startup Security Utility’s option will be recoverd to “Loose Security” mode. After I disabled SIP, if I switch my Apple Silicon Mac to “Reduced Security” mode, the SIP status will be recoverd to enabled. Maybe these two options are both in conflict with each other on macOS Ventura (M1) ?

1 Like

@Welaxxx This is probably out of scope for TotalFinder, but I will take this into consideration.


Hmn… interesting. I will have to find some time and install OpenCore on some spare hardware I have to test further.

Having CSR_ALLOW_TASK_FOR_PID and CSR_ALLOW_UNRESTRICTED_FS disabled is sufficient for real Mac hardware, at least on a 2015 MacBook Pro running every relevant version I use for testing TotalFinder (12.5b4, as well as 12.4, 11.6.5, 10.15.7, and even 10.14.6 as reference).

It’s possible that OpenCore may behave differently in some minor way that is causing it to not quite work correctly on your system.

… It is odd though, I definitely recall some other people were able to get TotalFinder to run on OpenCore having at least those two SIP flags disabled.


@Ssiswent @Ken I’ve gotten TotalFinder to work on macOS 13, but there are a few issues with the current public release, including the fact that enabling the Coloured Labels feature will cause Finder to crash (due to Apple refactoring some portion of Finder, as they often do).

That being said… I’m quite surprised that both of you have reported injection issues on macOS 13, as from my testing, the current public release actually does work mostly fine on macOS 13 (aside from the aforementioned Coloured Labels crash).

There is something of note that I noticed though, but from my understanding, it should only affect virtualised copies of macOS (on Apple Silicon), not when you’re running it on bare metal.

Basically, in order for TotalFinder to successfully inject into a virtualised copy of macOS 13, I had to add the -arm64e_preview_abi boot-arg, otherwise the injector would always return error -1708 (errAEEventNotHandled), which causes (or is one possible cause) of the infamous “Apple Events cannot be delivered.” message.

So, this is a very “might as well try it in case this somehow makes it work, I guess” suggestion, but perhaps try running sudo nvram boot-args="-arm64e_preview_abi" in a macOS 13 Terminal session, and rebooting.

If this somehow makes TotalFinder work on your bare-metal macOS 13 installation, I… will have to look further into what is happening.

(And if you’re running macOS 13 in a VM like I am… well. There’s your solution! ;P)

※ Note: If you’re getting an error while trying to set your boot-args, you’re probably running a partially-enabled SIP configuration. You’ll have to add --without nvram to your csrutil invocation to disable NVRAM protections. Or if you’re lazy / don’t want to think about it, you can just fully disable SIP using csrutil disable.


Also, one last thing…!

On the off chance that someone reading this thread is trying to virtualise macOS 13 on a macOS 12 host and is running into an error while trying to perform first-time restore-install (with error AMRestorePerformRestoreModeRestoreWithError == 10), please refer to my tweet thread for how to fix this.

tl;dr: Apple kind of… made an oversight on how Virtualisation.framework works and its relation to MobileDevice.framework. To fix this, just run Xcode 14 at least once, so you get the new, out-of-band MobileDevice.framework (with macOS 13 support) installed on your system. You can safely forget about Xcode 14 and let it collect dust afterwards, if you would like.

1 Like

@akemin_dayo Thank you for your reply, I’ll try this when I get back home. And do you have any idea why this happend:

  1. After I switched my Apple Silicon Mac to “Reduced Security” mode, if I disable SIP, the Startup Security Utility’s option will be recoverd to “Loose Security” mod.
  2. After I disabled SIP, if I switch my Apple Silicon Mac to “Reduced Security” mode, the SIP status will be recoverd to enabled.

I think maybe these two options are both in conflict with each other on macOS Ventura (M1), and maybe this is the reason why I can’t use TotalFinder on my mac.

My Mac is iMac 24’’(2021), macOS 13 beta2.

1 Like

@Ssiswent “Permissive Security” mode (or what you refer to as “Loose Security” mode, presumably because you’re running a non-English macOS) is what you want to be in.

This is the security mode that disabling (or weakening) SIP will land you in, and is the only mode in which TotalFinder will operate.

Perhaps you’re getting a bit confused by the instructions — you want to go to “Reduced Security” mode first, and then downgrade to “Permissive Security” (“Loose Security”) mode, and then stay there.

For more information on why I have you do this, I explain this in this post on this thread.

Which is weird. My MBP 6,2 seemed to have less issues then others in the unsupported world. TF has been the exception since I left Catalina.

Here’s a recent trace.log of tf. You can see that it shows SIP as disabled, along with saying apple events seems to be permitted.

06/29 05:59:17 dbg | reading internal preference TraceLogLimit => '4000'
06/29 05:59:17 dbg | reading internal preference TraceLogPath => '~/Library/Logs/totalfinder-agent-trace.log'
06/29 05:59:17 dbg | Main: arc=1
06/29 05:59:17 dbg |   argv[0]=/Applications/TotalFinder.app/Contents/MacOS/TotalFinder
06/29 05:59:17 dbg | gRunningPostInstall=0
06/29 05:59:17 dbg | AgentAppDelegate init
06/29 05:59:17 dbg | AgentAppDelegate applicationWillFinishLaunching notification NSConcreteNotification 0x600002a02740 {name = NSApplicationWillFinishLaunchingNotification; object = <NSApplication: 0x7fead4805000>}
06/29 05:59:17 dbg | Call registerUserNotificationCategories
06/29 05:59:17 dbg | Call setupUserNotificationCenterDelegate
06/29 05:59:17 dbg | AgentAppDelegate applicationDidFinishLaunching notification NSConcreteNotification 0x600002a1b840 {name = NSApplicationDidFinishLaunchingNotification; object = <NSApplication: 0x7fead4805000>; userInfo = {
                   |     NSApplicationLaunchIsDefaultLaunchKey = 1;
                   | }}
06/29 05:59:17 dbg | reading internal preference CFBundleVersion => '1.14.2'
06/29 05:59:17 inf | TotalFinder.app (Agent) v1.14.2 started
06/29 05:59:17 dbg | requesting authorization for user notifications
06/29 05:59:17 dbg | got response for [UNUserNotificationCenter requestAuthorizationWithOptions] granted=1 error=(null)
06/29 05:59:17 dbg | Call checkInstallation
06/29 05:59:17 dbg | Call checkArchitecture
06/29 05:59:17 dbg | tweakable flag present at '~/.totalfinder-dontcheckarchitecture'
06/29 05:59:17 dbg | Call runningCatalinaOrLater => 1
06/29 05:59:17 dbg | Detected Catalina or later
06/29 05:59:17 dbg | Call checkSIP
06/29 05:59:17 dbg | Checking SIP status...

06/29 05:59:17 dbg | SIP is disabled

06/29 05:59:17 dbg | Call checkLibraryValidation
06/29 05:59:17 dbg | Call runningBigSurOrLater => 1
06/29 05:59:17 dbg | Checking Library Validation status...
06/29 05:59:17 dbg | Call checkAutomationPermissions
06/29 05:59:17 dbg | Checking Automation Permissions status...
06/29 05:59:17 dbg | determineInjectionMethod returns kInjectWithAppleScript
06/29 05:59:17 dbg | Call ensureFinderIsRunning
06/29 05:59:17 dbg | reading internal preference TargetBundleIdentifier => 'com.apple.finder'
06/29 05:59:17 dbg | Automation permission status=0
06/29 05:59:17 dbg | Call injectIntoRunningTarget
06/29 05:59:17 dbg | reading internal preference HardInjectionDelay => '0'
06/29 05:59:17 dbg | reading internal preference SoftInjectionDelay => '2'
06/29 05:59:17 dbg | <NSRunningApplication: 0x600000408f00 (com.apple.finder - 38365) LSASN:{hi=0x0;lo=0x11a11a}>(terminated=0) is not old enough => postpone injection by 2.000000sec (since app launch=0.000000sec, getHardInjectionDelay=0.000000sec, getSoftInjectionDelay=2.000000sec)
06/29 05:59:19 dbg | injection delay timeout fired for <NSRunningApplication: 0x600000419a80 (com.apple.finder - 38365) LSASN:{hi=0x0;lo=0x11a11a}>(terminated=0) => inject
06/29 05:59:19 inf | requesting injection into com.apple.finder[38365]
06/29 05:59:19 dbg | prevent injection into future launched instances
06/29 05:59:19 dbg | trying to acquire TotalFinder shell lock
06/29 05:59:19 dbg | reading internal preference TargetName => 'Finder'
06/29 05:59:19 dbg | reading internal preference InitEventClass => 'BATF'
06/29 05:59:19 dbg | reading internal preference InitEventID => 'init'
06/29 05:59:19 dbg | determineInjectionMethod returns kInjectWithAppleScript
06/29 05:59:19 dbg | Call injectWithAppleScript targetName=Finder initEvent=BATFinit

06/29 05:59:19 dbg | Sending apple events from TotalFinder.app to Finder.app seems to be permitted.

06/29 05:59:19 dbg | launching apple script: tell application "Finder" to «event BATFinit»
06/29 05:59:21 dbg | Call configureUpdaterNotification __CFNotification 0x6000024208a0 {name = TotalFinderAgentConfigureUpdaterNotification; object = com.apple.finder; userInfo = {
                   |     settings =     {
                   |         automaticallyCheckForUpdates = 1;
                   |         checkBetaAppCast = 0;
                   |         shouldPromptForPermissionToCheckForUpdates = 1;
                   |     };
                   | }}
06/29 05:59:21 dbg | Configure updater with {
                   |     automaticallyCheckForUpdates = 1;
                   |     checkBetaAppCast = 0;
                   |     shouldPromptForPermissionToCheckForUpdates = 1;
                   | }
06/29 05:59:21 dbg | --------------
06/29 05:59:22 !!! | Failed to execute injection apple script: {
                   |     NSAppleScriptErrorAppName = Finder;
                   |     NSAppleScriptErrorBriefMessage = "Connection is invalid.";
                   |     NSAppleScriptErrorMessage = "Finder got an error: Connection is invalid.";
                   |     NSAppleScriptErrorNumber = "-609";
                   |     NSAppleScriptErrorRange = "NSRange: {29, 16}";
                   | }
06/29 05:59:23 dbg | shell lock does not exist, injection wasn't successful
06/29 05:59:23 dbg | reading internal preference InjectionTroublesInfoURL => 'https://totalfinder.binaryage.com/injection-troubles'
06/29 05:59:23 !!! | Troubles launching TotalFinder - Apple Events cannot be delivered.

1 Like

Thanks very much!
After I run sudo nvram boot-args="-arm64e_preview_abi" in a macOS 13 Terminal session, and reboot, my TotalFinder works fine now!

@ChrisOSX Have you tried the various troubleshooting steps on this page? SIP does indeed seem to be weakened correctly, seems like there’s just something going wrong on the AppleScript side of things.

If it continues to fail, what happens when you run this in Terminal?

osascript -e 'tell application "Finder" to «event BATFinit»'


@Ssiswent … Well, that’s… interesting. I will have to look more into this.

In any case, glad it’s working for you!

Just to give you a bit more info, I’m attempting to run TotalFinder 1.14.2 on a MacBook Pro Max with 64Gb memory. I added the boot arg above and one glorious time, TF worked until I managed to fat-finger the Colored Labels setting and now it no longer works. I used the TF uninstall to remove the program, shutdown, restarted and did a clean reinstall, I checked to see if the boot argument was still in NVRAM. It is, Getting ready to try removing it once again but I’m pretty sure that’s not the problem. Somewhere TF is hiding a configuration that says “Colored Labels” is turned on and you’re going to never get TF working again, Back shortly to see how right or wrong I may be.

1 Like

@Ken Run this in Terminal to disable Coloured Labels.

defaults write com.binaryage.totalfinder TotalFinderLabelsEnabled 0

Thank you again for this! It makes using Monterey on Apple Silicon less painful. I’m still holding all of my Intel Macs on Catalina, because the UI is so much better

1 Like

I did follow those on that page with no luck.
Terminal Results:

home@Mac ~ % osascript -e 'tell application "Finder" to «event BATFinit»'
29:45: execution error: Finder got an error: Connection is invalid. (-609)

Recent partial crash report. This was after trying the Troubleshooting page again.

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace DYLD, Code 4 Symbol missing
missing symbol called
(terminated at launch; ignore backtrace)
1 Like

That worked! Thank you. It’s so nice to see TF back and functional.

1 Like