An Emacs package to open an external terminal emulator in the current directory
Emacs Lisp Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

Terminal Here

travis melpa melpa stable badge

An Emacs package to open an external terminal emulator in directories associated with the current buffer.

Usage

Run terminal-here-launch to start a terminal in the current directory.

If the default command doesn't launch your preferred terminal you can set terminal-here-terminal-command to either a list containing the command and arguments (e.g. (list "my-terminal" "--foo")) or a function which takes a directory and returns such a list.

Recommended keybindings:

(require 'terminal-here)
(global-set-key (kbd "C-<f5>") #'terminal-here-launch)
(global-set-key (kbd "C-<f6>") #'terminal-here-project-launch)

Platforms

Terminal-here has out-of-the-box support for some platforms, but will work anywhere with some customisation.

Out-of-the-box support tested on:

  • Ubuntu 16.04 (but should work identically on any Debian-based system)
  • Windows 10
  • OSX

Should be supported out-of-the-box, but currently untested:

  • Older versions of Windows

Requires setting terminal-here-terminal-command before use:

  • Non-Debian-based UNIXes, because I haven't seen a standard way to open the user's preferred terminal

If you have problems just set terminal-here-terminal-command as described above.

Remote directories

terminal-here can run ssh to open terminals in remote directories for files opened with tramp. This may require additional setup because of inconsistencies between different terminals.

If your terminal has a flag to treat the rest of the command line as the command to run inside the terminal, you just need to set terminal-here-command-flag to this flag. If not it may be impossible to get ssh support. Some examples are:

  • xterm, urxvt: -e (this is the default)
  • gnome-terminal: -x

Alternatives

There are lots of built in ways to run terminals inside emacs (shell, eshell, ansi-term, ...) but these can have problems like slow output speed or incompatibility with existing configs. I currently prefer to run external terminal emulators, YMMV.

A couple of places on the internet have instructions for running specific terminals from Emacs, but they are not as portable as they could be.