Added run_in_background
function.
This commit is contained in:
parent
e85425c8c6
commit
6f2c8f2e40
@ -1,4 +1,4 @@
|
||||
# from subprocess import CalledProcessError
|
||||
import logging
|
||||
from collections import namedtuple
|
||||
import subprocess
|
||||
|
||||
@ -14,6 +14,9 @@ def run_through_shell(command, enable_shell=False):
|
||||
in one variable
|
||||
"""
|
||||
|
||||
if not enable_shell and not isinstance(command, list):
|
||||
command = command.split()
|
||||
|
||||
returncode = None
|
||||
stderr = None
|
||||
try:
|
||||
@ -27,7 +30,35 @@ def run_through_shell(command, enable_shell=False):
|
||||
except OSError as e:
|
||||
out = e.strerror
|
||||
stderr = e.strerror
|
||||
logging.getLogger("i3pystatus.command").exception("")
|
||||
except subprocess.CalledProcessError as e:
|
||||
out = e.output
|
||||
logging.getLogger("i3pystatus.command").exception("")
|
||||
|
||||
return CommandResult(returncode, out, stderr)
|
||||
|
||||
|
||||
def run_in_background(command, detach=False):
|
||||
"""
|
||||
Runs a command in background.
|
||||
No output is retrieved.
|
||||
Useful for running GUI applications that would block click events.
|
||||
|
||||
:param detach If set to `True` the application will be executed using the
|
||||
`i3-msg` command.
|
||||
"""
|
||||
|
||||
if not isinstance(command, list):
|
||||
command = command.split()
|
||||
|
||||
if detach:
|
||||
command.insert(0, "exec")
|
||||
command.insert(0, "i3-msg")
|
||||
|
||||
try:
|
||||
subprocess.Popen(command, stdin=subprocess.DEVNULL,
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
except OSError:
|
||||
logging.getLogger("i3pystatus.command").exception("")
|
||||
except subprocess.CalledProcessError:
|
||||
logging.getLogger("i3pystatus.command").exception("")
|
||||
|
Loading…
Reference in New Issue
Block a user