-void action_execute(union ActionData *data)
-{
- GError *e = NULL;
- char *cmd;
- if (data->execute.path) {
- cmd = g_filename_from_utf8(data->execute.path, -1, NULL, NULL, NULL);
- if (cmd) {
- if (!g_spawn_command_line_async(cmd, &e)) {
- g_warning("failed to execute '%s': %s",
- cmd, e->message);
- }
- } else {
- g_warning("failed to convert '%s' from utf8", data->execute.path);
- }
- }
-}
-
-void action_activate(union ActionData *data)
-{
- if (data->activate.any.c)
- client_activate(data->activate.any.c, data->activate.here);
-}
-
-void action_focus(union ActionData *data)
-{
- if (data->client.any.c)
- client_focus(data->client.any.c);
-}
-
-void action_unfocus (union ActionData *data)
-{
- if (data->client.any.c)
- client_unfocus(data->client.any.c);
-}
-
-void action_iconify(union ActionData *data)
-{
- if (data->client.any.c)
- client_iconify(data->client.any.c, TRUE, TRUE);
-}
-
-void action_raiselower(union ActionData *data)
-{
- ObClient *c = data->client.any.c;
- GList *it;
- gboolean raise = FALSE;
-
- if (!c) return;
-
- for (it = stacking_list; it; it = g_list_next(it)) {
- ObClient *cit = it->data;
-
- if (cit == c) break;
- if (client_normal(cit) == client_normal(c) &&
- cit->layer == c->layer &&
- cit->frame->visible)
- {
- if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) {
- raise = TRUE;
- break;
- }
- }
- }
-
- if (raise)
- stacking_raise(CLIENT_AS_WINDOW(c));
- else
- stacking_lower(CLIENT_AS_WINDOW(c));
-}
-
-void action_raise(union ActionData *data)
-{
- if (data->client.any.c)
- stacking_raise(CLIENT_AS_WINDOW(data->client.any.c));
-}
-
-void action_unshaderaise(union ActionData *data)
-{
- if (data->client.any.c) {
- if (data->client.any.c->shaded)
- client_shade(data->client.any.c, FALSE);
- else
- stacking_raise(CLIENT_AS_WINDOW(data->client.any.c));
- }
-}
-
-void action_shadelower(union ActionData *data)
+void action_run_list(GSList *acts, ObClient *c, ObFrameContext context,
+ guint state, guint button, gint x, gint y, Time time,
+ gboolean cancel, gboolean done)