Created
October 24, 2019 03:37
-
-
Save kamui545/c810eccf6281b33a53e094484247f5e8 to your computer and use it in GitHub Desktop.
Customize macOS dock via command line
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
source "./dock_functions.sh" | |
declare -a apps=( | |
'/System/Applications/Utilities/Terminal.app' | |
'/System/Applications/Music.app' | |
'/Applications/Google Chrome.app' | |
'/Applications/PhpStorm.app' | |
'/Applications/Visual Studio Code.app' | |
'/System/Applications/System Preferences.app' | |
); | |
declare -a folders=( | |
~/Downloads | |
); | |
clear_dock | |
disable_recent_apps_from_dock | |
for app in "${apps[@]}"; do | |
add_app_to_dock "$app" | |
done | |
for folder in "${folders[@]}"; do | |
add_folder_to_dock $folder | |
done | |
killall Dock |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# https://github.com/rpavlick/add_to_dock | |
# adds an application to macOS Dock | |
# usage: add_app_to_dock "Application Name" | |
# example add_app_to_dock "/System/Applications/Music.app" | |
function add_app_to_dock { | |
app="${1}" | |
if open -Ra "${app}"; then | |
echo "$app added to the Dock." | |
defaults write com.apple.dock persistent-apps -array-add "<dict> | |
<key>tile-data</key> | |
<dict> | |
<key>file-data</key> | |
<dict> | |
<key>_CFURLString</key> | |
<string>${app}</string> | |
<key>_CFURLStringType</key> | |
<integer>0</integer> | |
</dict> | |
</dict> | |
</dict>" | |
else | |
echo "ERROR: Application $1 not found." | |
fi | |
} | |
# adds a folder to macOS Dock | |
# usage: add_folder_to_dock "Folder Path" -a n -d n -v n | |
# example: add_folder_to_dock "~/Downloads" -a 2 -d 0 -v 1 | |
# key: | |
# -a or --arrangement | |
# 1 -> Name | |
# 2 -> Date Added | |
# 3 -> Date Modified | |
# 4 -> Date Created | |
# 5 -> Kind | |
# -d or --displayAs | |
# 0 -> Stack | |
# 1 -> Folder | |
# -v or --showAs | |
# 0 -> Automatic | |
# 1 -> Fan | |
# 2 -> Grid | |
# 3 -> List | |
function add_folder_to_dock { | |
folder="${1}" | |
arrangement="1" | |
displayAs="0" | |
showAs="0" | |
while [[ "$#" -gt 0 ]]; do | |
case $1 in | |
-a|--arrangement) | |
if [[ $2 =~ ^[1-5]$ ]]; then | |
arrangement="${2}" | |
fi | |
;; | |
-d|--displayAs) | |
if [[ $2 =~ ^[0-1]$ ]]; then | |
displayAs="${2}" | |
fi | |
;; | |
-v|--showAs) | |
if [[ $2 =~ ^[0-3]$ ]]; then | |
showAs="${2}" | |
fi | |
;; | |
esac | |
shift | |
done | |
if [ -d "$folder" ]; then | |
echo "$folder added to the Dock." | |
defaults write com.apple.dock persistent-others -array-add "<dict> | |
<key>tile-data</key> | |
<dict> | |
<key>arrangement</key> | |
<integer>${arrangement}</integer> | |
<key>displayas</key> | |
<integer>${displayAs}</integer> | |
<key>file-data</key> | |
<dict> | |
<key>_CFURLString</key> | |
<string>file://${folder}</string> | |
<key>_CFURLStringType</key> | |
<integer>15</integer> | |
</dict> | |
<key>file-type</key> | |
<integer>2</integer> | |
<key>showas</key> | |
<integer>${showAs}</integer> | |
</dict> | |
<key>tile-type</key> | |
<string>directory-tile</string> | |
</dict>" | |
else | |
echo "ERROR: Folder $folder not found." | |
fi | |
} | |
function add_spacer_to_dock { | |
defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}' | |
} | |
function add_small_spacer_to_dock { | |
defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="small-spacer-tile";}' | |
} | |
function clear_apps_from_dock { | |
defaults delete com.apple.dock persistent-apps | |
} | |
function clear_others_from_dock { | |
defaults delete com.apple.dock persistent-others | |
} | |
function clear_dock { | |
clear_apps_from_dock | |
clear_others_from_dock | |
} | |
function disable_recent_apps_from_dock { | |
defaults write com.apple.dock show-recents -bool false | |
} | |
function enable_recent_apps_from_dock { | |
defaults write com.apple.dock show-recents -bool true | |
} | |
function reset_dock { | |
defaults delete com.apple.dock | |
killall Dock | |
} |
Took me long enough to figure out how to add system apps, but here's my code for whoever it may be useful:
# Customize Dock
## Delete Dock
defaults write com.apple.dock persistent-apps -array
# Add system icons
declare -a sys_icons=(
"/Applications/System Settings"
"/Volumes/Preboot/Cryptexes/App/System/Applications/Safari"
)
for sys_icon in "${sys_icons[@]}"; do
defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/System${sys_icon}.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
done
## Add application icons
declare -a icons=("Google Chrome" "Slack" "Sourcetree" "IntelliJ IDEA CE" "XCode" "Android Studio" "iTerm" "Postman" "Postgres" "pgAdmin 4")
for icon in "${icons[@]}"; do
if [ -d "/Applications/${icon}.app" ]; then
if ! defaults read com.apple.dock | grep "${icon}"; then
defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/${icon}.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
fi
fi
done
## Restart Dock
killall Dock
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Brilliant!