apply-user-defaults
is a small utility to set macOS user defaults declaratively from a YAML file.
To use, simply structure a YAML file like the following:
com.apple.dock: # System Preferences > Dock > Automatically hide and show the Dock. autohide: true # System Preferences > Dock > Minimize windows using: Scale effect. mineffect: "scale" # System Preferences > Dock > Show indicators for open applications. show-process-indicators: false # System Preferences > Dock > Size. tilesize: 72
Then apply it using:
$ apply-user-defaults path-to-file.yaml
You can also see what commands are being run by enabling verbose output:
$ apply-user-defaults path-to-file.yaml --verbose ==> defaults write com.apple.dock autohide -bool true ==> defaults write com.apple.dock mineffect -string scale ==> defaults write com.apple.dock show-process-indicators -bool false ==> defaults write com.apple.dock tilesize -int 72 Success! Applied defaults.
Environment variables can also be included using shell parameter expansion syntax. For example:
com.apple.finder: # Finder > Preferences > New Finder windows show > Home directory. NewWindowTargetPath: "file://${HOME}"
will evaluate to:
defaults write com.apple.finder NewWindowTargetPath -string "file://$HOME"
where $HOME
is the value contained in the HOME
environment variable.
This only applies when the string in the YAML file begins with a dollar sign and is wrapped in braces (just using $HOME
won't work).
To disable, you may pass the flag --no-env
or escape the dollar sign, e.g. '\\${VALUE}'
.
Pre-compiled binaries are available on the releases page.
If you're using Homebrew, you can install with a custom tap:
$ brew install zero-sh/tap/apply-user-defaults
To install via Cargo, run:
$ cargo install apply-user-defaults
To build from source:
$ git clone https://github.com/zero-sh/apply-user-defaults.git $ cd apply-user-defaults $ cargo run -- path-to-file.yml --verbose
This project is licensed under either the Apache-2.0 or MIT license, at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4