duti is a command-line utility capable of setting default applications for
various document types on macOS, using Apple's
Uniform Type
Identifiers
(UTI). A UTI is a unique string describing the format of a file's content. For
instance, a Microsoft Word document has a UTI of com.microsoft.word.doc
. Using
duti
, the user can change which application acts as the default handler for a
given UTI.
autoreconf -i
./configure
make
sudo make install
duti
can read settings from four different sources:
-
standard input
-
a settings file
-
an XML property list (plist)
-
command-line arguments.
A settings line, as read in cases 1 and 2, consists of an application's bundle
ID, a UTI, and a string describing what role the application handles for the
given UTI. The process is similar when duti
processes a plist. If the path
given to duti
on the command-line is a directory, duti
will apply settings
from all valid settings files in that directory, excluding files whose names
begin with .
(single dot).
duti
can also print out the default application information for a given
extension (-x
). This feature is based on public domain source code posted
by Keith Alperin on the heliumfoot.com blog.
See the man page for additional usage details.
-
Set Safari as the default handler for HTML documents:
duti -s com.apple.Safari public.html all
-
Set TextEdit as the default handler for Word documents:
echo 'com.apple.TextEdit com.microsoft.word.doc all' | duti
-
Set Finder as the default handler for ftp:// URLs:
duti -s com.apple.Finder ftp
-
Get default application information for .jpg files:
duti -x jpg # Output Preview /Applications/Preview.app com.apple.Preview
duti
is unsupported. You can submit bug reports and feature requests at
the duti GitHub project page.
dutis is a wrapper around duti, providing an interactive interface to select default applications.
duti
was originally released into the public domain by Andrew Mortensen
in 2008. It's provided as is without warranties of any kind. You can do
anything you want with it. If you incorporate some or all of the code into
another project, I'd appreciate credit for the work I've done, but that's all.
Andrew Mortensen April 2018