Я хочу настроить док-станцию macOS с помощью сценария Bash (без AppleScript).
В настоящее время у меня есть код (взятый и измененный из этот ответ):
#!/bin/bash
defaults delete com.apple.dock persistent-apps
dock_item() {
printf '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>%s</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>', "$1"
}
defaults write com.apple.dock persistent-apps -array \
"$(dock_item /Applications/iTerm.app)" \
"$(dock_item /Applications/Visual\ Studio\ Code.app)" \
"$(dock_item /Applications/Slack.app)" \
"$(dock_item /Applications/Google\ Chrome.app)" \
"$(dock_item /System/Applications/Utilities/Screenshot.app)"
killall Dock
Что меняет док-станцию по умолчанию:
К:
Но я также хочу, чтобы он удалил папку Downloads рядом с корзиной для мусора и дублированные значки, которые появляются между вертикальными линиями (в данном случае только iTerm) запущенных приложений, которые хранятся / сохраняются в Dock (слева от вертикальные линии). Как это:
Кроме того, Dock обновляется кодом после внесения изменений путем уничтожения процессов Dock, которые затем автоматически перезапускаются. Я чувствую, что должен быть более быстрый способ сделать это, чтобы не анимировать опускающуюся док-станцию, затем рабочий стол на мгновение становиться черным, открывать все свернутые приложения, а затем анимировать поднимающуюся док-станцию (запись).





После сравнения того, что печатает defaults read com.apple.dock до и после ручного удаления значков из док-станции, я заметил, что мне просто нужно удалить ключи recent-apps (для дублированных значков) и persistent-others (для папки):
defaults delete com.apple.dock recent-apps
defaults delete com.apple.dock persistent-others