-
-
Save raydouglass/e2da1232f798b58c106eddba78c41a87 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 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment