Linux

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

  • March 11, 2018

我最近開始使用 Ranger 作為我的預設文件管理器,我真的很喜歡它。現在,我已經設法更改了步槍.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”,但這很混亂,我決定不理會它。

有什麼建議麼?謝謝!

截至 2017 年,原始碼 ( runner.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

in有一個相關用途,用於執行命令,而不是(如問題中所問)用於打開終端。無論哪種方式,使用 ranger 的關鍵是,因為 GNOME 終端的開發人員不記錄他們的命令行界面,而 Debian 開發人員提供了這種解決方法。TERMCMDrifle.pyx-terminal-emulator

引用Bug 701691 – -e 只接受一個術語;所有其他終端仿真器都接受多個術語(開發人員拒絕修復,將其標記為“不是錯誤”):

Christian Persch 2013-06-06 16:02:54 UTC

沒有關於 gnome-terminal 命令行選項的文件。

引用自:https://unix.stackexchange.com/questions/291260