about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xranger/ext/rifle.py29
1 files 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: