macprefs
Command and library to export macOS preferences.
Installation
Pip
pip install macprefs
Usage
Usage: prefs-export [OPTIONS]
Export preferences.
Options:
-C, --config FILE Path to the configuration file.
-K, --deploy-key FILE Key for pushing to Git repository.
-c, --commit Commit the changes with Git.
-d, --debug Enable debug logging.
-o, --output-directory DIRECTORY
Where to store the exported data.
-h, --help Show this message and exit.
prefs-export is the main utility. You can export preferences, generate a
~/.macos-like script, and store the
results in a Git repository.
My primary usage is like so:
prefs-export --output-directory ~/.config/defaults --commit
The default output directory is ~/Library/Application Support/macprefs.
Colours can be disabled by setting the environment variable NO_COLOR to a non-empty value.
Configuration
The configuration file is a TOML file. By default prefs-export checks for the path
~/Library/Application Support/macprefs/config.toml. Example file:
# The extend-* options extend the default values used by macprefs.
[tool.macprefs]
extend-ignore-keys = {'domain_name': ['key-to-ignore1', 're:^key-to-ignore']}
extend-ignore-domain-prefixes = ['org.gimp.gimp-']
extend-ignore-domains = ['domain1', 'domain2']
extend-ignore-key-regexes = ['QuickLookPreview_[A-Z0-9-\\.]+']
# Only set these if you want to override the default values used by macprefs.
# ignore-domain-prefixes = []
# ignore-domains = []
# ignore-key-regexes = []
# ignore-keys = {}
deploy-key = '/path/to/deploy-key'
In extend-ignore-keys and ignore-keys, a string value to ignore can be prefixed with re: to
indicate it is a regular expression.
About the generated shell script
A shell script named exec-defaults.sh will exist in the output directory. It may be executed, but
is primarily for copying defaults commands for use in your actual ~/.macos file.
Filtered domains and keys
Certain domains are filtered because they generally do not have anything useful to preserve, such
as com.apple.EmojiCache which only has a cache of Emoji usage data.
Some keys are filtered, as they contain values that change often and are not useful, such as
session IDs and UI state (e.g. QtUi.MainWin(Geometry|State|Pos|Size),
NSStatusItem Preferred Position).
Automated usage
A command macprefs-install-job is included which will install a daily launchd job. The job name is
sh.tat.macprefs.
Usage: macprefs-install-job [OPTIONS]
Job installer.
Options:
-K, --deploy-key FILE Key for pushing to Git repository.
-o, --output-directory DIRECTORY
Where to store the exported data.
--help Show this message and exit.
If the output directory has a .git directory, a commit will be automatically made. Be aware that
files will be added and removed automatically.
To stop this job permanently, run launchctl unload -w ~/Library/LaunchAgents/sh.tat.macprefs.plist.
To uninstall this job, after stopping permanently, delete ~/Library/LaunchAgents/sh.tat.macprefs.plist.
Metadata
Release files for macprefs 0.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| macprefs-0.4.3.tar.gz | 29.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| macprefs-0.4.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.9 kB
Release files / macprefs-0.4.3.tar.gz
| Download URL | macprefs-0.4.3.tar.gz |
|---|---|
| Size | 29.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64880cb680560c48d539f94b9ce17765e521db63f2fd142793392d065e5ceeb8
|
|
BLAKE2b-256 checksum How to use checksums |
d51eda83985ba10afca8149ea323d869184971b35fda27c73acb134b6ed7a8a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.
Transparency logRelease files / macprefs-0.4.3-py3-none-any.whl
| Download URL | macprefs-0.4.3-py3-none-any.whl |
|---|---|
| Size | 24.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c3baff2c8761f0662e20343004906a5ea30dabb751bda21fe03a87bbc85c54e
|
|
BLAKE2b-256 checksum How to use checksums |
b52f13f04264b61585cdd38e948ff9edd5e84a4b6d6eafaf7dd12a3f10ecfc7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.
Transparency log