Skip to main content
2 of 4
clarify
Thomas Dickey
  • 79.3k
  • 9
  • 189
  • 290

As of 2017, the source-code (runner.py) did this:

 term = os.environ.get('TERMCMD', os.environ.get('TERM')) if term not in get_executables(): term = 'x-terminal-emulator' if term not in get_executables(): term = 'xterm' if isinstance(action, str): action = term + ' -e ' + action else: action = [term, '-e'] + action 

so you should be able to put any xterm-compatible program name in TERMCMD. However, note the use of -e (gnome-terminal doesn't match xterm's behavior). If you are using Debian/Ubuntu/etc, the Debian packagers have attempted to provide a wrapper to hide this difference in the x-terminal-emulator feature. If that applies to you, you could set TERMCMD to x-terminal-emulator.

Followup - while the design of the TERMCMD feature has not changed appreciably since mid-2016, the location within the source has changed:

That is implemented in get_term:

def get_term(): """Get the user terminal executable name. Either $TERMCMD, $TERM, "x-terminal-emulator" or "xterm", in this order. """ command = environ.get('TERMCMD', environ.get('TERM')) if shlex.split(command)[0] not in get_executables(): command = 'x-terminal-emulator' if command not in get_executables(): command = 'xterm' return command 

which uses x-terminal-emulator as before.

There is a different use of TERMCMD in rifle.py, used for executing commands rather than (as asked in the question) for opening a terminal.

Thomas Dickey
  • 79.3k
  • 9
  • 189
  • 290