1- #! /opt/homebrew/bin/bash
1+ # shellcheck shell=bash
2+ # Sourced by run.sh - configure macOS system preferences and Dock
23
34# Disable screensaver
45defaults -currentHost write com.apple.screensaver idleTime 0
@@ -21,8 +22,15 @@ defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true
2122# Speeds up window minimizing and maximizing
2223defaults write com.apple.dock mineffect -string " scale"
2324
24- # Remove all apps kept in Dock by default
25- defaults write com.apple.dock persistent-apps -array
25+ # Clear Dock apps only if Dock is at default (has Mail/Safari) - skip on re-runs
26+ current_dock=$( defaults read com.apple.dock persistent-apps 2> /dev/null | grep -c " file-label" ) || current_dock=0
27+ if [[ " $current_dock " -gt 0 ]]; then
28+ # Check if it looks like default Dock (has Safari)
29+ has_safari=$( defaults read com.apple.dock persistent-apps 2> /dev/null | grep -c " Safari" ) || has_safari=0
30+ if [[ " $has_safari " -gt 0 ]]; then
31+ defaults write com.apple.dock persistent-apps -array
32+ fi
33+ fi
2634
2735# Don't show recent apps not presently open in the dock
2836defaults write com.apple.dock show-recents -bool FALSE
@@ -77,27 +85,32 @@ defaults write NSGlobalDomain AppleShowAllExtensions -bool true
7785defaults write kCFPreferencesAnyApplication TSMLanguageIndicatorEnabled 0
7886
7987# Import `add_to_dock` function
80- source add_to_dock.sh
88+ source " $SETUP /lib/ add_to_dock.sh"
8189
8290# Add the following applications to the Mac dock
83- add_to_dock " 1Password"
84- add_to_dock " Boop"
85- add_to_dock " Calculator" " System"
86- add_to_dock " Firefox Developer Edition"
87- add_to_dock " Google Chrome"
88- add_to_dock " iPhone Mirroring" " System"
89- add_to_dock " iTerm"
90- add_to_dock " NordVPN"
91- add_to_dock " Notes" " System"
92- add_to_dock " Photo Booth" " System"
93- add_to_dock " Reminders" " System"
94- add_to_dock " Spotify"
95- add_to_dock " Utilities/Activity Monitor" " System"
96- add_to_dock " Visual Studio Code"
97- add_to_dock " Weather" " System"
98- # Required to make changes to the Dock and Finder take effect
99- killall Dock
100- killall Finder
91+ # Track if any apps were added (return 0 = added, 2 = already present)
92+ dock_changed=false
93+ add_to_dock " 1Password" && dock_changed=true
94+ add_to_dock " Boop" && dock_changed=true
95+ add_to_dock " Calculator" " System" && dock_changed=true
96+ add_to_dock " Firefox Developer Edition" && dock_changed=true
97+ add_to_dock " Google Chrome" && dock_changed=true
98+ add_to_dock " iPhone Mirroring" " System" && dock_changed=true
99+ add_to_dock " iTerm" && dock_changed=true
100+ add_to_dock " NordVPN" && dock_changed=true
101+ add_to_dock " Notes" " System" && dock_changed=true
102+ add_to_dock " Photo Booth" " System" && dock_changed=true
103+ add_to_dock " Reminders" " System" && dock_changed=true
104+ add_to_dock " Spotify" && dock_changed=true
105+ add_to_dock " Utilities/Activity Monitor" " System" && dock_changed=true
106+ add_to_dock " Visual Studio Code" && dock_changed=true
107+ add_to_dock " Weather" " System" && dock_changed=true
108+
109+ # Only restart Dock if apps were added
110+ if [[ " $dock_changed " == " true" ]]; then
111+ killall Dock
112+ fi
113+ # Finder settings apply on next window open, no restart needed
101114
102115# Add directories to Finder favorites
103116# brew install --cask mysides
0 commit comments