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.