Usage
CLI
usage: dooti [-h] [-f {json,yaml}] [-y] [-t] {apply,ext,scheme,uti} ...
Manage default handlers on macOS.
positional arguments:
{apply,ext,scheme,uti}
commands
apply Apply a YAML state configuration.
ext Manage the default handler for all UTI associated with file extensions
scheme Manage default handler for URI scheme(s)
uti Manage default handler for UTI(s)
options:
-h, --help show this help message and exit
-f {json,yaml}, --format {json,yaml}
The output format. Defaults to YAML.
-y, --yes Do not ask for consent, assume yes.
-t, --dry-run Only show planned changes and exit.
Configuration
dooti
can also ensure the state of handler associations on your system via a YAML configuration file (by running dooti apply
). If you do not provide an explicit path, dooti
will look in the following locations and load the first found file:
$XDG_CONFIG_HOME/dooti.yaml
$XDG_CONFIG_HOME/dooti.yml
$XDG_CONFIG_HOME/dooti/dooti.yaml
$XDG_CONFIG_HOME/dooti/dooti.yml
$XDG_CONFIG_HOME/dooti/config.yaml
$XDG_CONFIG_HOME/dooti/config.yml
The expected configuration format is as follows:
# All handlers in this file can be specified as usual,
# meaning name, bundle ID or absolute path.
# Manage file extension associations.
ext:
nfo: Notes
jpeg: Preview
# Manage URI scheme associations.
scheme:
http: Firefox
mailto: Mail
# Manage specific UTI associations.
uti:
public.c‑source: Sublime Text
# Manage associations per app/handler.
app:
Sublime Text:
ext:
- py
- rst
- yml
- yaml
uti:
- public.fortran‑source
Brave Browser:
scheme:
- ipfs
Examples
Show file path(s) to current handler(s) of file extension(s):
dooti ext csv
Show file path(s) to current handler(s) of URI scheme(s):
dooti scheme http https
Set default handler for file extension(s):
dooti ext csv -x "Sublime Text"
dooti ext csv -x com.sublimetext.4
dooti ext csv -x "/Applications/Sublime Text.app"
Set default handler for URI scheme(s):
dooti scheme http -x Firefox
dooti scheme http -x org.mozilla.firefox
dooti scheme http -x /Applications/Firefox.app
Show proposed changes from explict config file:
dooti -t apply -i my_conf.yaml
Automatically apply idempotent state from dotfiles and show output using jq
:
dooti -yf json apply | jq
As a python module
To use dooti in a project:
import dooti
d = dooti.Dooti()
# set default handler for csv files
# the extension has to be registered with MacOS and
# the handler has to be installed
d.set_default_ext("csv", "Sublime Text")
# get default handler for http scheme
handler = d.get_default_scheme("http")