Modify the Dock Master Package Script to ignore user template filling

GabeShack
Valued Contributor III

Hey all,
I'm looking for help modifying this Dock Master script to ignore the part about the user template and to just install in the current user that's logged in. I want to create a policy to apply once per user per computer, on login. Can anyone help me tweak this?

#!/bin/bash

# Apply dock to existing user accounts.
APPLY_DOCK_TO_EXISTING_USERS=false

# A dock plist placed in the User Template directory is applied to new user accounts.
USER_TEMPLATE_DOCK_PLIST="/System/Library/User Template/English.lproj/Library/Preferences/com.apple.dock.plist"

# Currently logged in user.
CURRENTLY_LOGGED_IN_USER=$(/usr/bin/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 + "
");')

if [[ "$APPLY_DOCK_TO_EXISTING_USERS" == "true" ]]
then
    # Output local home directory path (/Users/username).
    for USER_HOME in /Users/*
    do
        # Extract account name (a.k.a. username) from home directory path.
        ACCOUNT_NAME=$(/usr/bin/basename "${USER_HOME}")

        # If account name is not "Shared".
        if [[ "$ACCOUNT_NAME" != "Shared" ]]
        then
            USER_DOCK_PLIST="${USER_HOME}/Library/Preferences/com.apple.dock.plist"

            # If the account already contains a dock plist.
            if [[ -f "$USER_DOCK_PLIST" ]]
            then
                echo "Removing existing user dock plist."
                /usr/bin/defaults delete "$USER_DOCK_PLIST"
           fi

            echo "Copying the latest dock plist into place."
            cp "$USER_TEMPLATE_DOCK_PLIST" "$USER_DOCK_PLIST"

            echo "Updating permissions to match user (${ACCOUNT_NAME})."
            /usr/sbin/chown -R "$ACCOUNT_NAME" "$USER_DOCK_PLIST"

            # Reboot the dock if a user is currently logged in.
            if [[ "$CURRENTLY_LOGGED_IN_USER" == "$ACCOUNT_NAME" ]]
            then
                # Update cached dock plist.
                /usr/bin/sudo -u "$ACCOUNT_NAME" /usr/bin/defaults read "$USER_DOCK_PLIST"
                # Relaunch the dock process.
                /usr/bin/killall Dock
            fi
        fi
    done
fi
Gabe Shackney
Princeton Public Schools
0 REPLIES 0