Add shell module
Add new "shell" module which can execute arbitrary shell command and display its output.
This commit is contained in:
parent
774e38561c
commit
1c13e8d318
36
i3pystatus/shell.py
Normal file
36
i3pystatus/shell.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
from i3pystatus import IntervalModule
|
||||||
|
from subprocess import check_output, CalledProcessError
|
||||||
|
|
||||||
|
class Shell(IntervalModule):
|
||||||
|
"""
|
||||||
|
Shows output of shell command
|
||||||
|
"""
|
||||||
|
|
||||||
|
color = "#FFFFFF"
|
||||||
|
error_color = "#FF0000"
|
||||||
|
|
||||||
|
settings = (
|
||||||
|
("command", "command to be executed"),
|
||||||
|
("color", "standard color"),
|
||||||
|
("error_color", "color to use when non zero exit code is returned")
|
||||||
|
)
|
||||||
|
|
||||||
|
required = ("command",)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
try:
|
||||||
|
out = check_output(self.command, shell=True)
|
||||||
|
color = self.color
|
||||||
|
except CalledProcessError as e:
|
||||||
|
out = e.output
|
||||||
|
color = self.error_color
|
||||||
|
|
||||||
|
out = out.decode("UTF-8").replace("\n", " ")
|
||||||
|
|
||||||
|
if out[-1] == " ":
|
||||||
|
out = out[:-1]
|
||||||
|
|
||||||
|
self.output = {
|
||||||
|
"full_text": out,
|
||||||
|
"color": color
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user