diff --git a/bumblebee_status/core/input.py b/bumblebee_status/core/input.py index 71d481e..b775091 100644 --- a/bumblebee_status/core/input.py +++ b/bumblebee_status/core/input.py @@ -36,20 +36,20 @@ def __event_id(obj_id, button): return "{}::{}".format(obj_id, button_name(button)) -def __execute(cmd): +def __execute(cmd, wait=False): try: - util.cli.execute(cmd, wait=False, shell=True) + util.cli.execute(cmd, wait=wait, shell=True) except Exception as e: logging.error("failed to invoke callback: {}".format(e)) -def register(obj, button=None, cmd=None): +def register(obj, button=None, cmd=None, wait=False): event_id = __event_id(obj.id if obj is not None else "", button) logging.debug("registering callback {}".format(event_id)) if callable(cmd): core.event.register(event_id, cmd) else: - core.event.register(event_id, lambda _: __execute(cmd)) + core.event.register(event_id, lambda _: __execute(cmd, wait)) def trigger(event): diff --git a/bumblebee_status/core/module.py b/bumblebee_status/core/module.py index 81f2604..ba06848 100644 --- a/bumblebee_status/core/module.py +++ b/bumblebee_status/core/module.py @@ -7,6 +7,8 @@ import core.input import core.widget import core.decorators +import util.format + try: error = ModuleNotFoundError("") except Exception as e: @@ -211,7 +213,14 @@ class Module(core.input.Object): ] for action in actions: if self.parameter(action["name"]): - core.input.register(self, action["id"], self.parameter(action["name"])) + core.input.register( + self, + action["id"], + self.parameter(action["name"]), + util.format.asbool( + self.parameter("{}-wait".format(action["name"]), False) + ), + ) class Error(Module): diff --git a/bumblebee_status/util/cli.py b/bumblebee_status/util/cli.py index 2b07c75..3e4face 100644 --- a/bumblebee_status/util/cli.py +++ b/bumblebee_status/util/cli.py @@ -45,10 +45,12 @@ def execute( out, _ = proc.communicate() if proc.returncode != 0: err = "{} exited with code {}".format(cmd, proc.returncode) + logging.warning(err) if ignore_errors: return (proc.returncode, err) if return_exitcode else err raise RuntimeError(err) res = out.decode("utf-8") + logging.debug(res) return (proc.returncode, res) if return_exitcode else res return (0, "") if return_exitcode else ""