Posted on 04-25-2016 03:20 PM
I'm trying to enable the dock magnification when a new user logs in for the first time by putting the following in a login script
defaults write /Users/$3/Library/Preferences/com.apple.dock magnification -boolean TRUE killall Dock
If I manually run it as the user (replacing $3 with username) it works fine. But when I run it as a login script it resets the dock completely. Anyone have a guess, or a better idea at what I am trying to achieve? I don't want to use a configuration profile because I want to allow the user to adjust their settings as they wish.
Posted on 04-25-2016 03:28 PM
My guess is, when you do a defaults write
on the user's Dock plist you're changing the ownership to root so when the Dock is killed and restarts, it can't read the plist and loads in a new default one. You need to make sure to set the ownership and permissions correctly on the plist before restarting the Dock if you plan on scripting any changes to it from a Casper Suite policy.
chown $3 /Users/$3/Library/Preferences/com.apple.Dock.plist
chmod 700 /Users/$3/Library/Preferences/com.apple.Dock.plist
Posted on 04-26-2016 05:20 AM
You could try it this way, this is working for me for a similar function:
loggedInUser=`python -c 'from SystemConfiguration import SCDynamicStoreCopyConsoleUser; import sys; username = (SCDynamicStoreCopyConsoleUser(None, None, None) or [None])[0]; username = [username,""][username in [u"loginwindow", None, u""]]; sys.stdout.write(username + "
");'`
sudo -u $loggedInUser defaults write com.apple.dock magnification -boolean TRUE
Or modify the user template if you only want to effect new users anyway.
for i in `ls -1 "/System/Library/User Template"`; do
defaults write "/System/Library/User Template/${i}/Library/Preferences/com.apple.dock.plist" magnification -boolean TRUE
done