You can edit
~/Library/Preferences/com.apple.LaunchServices.plist in a text editor after converting it to XML:
plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist
Then add entries like this to the
You can use
mdls to see the UTIs of file types and something like
osascript -e 'id of app "AppName"' to see the bundle identifiers of applications.
You can apply changes to
com.apple.LaunchServices.plist by restarting. Logging out and back in isn't enough.
I also use duti though. I have saved a file like this (with about 100 lines) as
org.gnu.Emacs public.plain-text all # .txt, .text, plain text files without an extension
org.gnu.Emacs public.unix-executable all # executable scripts
com.SequentialX.Sequential .jpg all
org.videolan.vlc .mkv all
I have a launchd agent that runs
duti ~/.duti automatically when
~/.duti is changed.
You can normally use filename extensions (like
.jpg) instead of a UTIs (like
public.jpg) to specify file types.
duti converts the extensions to UTIs that also apply to other extensions (like
.jpeg). For some extensions like
.tex, the UTI depends on what application registered the extension first.
The latest version of
duti (1.5.1) only includes source code, but 1.5.0 also includes an installer.