Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zero-sh/apply-user-defaults
A small utility to set macOS user defaults declaratively from a YAML file.
https://github.com/zero-sh/apply-user-defaults
declarative defaults dotfiles dotfiles-macos macos user yaml
Last synced: 2 months ago
JSON representation
A small utility to set macOS user defaults declaratively from a YAML file.
- Host: GitHub
- URL: https://github.com/zero-sh/apply-user-defaults
- Owner: zero-sh
- License: apache-2.0
- Created: 2019-12-12T23:17:04.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-08-24T22:49:10.000Z (over 1 year ago)
- Last Synced: 2024-08-10T11:25:34.133Z (5 months ago)
- Topics: declarative, defaults, dotfiles, dotfiles-macos, macos, user, yaml
- Language: Rust
- Size: 72.3 KB
- Stars: 62
- Watchers: 3
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/zero-sh/apply-user-defaults.svg?branch=master)](https://travis-ci.org/zero-sh/apply-user-defaults)
![License](https://img.shields.io/crates/l/apply-user-defaults.svg)
[![Crates.io](https://img.shields.io/crates/v/apply-user-defaults.svg)](https://crates.io/crates/apply-user-defaults)# apply-user-defaults
`apply-user-defaults` is a small utility to set macOS user defaults
declaratively from a YAML file.## Usage
To use, simply structure a YAML file like the following:
```yaml
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:
```sh
$ apply-user-defaults path-to-file.yaml
```You can also see what commands are being run by enabling verbose output:
```sh
$ 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.
```## Template Expansion
Environment variables can also be included using shell parameter expansion
syntax. For example:```yaml
com.apple.finder:
# Finder > Preferences > New Finder windows show > Home directory.
NewWindowTargetPath: "file://${HOME}"
```will evaluate to:
```sh
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}'`.## Installation
Pre-compiled binaries are available on the [releases
page](https://github.com/zero-sh/apply-user-defaults/releases).### Homebrew
If you're using Homebrew, you can install with a custom tap:
```sh
$ brew install zero-sh/tap/apply-user-defaults
```### Cargo Install
To install via Cargo, run:
```sh
$ cargo install apply-user-defaults
```### Building from Source
To build from source:
```sh
$ git clone https://github.com/zero-sh/apply-user-defaults.git
$ cd apply-user-defaults
$ cargo run -- path-to-file.yml --verbose
```## License
This project is licensed under either the [Apache-2.0](LICENSE-APACHE) or
[MIT](LICENSE-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.