handle command failure

This commit is contained in:
sewn 2024-10-06 21:50:54 +03:00
parent a8275b4713
commit df1341a220
No known key found for this signature in database
2 changed files with 30 additions and 8 deletions

View file

@ -26,9 +26,9 @@ static const char *termcmd[] = { "foot", NULL };
/* click can be ClkTagBar, ClkLayout, ClkMode, ClkTitle, ClkStatus */
static const Button buttons[] = {
/* click button function argument */
{ ClkTagBar, BTN_LEFT, cmd, {.s = "set-focused-tags"} },
{ ClkTagBar, BTN_RIGHT, cmd, {.s = "toggle-focused-tags"} },
{ ClkTagBar, BTN_MIDDLE, cmd, {.s = "set-view-tags"} },
{ ClkTitle, BTN_LEFT, cmd, {.s = "zoom"} },
{ ClkTagBar, BTN_LEFT, command, {.s = "set-focused-tags"} },
{ ClkTagBar, BTN_RIGHT, command, {.s = "toggle-focused-tags"} },
{ ClkTagBar, BTN_MIDDLE, command, {.s = "set-view-tags"} },
{ ClkTitle, BTN_LEFT, command, {.s = "zoom"} },
{ ClkStatus, BTN_MIDDLE, spawn, {.v = termcmd } },
};

30
dam.c
View file

@ -58,7 +58,7 @@ typedef struct {
const Arg arg;
} Button;
static void cmd(const Arg *arg);
static void command(const Arg *arg);
static void spawn(const Arg *arg);
#include "config.h"
@ -130,7 +130,29 @@ parse_color(uint32_t *dest, const char *src)
}
static void
cmd(const Arg *arg)
command_handle_message(void *data,
struct zriver_command_callback_v1 *zriver_command_callback_v1,
const char *message)
{
if (message && message[0] != '\0')
fprintf(stderr, "command message: %s\n", message);
}
static struct zriver_command_callback_v1_listener callback_listener = {
.success = command_handle_message,
.failure = command_handle_message,
};
static void
command_run(void)
{
struct zriver_command_callback_v1 *callback;
callback = zriver_control_v1_run_command(control, seat);
zriver_command_callback_v1_add_listener(callback, &callback_listener, NULL);
}
static void
command(const Arg *arg)
{
char argbuf[4];
zriver_control_v1_add_argument(control, arg->s);
@ -138,7 +160,7 @@ cmd(const Arg *arg)
snprintf(argbuf, sizeof(argbuf), "%d", arg->ui);
zriver_control_v1_add_argument(control, argbuf);
}
zriver_control_v1_run_command(control, seat);
command_run();
}
static void
@ -148,7 +170,7 @@ spawn(const Arg *arg)
zriver_control_v1_add_argument(control, "spawn");
for (i = (char *const *)arg->v; *i != NULL; i++)
zriver_control_v1_add_argument(control, *i);
zriver_control_v1_run_command(control, seat);
command_run();
}
static void