A partir de 2017, o código-fonte ( runner.py ) fez isso:
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
para que você possa colocar qualquer nome de programa compatível com xterm em TERMCMD . No entanto, observe que o uso de -e (gnome-terminal não corresponde ao comportamento do xterm). Se você estiver usando Debian / Ubuntu / etc, os empacotadores do Debian tentaram fornecer um wrapper para esconder essa diferença no recurso x-terminal-emulator . Se isso se aplica a você, você pode definir TERMCMD para x-terminal-emulator .
Acompanhamento - embora o design do recurso TERMCMD não tenha mudado significativamente desde meados de 2016, o local dentro da fonte mudou:
Isso é implementado em 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
que usa x-terminal-emulator como antes.
Há um uso relacionado de TERMCMD em rifle.py , usado para executar comandos em vez de (como solicitado na pergunta) para abrir um terminal. De qualquer forma, a chave para usar o ranger é x-terminal-emulator , já que os desenvolvedores do GNOME Terminal não documentam sua interface de linha de comando, enquanto os desenvolvedores do Debian forneceram esta solução alternativa.
Citação do Bug 701691 - -e aceita apenas um termo; todos os outros emuladores de terminal aceitam mais de um termo (que o desenvolvedor se recusou a corrigir, marcando-o como "não é um bug"):
Christian Persch 2013-06-06 16:02:54 UTC
There are no docs for the gnome-terminal command line options.