Ranger 文件管理器 - 打開 gnome-terminal 而不是 xterm
我最近開始使用 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
功能中的這種差異。如果這適用於您,您可以設置TERMCMD
為x-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 開發人員提供了這種解決方法。
TERMCMD
rifle.py
x-terminal-emulator
引用Bug 701691 – -e 只接受一個術語;所有其他終端仿真器都接受多個術語(開發人員拒絕修復,將其標記為“不是錯誤”):
Christian Persch 2013-06-06 16:02:54 UTC
沒有關於 gnome-terminal 命令行選項的文件。