Gerenciador de arquivos Ranger - Open gnome-terminal em vez de xterm

5

Recentemente, comecei a usar o Ranger como meu gerenciador de arquivos padrão e estou realmente gostando dele. Agora, eu consegui mudar rifle.conf para que quando eu reproduz áudio ou vídeo do Ranger, o mpv abra em uma nova janela do xterm e a mídia comece a tocar.

No entanto, se possível, eu gostaria que o Ranger abrisse o terminal gnome em vez do xterm. Em /.config/ranger/rifle.conf , ele diz que usar o sinalizador t executará o programa em um novo terminal:

If $TERMCMD is not defined, rifle will attempt to extract it from $TERM

Eu tentei definir $TERMCMD nos meus arquivos .profile e .bashrc, mas mesmo que echo $TERMCMD imprima "gnome-terminal", o Ranger ainda abriria o xterm. Eu também mexi com a configuração de $TERM para "gnome-terminal", mas isso foi confuso e decidi deixá-lo sozinho.

Alguma sugestão? Obrigado!

    
por garzai 22.06.2016 / 02:36

2 respostas

5

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.

    
por 22.06.2016 / 02:49
0

Agora tenho certeza de que runner.py é irrelevante. rifle.py é o arquivo a ser alterado.

Por volta da linha 375, há uma linha:

cmd = [os.environ['TERMCMD'], '-e'] + cmd

Deve tentar alterar o sinal '-e' para outra coisa, dependendo do seu $ TERMCMD. Eu testei alguns terminais diferentes e eles estão funcionando para mim:

  • gnome-terminal: altere para '--' ou '-x'
  • xfce4-terminal: '-x'
  • lxterminal: '-e'
  • mate-terminal: '-x'
  • terminador: '-x'

Eu não verifiquei outros, mas provavelmente será um dos '--' , '-e' , '-x' .

    
por 10.03.2018 / 16:42