diff options
author | hut <hut@lavabit.com> | 2011-12-17 21:57:50 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2011-12-17 21:57:50 +0100 |
commit | 7d820eebd049b8bf67a37ddd4046099e1569882c (patch) | |
tree | 401b006a79ccf0c82ca28ee3846bf8b3b9a53f66 /ranger | |
parent | 703b35122c4db45b601547a5f341fd7dbc6f0052 (diff) | |
parent | d6e61b1d3004ce58fc58a9d6035498b13e6f2089 (diff) | |
download | ranger-7d820eebd049b8bf67a37ddd4046099e1569882c.tar.gz |
Merge https://github.com/gwash/ranger
Diffstat (limited to 'ranger')
-rw-r--r-- | ranger/core/runner.py | 28 | ||||
-rw-r--r-- | ranger/defaults/apps.py | 2 |
2 files changed, 28 insertions, 2 deletions
diff --git a/ranger/core/runner.py b/ranger/core/runner.py index 5d97489d..7d433652 100644 --- a/ranger/core/runner.py +++ b/ranger/core/runner.py @@ -30,15 +30,18 @@ d: detach the process. p: redirect output to the pager c: run only the current file (not handled here) w: wait for enter-press afterwards +r: run application with root privilege (requires sudo) +t: run application in a new terminal window (An uppercase key negates the respective lower case flag) """ import os import sys from subprocess import Popen, PIPE +from ranger.ext.get_executables import get_executables -ALLOWED_FLAGS = 'sdpwcSDPWC' +ALLOWED_FLAGS = 'sdpwcartSDPWCART' def press_enter(): @@ -160,7 +163,6 @@ class Runner(object): wait_for_enter = False devnull = None - popen_kws['args'] = action if 'shell' not in popen_kws: popen_kws['shell'] = isinstance(action, str) if 'stdout' not in popen_kws: @@ -189,7 +191,29 @@ class Runner(object): if 'w' in context.flags: if not pipe_output and context.wait: # <-- sanity check wait_for_enter = True + if 'r' in context.flags: + if 'sudo' not in get_executables(): + return self._log("Can not run with 'r' flag, sudo is not installed!") + if isinstance(action, str): + action = 'sudo '+action + else: + action = ['sudo']+action + toggle_ui = True + context.wait = True + if 't' in context.flags: + if 'DISPLAY' not in os.environ: + return self._log("Can not run with 't' flag, no display found!") + term = os.environ['TERMCMD'] if 'TERMCMD' in os.environ else os.environ['TERM'] + if term not in get_executables(): + term = 'xterm' + if isinstance(action, str): + action = term+' -e '+action + else: + action = [term,'-e']+action + toggle_ui = False + context.wait = False + popen_kws['args'] = action # Finally, run it if toggle_ui: diff --git a/ranger/defaults/apps.py b/ranger/defaults/apps.py index 0a68d006..77c66c7b 100644 --- a/ranger/defaults/apps.py +++ b/ranger/defaults/apps.py @@ -35,6 +35,8 @@ # p Redirect output to the pager # w Wait for an Enter-press when the process is done # c Run the current file only, instead of the selection +# r Run application with root privilege +# t Run application in a new terminal window # # To implement flags in this file, you could do this: # context.flags += "d" |