Find and Change Default App for File Type from Command Line

By  on  

There are few things more frustrating to any computer user than files opening in an unwanted application.  Sure you can use the Open menu item in the desired application but we all just want to double-click a file and see it open in the application we expect.  I recently got to thinking about this dilemma from a command line perspective:  how I could find the default application and then change if I wanted to.

The first step is installing the duti utility with HomeBrew:

brew install duti

With duti equipped you can run the following to see the default app and associated ID which opens a given file extension:

# Check to see what app is meant to halde ".js" files
duti -x js

#Visual Studio Code.app
#/Applications/Visual Studio Code.app
#com.microsoft.VSCode

If you don't know the application ID for a given application you'd like to switch a file type to use, you can get it with the following:

osascript -e 'id of app "Atom.app"'

# com.github.atom

You can change the default app for a given file extension via:

# Use Atom for all ".js" files
duti -s com.github.atom js all

# Open a .js file, watch it open in Atom!
open ~/Projects/debugger.html/src/main.js

There are user interfaces for setting and getting the default app for opening file types but command line provides another type of convenience, if only for the sake of automation.  Knowing how to achieve tasks with simple command line executions can make you a more efficient, agile developer!

Recent Features

  • By
    Responsive and Infinitely Scalable JS Animations

    Back in late 2012 it was not easy to find open source projects using requestAnimationFrame() - this is the hook that allows Javascript code to synchronize with a web browser's native paint loop. Animations using this method can run at 60 fps and deliver fantastic...

  • By
    CSS @supports

    Feature detection via JavaScript is a client side best practice and for all the right reasons, but unfortunately that same functionality hasn't been available within CSS.  What we end up doing is repeating the same properties multiple times with each browser prefix.  Yuck.  Another thing we...

Incredible Demos

  • By
    JavaScript Speech Recognition

    Speech recognition software is becoming more and more important; it started (for me) with Siri on iOS, then Amazon's Echo, then my new Apple TV, and so on.  Speech recognition is so useful for not just us tech superstars but for people who either want to work "hands...

  • By
    CSS Counters

    Counters.  They were a staple of the Geocities / early web scene that many of us "older" developers grew up with;  a feature then, the butt of web jokes now.  CSS has implemented its own type of counter, one more sane and straight-forward than the ole...

Discussion

    Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!