Setting iTerm2 as the default terminal (OSX Lion)
Solution 1
Terminal.app
declares itself a handler of the ssh
, telnet
and x-man-page
URL schemes.
It also registers the file extensions .term
(sessions), .terminal
(settings), .tool
and .command
(scripts), and itself as an editor/viewer for these.
Other than that, there is no default terminal in OS X. It's just an application that can handle URL schemes and file types.
iTerm is capable of handling all of these except the Terminal.app specific .term
/.terminal
.
For the file types, just open the Get Info dialog and associate all files of this kind with iTerm. For the URL schemes, you can download and install the preference pane Default Apps and change the association there. You can also use it as an alternative method of changing the file type associations.
All of these settings are user specific and stored in ~/Library/Preferences/com.apple.LaunchServices.plist
. You can of course edit it in a suitable editor yourself. It's pretty straightforward. Screenshot of Xcode 4 showing the result of changing x-man-page
in Default Apps preference pane:
Terminal.app also provides the following Services for other applications:
- New Terminal at Folder
- New Terminal Tab at Folder
- Open man page in Terminal
- Search man pages in Terminal
The association with Terminal.app is hard-coded. You need to create your own Services e.g. using Automator and/or AppleScript to replace these.
If Terminal is used via its AppleScript API, there is no way to just replace it with iTerm in all cases, as their APIs are quite different. This will often require substantial changes to the programs or scripts doing that.
Solution 2
You should be able to make iTerm.app
your default terminal by selecting "Make Default" from the menu bar.
Alternatively you can use a keyboard shortcut.
⌃+⇧+⌘+\
Solution 3
As found on the ma.ttias.be blog, iTerm2 can register itself as the default terminal for some common URL schemes: You just have to check the corresponding schemes at the very bottom of the General tab in the current Profile from iTerm preferences
Solution 4
To provide a pragmatic summary of the existing answers:
-
macOS (OS X) does NOT support the concept of a default terminal.
- See Daniel Beck's helpful answer for background information.
-
iTerm2
itself somewhat misleadingly offers a menu item namediTerm2 > Make iTerm2 Default Term
(as presented in halfcube's answer), but the only thing that does is to make Finder run shell scripts opened from it in iTerm2 (more specifically, it assigns theshell
role of UTIpublic.unix-executable
to Finder) - which is not a typical use case.
-
Therefore, applications must be configured INDIVIDUALLY to use iTerm2 instead of Terminal, IF they support that:
- While the
Go2Shell
app that prompted the OP's question does have a configuration dialog that supports iTerm2 (open -a Go2Shell -- config
, the application doesn't seem to work at all as of OSX 10.11.6 (on clicking the toolbar button as of v2.23, the only thing that ever happens is that the configuration dialog comes up, even after having clickedInstall Go2Shell to Finder
). - The paid alternative mentioned by the OP - application
ShellTo
- also supports iTerm2 in principle, but as of this writing doesn't support the current version, v3+.
- While the
Solution 5
As mentioned in the comments above Go2Shell can be told to use iTerm2
To open configuration window follow this steps:
- Fire up your favorite terminal program.
- Enter: open -a Go2Shell --args config
- Press [return].
Related videos on Youtube
politicus
Updated on September 18, 2022Comments
-
politicus almost 2 years
I would like to set iTerm2 instead of terminal.app as my default terminal.
Go2Shell for example let you open a terminal to the current directory in Finder. I want to ba able to use iterm2 instad of terminal.app.
I didn't find any answer on the official documentation.
Thanks for your help.
Update: ShellTo is a great alternative to Go2Shell and supports iTerm2
-
HikeMike over 12 yearsDefault terminal for what? You just launch the one you want and leave the other alone...? Please explain in more detail what you're asking.
-
HikeMike over 12 yearsGo2Shell blurb from the app store: Added support of iTerm, iTerm 2 and even xterm :). Just take a look at its preferences. Also, at least for Terminal.app, this feature has been part of the OS for half a year, see here (last item).
-
politicus over 12 yearsOh I didn't saw it. My fault!
-
-
politicus over 12 yearsThank you for your amazing answer. Clear, very informative. New to OSX, I didn't know Default Apps.
-
ifwdev over 8 yearsAwesome tool. Glad it still works well under El Capitan.
-
fregante over 8 yearsIt doesn't seem to work for most of my tests. GitHub.app still opens Terminal and so does SublimeText.
-
mklement0 almost 8 years@bfred.it: Sadly, the name of the menu item is misleading: the only thing it does is to run shell scripts opened from Finder in iTerm2 rather than Terminal. It will not magically cause third-party applications such as GoShell, GitHub, Alfred, ... to use iTerm2, as explained in Daniel Beck's answer.
-
Burgi over 7 yearsCan you expand upon how this software works? Please see How to recommend software.
-
HikeMike over 7 yearsAre you saying my answer doesn't work anymore for El Capitan? Could you clarify?
-
markus about 7 yearsMost to the point answer IMO.
-
Scott - Слава Україні almost 7 yearsWow; configuring a program to automatically kill itself whenever it is started. What could possibly go wrong? :-(
-
tidelake about 6 yearsOh goodness, this is so helpful. I accidentally deleted Terminal.app (or screwed it up so bad it won't open) and this works to fix that, and my React Native builds are using iterm so far so good, knock on wood. THX:D
-
Community over 2 yearsYour answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
-
Admin about 2 yearsSwiftDefaultApps is a more recent alternative to RCDefaultApp.