Skip to main content

Manage default handlers for files and URI schemes on MacOS 12.0+.

Features

  • Manage handlers by specifying file extension, UTI or URI scheme.

  • Specify handlers by name, bundle ID or absolute path.

  • Check your associations into a dotfiles repository and ensure an idempotent state by simply running dooti apply.

Installation

I recommend installing with pipx, although pip will work fine as well:

pipx install dooti

Quickstart

dooti currently supports three specific subcommands (ext, scheme, uti) and a broad one (apply).

Lookup handlers

Simply pass a list of one specific type to the appropriate command. Example:

$ dooti ext html xml
html: /Applications/Firefox.app
xml: /Applications/Sublime Text.app

$ dooti --format json scheme http https ftp | jq
{
  "http": "/Applications/Firefox.app",
  "https": "/Applications/Firefox.app",
  "ftp": "/System/Library/CoreServices/Finder.app"
}

$ dooti uti public.html
public.html: /Applications/Firefox.app

Set handlers

Changing the default handler can be requested by adding -x <handler_ref> to the lookup command. The handler reference can be a name, bundle ID or absolute filesystem path. Example:

$ dooti ext csv xml -x "Sublime Text"
The following extensions are set to be changed:
csv: /Applications/Numbers.app -> /Applications/Sublime Text.app
xml: /Applications/Firefox.app -> /Applications/Sublime Text.app

$ dooti scheme ftp -x /Applications/Firefox.app
The following scheme is set to be changed:
ftp: /System/Library/CoreServices/Finder.app -> /Applications/Firefox.app

$ dooti -tf json uti public.c-source -x com.sublimetext.4
{"changes": {"utis": {"public.c-source": {"from": "/Applications/Notes.app", "to": "/Applications/Sublime Text.app"}}}, "errors": []}

Ensure state

dooti can ingest and apply a YAML configuration like this:

ext:
  jpeg: Preview

scheme:
  http: Firefox
  mailto: Mail

uti:
  public.c‑source: Sublime Text

app:
  Sublime Text:
    ext:
      - py
      - rst
      - yml
      - yaml
    uti:
      - public.fortran‑source

  Brave Browser:
    scheme:
      - ipfs

By default, it looks at $XDG_CONFIG_HOME/dooti/config.yaml (and others, see docs/usage.rst).

Limitations

  • The designated handler has to be installed before running the command.

  • Setting some URI scheme handlers (especially for http) might cause a prompt.

  • Setting some file extension handlers might be restricted (especially html seems to fail silently).

Why?

Most existing tools use LSSetDefaultRoleHandlerForContentType and LSSetDefaultHandlerForURLScheme, which are deprecated in macOS 12.0. dooti uses a more recent API and should work on Monterey (12.0) and above.

Similar tools

Metadata

Release files for dooti 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dooti 0.2.2
File Size Uploaded
dooti-0.2.2.tar.gz 43.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dooti 0.2.2
File Interpreter ABI Platform
dooti-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 64.4 kB

Release files / dooti-0.2.2.tar.gz

Download URL dooti-0.2.2.tar.gz
Size 43.0 kB
Tags Source
SHA-256 checksum
How to use checksums
57ccf3323a79b46b6d94f02a47a75c857d666e9c9561e82e248b641102fe0194
BLAKE2b-256 checksum
How to use checksums
0bb5e8ed3df1891601dd0661c0fbad817196d3decea3491e32104d6fe7497e3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Release files / dooti-0.2.2-py3-none-any.whl

Download URL dooti-0.2.2-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f41c1bc3f8c6b16a28b1e4e79e55eda7fb76f92c173a293adc7eb25b1661e1e5
BLAKE2b-256 checksum
How to use checksums
b9c6e7edf8aa123ae5443cb76b70898e3872fab6fe93b944ffe85e5681790627
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page