-
-
Save stephancasas/236f543b0f9f6509f5fe5878de01e38a to your computer and use it in GitHub Desktop.
#!/usr/bin/env osascript -l JavaScript | |
const App = Application.currentApplication(); | |
App.includeStandardAdditions = true; | |
const kCFPrefsFeatureFlagsDir = '/Library/Preferences/FeatureFlags/Domain'; | |
const kCFPrefsFeatureEnabledKey = 'Enabled'; | |
const kUIKitDomainPrefsTemporaryPath = '/tmp/UIKit.plist'; | |
const kUIKitRedesignedTextCursorKey = 'redesigned_text_cursor'; | |
function run(_) { | |
const dict = $.NSMutableDictionary.new; | |
const enabled = $.NSMutableDictionary.new; | |
enabled.setValueForKey(false, kCFPrefsFeatureEnabledKey); | |
dict.setValueForKey(enabled, kUIKitRedesignedTextCursorKey); | |
const error = $(); | |
dict.writeToURLError( | |
$.NSURL.fileURLWithPath(kUIKitDomainPrefsTemporaryPath), | |
error, | |
); | |
if (typeof error.js != 'undefined') { | |
return `🫤: ${error.localizedDescription}`; | |
} | |
return App.doShellScript( | |
[ | |
`mkdir -p '${kCFPrefsFeatureFlagsDir}'`, | |
`mv '${kUIKitDomainPrefsTemporaryPath}' '${kCFPrefsFeatureFlagsDir}'`, | |
].join(' && '), | |
{ | |
administratorPrivileges: true, | |
}, | |
).length == 0 ? '😃' : '🫤'; | |
} |
Great work on this... the hero macOS needs right now.
Thanks a lot! Works!
Hey this has been great for turning off horrible new cursor in Chrome, Notes and so on - life-altering, thank you and yes I am happy to buy you a coffee. But I use Apple Pages + Numbers and the thick colored cursor is still showing on those - do you have any suggestions or do you think I need to get MS Word and hope that's immune?
@MysticMedusa it seems like all Catalyst applications set their own insertion point color. I say this because the new cursor service is backed by UIKit and Catalyst apps use UIKit whereas other macOS apps use AppKit. How I interpret this is that disengaging the redesigned insertion point causes AppKit apps to fallback to their classic insertion point whereas UIKit apps will always use the UIKit insertion point.
That said, there are a seemingly infinite number of undocumented preferences in macOS. As I continue to research the security exploit that led me down this rabbit hole, I'll keep an eye out for keys that might achieve the outcome you want.
@MysticMedusa I posted a way to change the insertion point color here on AskDifferent. It's not exactly what you're seeking, but may help in the interim.
@stephancasas Thanks for developing this. After running the script, I'm having a similar issue to the above where the .plist isn't showing up in my Library/Preferences/... I've also been having issues where in specific applications the cursor vertical line flashy bit (technical term) is not appearing in some instances. I've been trying to follow along in your comments for a fix but I'm afraid it gets beyond my day to day computer skills. Do you have any next step ideas for reverting your script to defaults in an effort to get the cursor back? I suppose I'd prefer the cursor to the annoying caps lock indicator.. Any help is appreciated, thanks so much!
@WRELight, when you're looking for the property list, make sure you're looking in the root library (/Library/Preferences
), and not the user library (~/Library/Preferences
).
Depending on how the developer of an application wrote their app, you may encounter unexpected behavior. Unfortunately, there's little I can do in that regard because (that I know) Feature Flags are applied at the global scope — not on a per-app basis.
If you'd like to restore the cursor behavior to its stock setting, you can run the following Terminal command:
sudo rm -rf /Library/Preferences/FeatureFlags
Cheers
@stephancasas Thanks so much! It was the root library vs user library thing. I appreciate it!
gosh! so much code for a one-liner!
sudo defaults write /Library/Preferences/FeatureFlags/Domain/UIKit.plist redesigned_text_cursor -dict-add Enabled -bool NO
and you're done!
@aol-nnov I opted to keep the code instead of going the one-liner route in order to preserve the UI-based privilege escalation dialogue.
Given that a sizable number of users reading this have likely never used Terminal, I anticipated the next question being "I ran the command you shared, but it won't let me type my password."
@stephancasas that makes sense...
Also, while fighting recent MacOS updates, ha-ha, I've found a marvellous repo with nerd-ish defaults. https://github.com/kevinSuttle/macOS-Defaults
May be, you'll find it useful too! 😉
@aol-nnov Thank you! I'll take a look at this for sure! :)
Loving this! Thanks so much @stephancasas !
Any ETA for the app you mentioned you would write if Apple didn't find any security issues (which they didn't according to your reddit post)? I'm happy to do any testings!
I did the script, I have an
ls -la /Library/Preferences/FeatureFlags/Domain
total 8
drwxr-xr-x 3 root wheel 96 9 фев 17:59 .
drwxr-xr-x 3 root wheel 96 9 фев 17:39 ..
-rw-r--r-- 1 jorj_gizer wheel 272 9 фев 17:59 UIKit.plist
What should I do next? Nothing was changed
@jorjGizer Did you reboot your Mac?
Yes, 2 times. I have Sonoma 14.3.1
@MrRod Not at the moment. I've had some pressing issues with work that needed attention. I'll update the Reddit post and sent a post on X when something's ready to be published.
@jorjGizer Run cat /Library/Preferences/FeatureFlags/Domain/UIKit.plist
and please paste the output here.
@MrRod Not at the moment. I've had some pressing issues with work that needed attention. I'll update the Reddit post and sent a post on X when something's ready to be published.
Thank you for your answer, I'll keep an eye on both Reddit and X :)
@jorjGizer That looks correct. What might be causing an issue is the file ownership. I'm not certain, but I think that root
needs to be the owner for the file to take effect — such is the way that launchd
handles certain property lists, too. Try changing ownership with:
sudo chown root /Library/Preferences/FeatureFlags/Domain/UIKit.plist
Hi, maybe somebody knows how to change the cursor to block in TextEdit (mac osX Sonoma). Thanks!
@zdravnick The systemwide insertion point doesn’t offer a block-type presentation style, so a feature like that would need to be implemented in the application itself or in a custom input method.
you're right. But I have no idea how to do this...
Thank you for taking the time to put this together. When I copy it in, I get the message
zsh: event not found: /usr/bin/env
And the caps lock feature still displays.
I'm very new to using the terminal window, and have no real history of monkeying around with such things.
After running this script, nothing happened. Now what can I do?
That's great!
I've added a link back to here for one of the main threads I had been discussing it in. https://discussions.apple.com/thread/255161577?answerId=259775178022#259775178022
The CapsLock indicator doesn't bother me too much. But if you find a solution for it, let me know. I had posted about the missing text cursor problem in a few threads focused on the CapsLock indicator as well, since many had used your solution.
I'd be glad to help point people to any more fine-grained solution you find.
Thanks again so much for your help! It makes my system much more useable again.