web-dev-qa-db-ja.com

Rangerファイルマネージャー-xtermの代わりにgnome-terminalを開きます

私は最近、デフォルトのファイルマネージャとして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"に設定するのもいじりましたが、それは面倒なので、そのままにすることにしました。

助言がありますか?ありがとう!

5
Try431

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を使用します。

rifle.py にはTERMCMDrelated使用があり、コマンドの実行ではなく使用されます(質問で尋ねられたように)ターミナルを開くため。どちらの方法でも、レンジャーを使用する鍵はx-terminal-emulatorです。GNOMEターミナルの開発者はコマンドラインインターフェースを文書化していないため、Debian開発者はこの回避策を提供しています。

引用 バグ701691 – -eは1つの用語のみを受け入れ、他のすべてのターミナルエミュレータは複数の用語を受け入れます (開発者が修正せず、「バグではない」とマークします):

クリスチャンペルシュ2013-06-06 16:02:54 UTC

Gnome-terminalコマンドラインオプションのドキュメントはありません。

5
Thomas Dickey

runner.pyは無関係だと確信しています。 rifle.pyは変更するファイルです。

375行目あたりに次の行があります。

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

$ TERMCMDが何であるかに応じて、'-e'フラグを別のものに変更しようとする必要があります。私はいくつかの異なる端末をテストしました、そしてこれらは私のために働いています:

  • gnome-terminal:'--'または'-x'に変更します
  • xfce4-terminal:'-x'
  • lxterminal:'-e'
  • メイトターミナル:'-x'
  • ターミネーター:'-x'

他の人はチェックしていませんが、おそらく'--''-e''-x'のいずれかになります。

1
Jason