-
Notifications
You must be signed in to change notification settings - Fork 6
/
setDock-defaultDock.sh
executable file
·107 lines (88 loc) · 3.04 KB
/
setDock-defaultDock.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# version 2.0
# Written by: Mischa van der Bent
#
# Permission is granted to use this code in any way you want.
# Credit would be nice, but not obligatory.
# Provided "as is", without warranty of any kind, express or implied.
#
# DESCRIPTION
# This script configures users docks using docktutil
# source dockutil https://github.com/kcrawford/dockutil/
#
# REQUIREMENTS
# dockutil Version 3.0.0 or higher installed to /usr/local/bin/
# Compatible with macOS 11.x and higher
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# COLLECT IMPORTANT USER INFORMATION
# Get the currently logged in user
currentUser=$( echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }' )
# Get uid logged in user
uid=$(id -u "${currentUser}")
# Current User home folder - do it this way in case the folder isn't in /Users
userHome=$(dscl . -read /users/${currentUser} NFSHomeDirectory | cut -d " " -f 2)
# Path to plist
plist="${userHome}/Library/Preferences/com.apple.dock.plist"
# Convenience function to run a command as the current user
# usage: runAsUser command arguments...
runAsUser() {
if [[ "${currentUser}" != "loginwindow" ]]; then
launchctl asuser "$uid" sudo -u "${currentUser}" "$@"
else
echo "no user logged in"
exit 1
fi
}
# Check if dockutil is installed
if [[ -x "/usr/local/bin/dockutil" ]]; then
dockutil="/usr/local/bin/dockutil"
else
echo "dockutil not installed in /usr/local/bin, exiting"
exit 1
fi
# Version dockutil
dockutilVersion=$(${dockutil} --version)
echo "Dockutil version = ${dockutilVersion}"
# Create a clean Dock
runAsUser "${dockutil}" --remove all --no-restart ${plist}
echo "clean-out the Dock"
# Full path to Applications to add to the Dock
apps=(
"/Applications/Self Service.app"
"/System/Applications/Launchpad.app"
"/Applications/zoom.us.app"
"/Applications/Google Chrome.app"
"/Applications/Safari.app"
"/System/Applications/Calendar.app"
"/System/Applications/Notes.app"
"/Applications/Keynote.app"
"/Applications/Numbers.app"
"/Applications/Pages.app"
"/System/Applications/System Preferences.app"
)
# Loop through Apps and check if App is installed, If Installed at App to the Dock.
for app in "${apps[@]}";
do
if [[ -e ${app} ]]; then
runAsUser "${dockutil}" --add "$app" --no-restart ${plist};
else
echo "${app} not installed"
fi
done
# Add Application Folder to the Dock
runAsUser "${dockutil}" --add /Applications --view grid --display folder --sort name --no-restart ${plist}
# Add logged in users Downloads folder to the Dock
runAsUser "${dockutil}" --add ${userHome}/Downloads --view list --display stack --sort dateadded --no-restart ${plist}
# Disable show recent
# runAsUser defaults write com.apple.dock show-recents -bool FALSE
# echo "Hide show recent from the Dock"
# sleep 3
# Kill dock to use new settings
killall -KILL Dock
echo "Restarted the Dock"
echo "Finished creating default Dock"
exit 0