Reload awesome on SIGHUP
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
9a60abce52
commit
30aeb3f311
13
awesome.c
13
awesome.c
|
@ -207,6 +207,15 @@ exit_on_signal(EV_P_ ev_signal *w, int revents)
|
|||
ev_unloop(EV_A_ 1);
|
||||
}
|
||||
|
||||
/** Function to restart aweome on some signals.
|
||||
* \param sig the signam received, unused
|
||||
*/
|
||||
static void
|
||||
restart_on_signal(EV_P_ ev_signal *w, int revents)
|
||||
{
|
||||
ewmh_restart();
|
||||
}
|
||||
|
||||
/** \brief awesome xerror function.
|
||||
* There's no way to check accesses to destroyed windows, thus those cases are
|
||||
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs
|
||||
|
@ -336,8 +345,8 @@ main(int argc, char **argv)
|
|||
|
||||
/* register function for signals */
|
||||
ev_signal_init(&sigint, exit_on_signal, SIGINT);
|
||||
ev_signal_init(&sigterm, &exit_on_signal, SIGTERM);
|
||||
ev_signal_init(&sighup, &exit_on_signal, SIGHUP);
|
||||
ev_signal_init(&sigterm, exit_on_signal, SIGTERM);
|
||||
ev_signal_init(&sighup, restart_on_signal, SIGHUP);
|
||||
ev_signal_start(globalconf.loop, &sigint);
|
||||
ev_signal_start(globalconf.loop, &sigterm);
|
||||
ev_signal_start(globalconf.loop, &sighup);
|
||||
|
|
17
ewmh.c
17
ewmh.c
|
@ -555,4 +555,21 @@ ewmh_get_window_icon(xcb_window_t w)
|
|||
return icon;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restart awesome.
|
||||
*/
|
||||
void
|
||||
ewmh_restart(void)
|
||||
{
|
||||
client_t *c;
|
||||
|
||||
for(c = globalconf.clients; c; c = c->next)
|
||||
client_unban(c);
|
||||
|
||||
xcb_aux_sync(globalconf.connection);
|
||||
xcb_disconnect(globalconf.connection);
|
||||
|
||||
a_exec(globalconf.argv);
|
||||
}
|
||||
|
||||
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80
|
||||
|
|
1
ewmh.h
1
ewmh.h
|
@ -42,6 +42,7 @@ void ewmh_update_net_client_list_stacking(int);
|
|||
void ewmh_check_client_hints(client_t *);
|
||||
void ewmh_update_workarea(int);
|
||||
netwm_icon_t * ewmh_get_window_icon(xcb_window_t);
|
||||
void ewmh_restart(void);
|
||||
|
||||
#endif
|
||||
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80
|
||||
|
|
10
lua.c
10
lua.c
|
@ -122,15 +122,7 @@ luaA_exec(lua_State *L)
|
|||
static int
|
||||
luaA_restart(lua_State *L __attribute__ ((unused)))
|
||||
{
|
||||
client_t *c;
|
||||
|
||||
for(c = globalconf.clients; c; c = c->next)
|
||||
client_unban(c);
|
||||
|
||||
xcb_aux_sync(globalconf.connection);
|
||||
xcb_disconnect(globalconf.connection);
|
||||
|
||||
a_exec(globalconf.argv);
|
||||
ewmh_restart();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue