From 5fc66210888db4d446989bab64eb5270d08b4bad Mon Sep 17 00:00:00 2001 From: guangzhi Date: Sun, 11 Mar 2018 08:52:23 +0800 Subject: Attempt to fix issue #1108 flag t problem issue #1108: Rifle's flag t only works with urxvt (and xterm) (because who cares about standards?). Urxvt passes any arguments after -e verbatim, most other terminals consume them as arguments. Some terminals use -e, others use -x. Fix: in rifle.py, if $TERMCMD is set to gnome-terminal, xfce4-terminal etc., give either -e or -x that pairs with the terminal. If $TERMCMD not found in executables, fall back to xterm and -e. --- ranger/ext/rifle.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/ranger/ext/rifle.py b/ranger/ext/rifle.py index 70215039..670d40a4 100755 --- a/ranger/ext/rifle.py +++ b/ranger/ext/rifle.py @@ -359,19 +359,34 @@ class Rifle(object): # pylint: disable=too-many-instance-attributes term = os.environ['TERM'] if term.startswith('rxvt-unicode'): term = 'urxvt' + cmdflag='-e' elif term.startswith('rxvt-'): # Sometimes urxvt calls itself "rxvt-256color" if 'rxvt' in get_executables(): term = 'rxvt' else: term = 'urxvt' - if term not in get_executables(): - self.hook_logger("Can not determine terminal command. " - "Please set $TERMCMD manually.") - # A fallback terminal that is likely installed: - term = 'xterm' - os.environ['TERMCMD'] = term - cmd = [os.environ['TERMCMD'], '-e'] + cmd + cmdflag='-e' + else: + term = os.environ['TERMCMD'] + if term in ['gnome-terminal', 'xfce4-terminal', 'mate-terminal',\ + 'terminator']: + cmdflag='-x' + elif term in ['lxterminal',]: + cmdflag='-e' + else: + cmdflag='-e' + + if term not in get_executables(): + self.hook_logger("Can not determine terminal command. " + "Please set $TERMCMD manually.") + # A fallback terminal that is likely installed: + term = 'xterm' + cmdflag='-e' + + os.environ['TERMCMD'] = term + cmd = [os.environ['TERMCMD'], cmdflag] + cmd + if 'f' in flags or 't' in flags: Popen_forked(cmd, env=self.hook_environment(os.environ)) else: -- cgit 1.4.1-2-gfad0