Ranger 文件管理器 - 打开 gnome-terminal 而不是 xterm

Ranger 文件管理器 - 打开 gnome-terminal 而不是 xterm

我最近开始使用 Ranger 作为我的默认文件管理器,我真的很喜欢它。现在,我已经设法更改rifle.conf,以便当我从Ranger 播放音频或视频时,mpv 在新的xterm 窗口中打开,并且媒体开始播放。

但是,如果可能的话,我希望 Ranger 打开 gnome-terminal 而不是 xterm。在 中/.config/ranger/rifle.conf,它说使用该t标志将在新终端中运行该程序:

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

我尝试$TERMCMD在 .profile 和 .bashrc 文件中进行设置,但即使echo $TERMCMD会打印“gnome-terminal”,Ranger 仍然会打开 xterm。我还搞乱了$TERM“gnome-terminal”的设置,但这很混乱,我决定不去管它。

有什么建议么?谢谢!

答案1

截至 2017 年,源代码 (跑步者.py) 做过这个:

        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

所以你应该能够将任何 xterm 兼容的程序名称放入TERMCMD.但是,请注意-e(gnome-terminal 与 xterm 的行为不匹配)的使用。如果您使用 Debian/Ubuntu/etc,Debian 打包商已尝试提供一个包装器来隐藏功能中的这种差异x-terminal-emulator。如果这适用于您,您可以设置TERMCMDx-terminal-emulator

后续 - 虽然该功能的设计TERMCMD自 2016 年中期以来没有明显变化,但源代码中的位置已发生变化:

这是在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

和以前一样使用x-terminal-emulator

有一个有关的使用TERMCMDrifle.py,用于执行命令而不是(如问题中所要求的)用于打开终端。不管怎样,使用 ranger 的关键是x-terminal-emulator,因为 GNOME Terminal 的开发人员没有记录他们的命令行界面,而 Debian 开发人员已经提供了这个解决方法。

引用自Bug 701691 – -e 只接受一个术语;所有其他终端仿真器接受多个术语(开发人员拒绝修复,并将其标记为“不是错误”):

克里斯蒂安·佩尔施 2013-06-06 16:02:54 UTC

没有有关 gnome-terminal 命令行选项的文档。

答案2

我现在很确定那runner.py是无关紧要的。rifle.py是要更改的文件。

在第 375 行左右,有一行:

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

应该尝试将'-e'标志更改为其他内容,具体取决于您的 $TERMCMD 是什么。我测试了几个不同的终端,这些终端对我有用:

  • gnome-terminal:更改为'--''-x'
  • xfce4-终端:'-x'
  • LX终端:'-e'
  • 配对终端:'-x'
  • 终结者:'-x'

我没有检查过其他人,但可能是'--', '-e',之一'-x'

相关内容