私は最近、デフォルトのファイルマネージャとしてRangerを使い始めましたが、本当に楽しんでいます。今、私はrifle.confを変更して、レンジャーからオーディオまたはビデオを再生すると、mpvが新しいxtermウィンドウで開き、メディアの再生が開始されるようになりました。
ただし、可能であれば、レンジャーでxtermではなくgnome-terminalを開いてください。 /.config/ranger/rifle.conf
では、t
フラグを使用すると、プログラムが新しいターミナルで実行されると記載されています。
If $TERMCMD is not defined, rifle will attempt to extract it from $TERM
.profileファイルと.bashrcファイルの両方で$TERMCMD
を設定しようとしましたが、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
を使用します。
rifle.py
にはTERMCMD
のrelated使用があり、コマンドの実行ではなく使用されます(質問で尋ねられたように)ターミナルを開くため。どちらの方法でも、レンジャーを使用する鍵はx-terminal-emulator
です。GNOMEターミナルの開発者はコマンドラインインターフェースを文書化していないため、Debian開発者はこの回避策を提供しています。
引用 バグ701691 – -eは1つの用語のみを受け入れ、他のすべてのターミナルエミュレータは複数の用語を受け入れます (開発者が修正せず、「バグではない」とマークします):
クリスチャンペルシュ2013-06-06 16:02:54 UTC
Gnome-terminalコマンドラインオプションのドキュメントはありません。
runner.py
は無関係だと確信しています。 rifle.py
は変更するファイルです。
375行目あたりに次の行があります。
cmd = [os.environ['TERMCMD'], '-e'] + cmd
$ TERMCMDが何であるかに応じて、'-e'
フラグを別のものに変更しようとする必要があります。私はいくつかの異なる端末をテストしました、そしてこれらは私のために働いています:
'--'
または'-x'
に変更します'-x'
'-e'
'-x'
'-x'
他の人はチェックしていませんが、おそらく'--'
、'-e'
、'-x'
のいずれかになります。