Feature: send complete config on barconfig_update
Send all the options in the bar block on the barconfig_update event. This will eventually allow for dynamically updating bar colors with the `reload` command.
This commit is contained in:
committed by
Michael Stapelberg
parent
ab0fae400b
commit
2f42fe61d9
34
src/config.c
34
src/config.c
@ -32,44 +32,12 @@ void ungrab_all_keys(xcb_connection_t *conn) {
|
||||
|
||||
/*
|
||||
* Sends the current bar configuration as an event to all barconfig_update listeners.
|
||||
* This update mechnism currently only includes the hidden_state and the mode in the config.
|
||||
*
|
||||
*/
|
||||
void update_barconfig() {
|
||||
Barconfig *current;
|
||||
TAILQ_FOREACH(current, &barconfigs, configs) {
|
||||
/* Build json message */
|
||||
char *hidden_state;
|
||||
switch (current->hidden_state) {
|
||||
case S_SHOW:
|
||||
hidden_state ="show";
|
||||
break;
|
||||
case S_HIDE:
|
||||
default:
|
||||
hidden_state = "hide";
|
||||
break;
|
||||
}
|
||||
|
||||
char *mode;
|
||||
switch (current->mode) {
|
||||
case M_HIDE:
|
||||
mode ="hide";
|
||||
break;
|
||||
case M_INVISIBLE:
|
||||
mode ="invisible";
|
||||
break;
|
||||
case M_DOCK:
|
||||
default:
|
||||
mode = "dock";
|
||||
break;
|
||||
}
|
||||
|
||||
/* Send an event to all barconfig listeners*/
|
||||
char *event_msg;
|
||||
sasprintf(&event_msg, "{ \"id\":\"%s\", \"hidden_state\":\"%s\", \"mode\":\"%s\" }", current->id, hidden_state, mode);
|
||||
|
||||
ipc_send_event("barconfig_update", I3_IPC_EVENT_BARCONFIG_UPDATE, event_msg);
|
||||
FREE(event_msg);
|
||||
ipc_send_barconfig_update_event(current);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user