[core/input] add variables to custom cli calls

when specifying event bindings via CLI (e.g. disk.left-click=thunar),
allow for variables ({instance} and {name}, in particular).

fixes #650
This commit is contained in:
tobi-wan-kenobi 2020-06-09 20:29:51 +02:00
parent 60cdbab76e
commit 16269ff01e
2 changed files with 32 additions and 3 deletions

View file

@ -36,9 +36,13 @@ def __event_id(obj_id, button):
return "{}::{}".format(obj_id, button_name(button))
def __execute(cmd, wait=False):
def __execute(event, cmd, wait=False):
try:
util.cli.execute(cmd, wait=wait, shell=True)
util.cli.execute(
cmd.format(instance=event.get("instance", ""), name=event.get("name", ""),),
wait=wait,
shell=True,
)
except Exception as e:
logging.error("failed to invoke callback: {}".format(e))
@ -49,7 +53,7 @@ def register(obj, button=None, cmd=None, wait=False):
if callable(cmd):
core.event.register(event_id, cmd)
else:
core.event.register(event_id, lambda _: __execute(cmd, wait))
core.event.register(event_id, lambda event: __execute(event, cmd, wait))
def trigger(event):