Skip to main content

Manage default file and URI scheme handlers on macOS 12.0+

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dooti-0.2.2.tar.gz (43.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dooti-0.2.2-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file dooti-0.2.2.tar.gz.

File metadata

  • Download URL: dooti-0.2.2.tar.gz
  • Upload date:
  • Size: 43.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for dooti-0.2.2.tar.gz
Algorithm Hash digest
SHA256 57ccf3323a79b46b6d94f02a47a75c857d666e9c9561e82e248b641102fe0194
MD5 71266c1f823af61f510993eebd14130d
BLAKE2b-256 0bb5e8ed3df1891601dd0661c0fbad817196d3decea3491e32104d6fe7497e3e

See more details on using hashes here.

File details

Details for the file dooti-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: dooti-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for dooti-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f41c1bc3f8c6b16a28b1e4e79e55eda7fb76f92c173a293adc7eb25b1661e1e5
MD5 124fc29bccd8e1601e1257612f31d9de
BLAKE2b-256 b9c6e7edf8aa123ae5443cb76b70898e3872fab6fe93b944ffe85e5681790627

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page