add restart action
This commit is contained in:
parent
5d57a39b70
commit
58d8b90122
5 changed files with 57 additions and 19 deletions
|
@ -160,6 +160,7 @@ openbox_openbox_SOURCES = \
|
|||
openbox/actions/execute.c \
|
||||
openbox/actions/exit.c \
|
||||
openbox/actions/reconfigure.c \
|
||||
openbox/actions/restart.c \
|
||||
openbox/actions/showdesktop.c \
|
||||
openbox/actions/showmenu.c \
|
||||
openbox/actions.c \
|
||||
|
|
|
@ -780,16 +780,6 @@ ActionString actionstrings[] =
|
|||
action_desktop_last,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"restart",
|
||||
action_restart,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"exit",
|
||||
action_exit,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"sendtotoplayer",
|
||||
action_send_to_layer,
|
||||
|
@ -1701,15 +1691,6 @@ void action_resize(union ActionData *data)
|
|||
moveresize_start(c, data->any.x, data->any.y, data->any.button, corner);
|
||||
}
|
||||
|
||||
void action_restart(union ActionData *data)
|
||||
{
|
||||
ob_restart_other(data->execute.path);
|
||||
}
|
||||
|
||||
void action_exit(union ActionData *data)
|
||||
{
|
||||
}
|
||||
|
||||
void action_cycle_windows(union ActionData *data)
|
||||
{
|
||||
/* if using focus_delay, stop the timer now so that focus doesn't go moving
|
||||
|
|
|
@ -8,4 +8,5 @@ void action_all_startup()
|
|||
action_showdesktop_startup();
|
||||
action_reconfigure_startup();
|
||||
action_exit_startup();
|
||||
action_restart_startup();
|
||||
}
|
||||
|
|
|
@ -9,5 +9,6 @@ void action_showmenu_startup();
|
|||
void action_showdesktop_startup();
|
||||
void action_reconfigure_startup();
|
||||
void action_exit_startup();
|
||||
void action_restart_startup();
|
||||
|
||||
#endif
|
||||
|
|
54
openbox/actions/restart.c
Normal file
54
openbox/actions/restart.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include "openbox/actions.h"
|
||||
#include "openbox/openbox.h"
|
||||
|
||||
typedef struct {
|
||||
gchar *cmd;
|
||||
} Options;
|
||||
|
||||
static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node);
|
||||
static void free_func(gpointer options);
|
||||
static gboolean run_func(ObActionsData *data, gpointer options);
|
||||
|
||||
void action_restart_startup()
|
||||
{
|
||||
actions_register("Restart",
|
||||
setup_func,
|
||||
free_func,
|
||||
run_func,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
|
||||
{
|
||||
xmlNodePtr n;
|
||||
Options *o;
|
||||
|
||||
o = g_new0(Options, 1);
|
||||
|
||||
if ((n = parse_find_node("execute", node))) {
|
||||
gchar *s = parse_string(doc, n);
|
||||
o->cmd = parse_expand_tilde(s);
|
||||
g_free(s);
|
||||
}
|
||||
return o;
|
||||
}
|
||||
|
||||
static void free_func(gpointer options)
|
||||
{
|
||||
Options *o = options;
|
||||
|
||||
if (o) {
|
||||
g_free(o->cmd);
|
||||
g_free(o);
|
||||
}
|
||||
}
|
||||
|
||||
/* Always return FALSE because its not interactive */
|
||||
static gboolean run_func(ObActionsData *data, gpointer options)
|
||||
{
|
||||
Options *o = options;
|
||||
|
||||
ob_restart_other(o->cmd);
|
||||
|
||||
return FALSE;
|
||||
}
|
Loading…
Reference in a new issue