Add a few subscriber events

This commit is contained in:
Bastien Dejean 2015-08-01 14:37:15 +02:00
parent 639763c906
commit dccb5e7be2
6 changed files with 61 additions and 19 deletions

View file

@ -42,6 +42,7 @@ void focus_desktop(monitor_t *m, desktop_t *d)
return;
PRINTF("focus desktop %s\n", d->name);
put_status(SBSC_MASK_DESKTOP_FOCUS, "desktop_focus %s %s\n", m->name, d->name);
show_desktop(d);
hide_desktop(mon->desk);
@ -72,6 +73,7 @@ desktop_t *closest_desktop(monitor_t *m, desktop_t *d, cycle_dir_t dir, desktop_
void change_layout(monitor_t *m, desktop_t *d, layout_t l)
{
put_status(SBSC_MASK_DESKTOP_LAYOUT, "desktop_layout %s %s %s\n", m->name, d->name, l==LAYOUT_TILED?"tiled":"monocle");
d->layout = l;
arrange(m, d);
if (d == m->desk)
@ -83,6 +85,8 @@ void transfer_desktop(monitor_t *ms, monitor_t *md, desktop_t *d)
if (ms == md)
return;
put_status(SBSC_MASK_DESKTOP_TRANSFER, "desktop_transfer %s %s %s\n", ms->name, d->name, md->name);
desktop_t *dd = ms->desk;
unlink_desktop(ms, d);
insert_desktop(md, d);
@ -148,7 +152,7 @@ void insert_desktop(monitor_t *m, desktop_t *d)
void add_desktop(monitor_t *m, desktop_t *d)
{
PRINTF("add desktop %s\n", d->name);
put_status(SBSC_MASK_DESKTOP_ADD, "desktop_add %s\n", d->name);
put_status(SBSC_MASK_DESKTOP_ADD, "desktop_add %s %s\n", m->name, d->name);
insert_desktop(m, d);
num_desktops++;
@ -218,6 +222,7 @@ void swap_desktops(monitor_t *m1, desktop_t *d1, monitor_t *m2, desktop_t *d2)
return;
PRINTF("swap desktops %s %s\n", d1->name, d2->name);
put_status(SBSC_MASK_DESKTOP_SWAP, "desktop_swap %s %s %s %s\n", m1->name, d1->name, m2->name, d2->name);
bool d1_focused = (m1->desk == d1);
bool d2_focused = (m2->desk == d2);

View file

@ -433,7 +433,7 @@ int cmd_desktop(char **args, int num)
num--, args++;
if (num < 1)
return MSG_SYNTAX;
put_status(SBSC_MASK_DESKTOP_RENAME, "desktop_rename %s %s\n", trg.desktop->name, *args);
put_status(SBSC_MASK_DESKTOP_RENAME, "desktop_rename %s %s %s\n", trg.monitor->name, trg.desktop->name, *args);
snprintf(trg.desktop->name, sizeof(trg.desktop->name), "%s", *args);
ewmh_update_desktop_names();
put_status(SBSC_MASK_REPORT);
@ -554,6 +554,7 @@ int cmd_monitor(char **args, int num)
return MSG_SYNTAX;
desktop_t *d = trg.monitor->desk_head;
while (num > 0 && d != NULL) {
put_status(SBSC_MASK_DESKTOP_RENAME, "desktop_rename %s %s %s\n", trg.monitor->name, d->name, *args);
snprintf(d->name, sizeof(d->name), "%s", *args);
initialize_desktop(d);
arrange(trg.monitor, d);
@ -1162,22 +1163,44 @@ bool parse_subscriber_mask(char *s, subscriber_mask_t *mask)
*mask = SBSC_MASK_WINDOW_MANAGE;
} else if (streq("window_unmanage", s)) {
*mask = SBSC_MASK_WINDOW_UNMANAGE;
} else if (streq("window_urgent", s)) {
*mask = SBSC_MASK_WINDOW_URGENT;
} else if (streq("window_fullscreen", s)) {
*mask = SBSC_MASK_WINDOW_FULLSCREEN;
} else if (streq("window_swap", s)) {
*mask = SBSC_MASK_WINDOW_SWAP;
} else if (streq("window_transfer", s)) {
*mask = SBSC_MASK_WINDOW_TRANSFER;
} else if (streq("window_focus", s)) {
*mask = SBSC_MASK_WINDOW_FOCUS;
} else if (streq("window_resize", s)) {
*mask = SBSC_MASK_WINDOW_RESIZE;
} else if (streq("window_move", s)) {
*mask = SBSC_MASK_WINDOW_MOVE;
} else if (streq("window_state", s)) {
*mask = SBSC_MASK_WINDOW_STATE;
} else if (streq("desktop_add", s)) {
*mask = SBSC_MASK_DESKTOP_ADD;
} else if (streq("desktop_rename", s)) {
*mask = SBSC_MASK_DESKTOP_RENAME;
} else if (streq("desktop_remove", s)) {
*mask = SBSC_MASK_DESKTOP_REMOVE;
} else if (streq("desktop_swap", s)) {
*mask = SBSC_MASK_DESKTOP_SWAP;
} else if (streq("desktop_transfer", s)) {
*mask = SBSC_MASK_DESKTOP_TRANSFER;
} else if (streq("desktop_focus", s)) {
*mask = SBSC_MASK_DESKTOP_FOCUS;
} else if (streq("desktop_layout", s)) {
*mask = SBSC_MASK_DESKTOP_LAYOUT;
} else if (streq("desktop_state", s)) {
*mask = SBSC_MASK_DESKTOP_STATE;
} else if (streq("monitor_add", s)) {
*mask = SBSC_MASK_MONITOR_ADD;
} else if (streq("monitor_rename", s)) {
*mask = SBSC_MASK_MONITOR_RENAME;
} else if (streq("monitor_remove", s)) {
*mask = SBSC_MASK_MONITOR_REMOVE;
} else if (streq("monitor_focus", s)) {
*mask = SBSC_MASK_MONITOR_FOCUS;
} else if (streq("monitor_resize", s)) {
*mask = SBSC_MASK_MONITOR_RESIZE;
} else if (streq("report", s)) {
*mask = SBSC_MASK_REPORT;
} else {

View file

@ -132,6 +132,7 @@ void focus_monitor(monitor_t *m)
return;
PRINTF("focus monitor %s\n", m->name);
put_status(SBSC_MASK_MONITOR_FOCUS, "monitor_focus %s\n", m->name);
mon = m;

View file

@ -30,17 +30,28 @@ typedef enum {
SBSC_MASK_MONITOR_ADD = 1 << 1,
SBSC_MASK_MONITOR_RENAME = 1 << 2,
SBSC_MASK_MONITOR_REMOVE = 1 << 3,
SBSC_MASK_DESKTOP_ADD = 1 << 4,
SBSC_MASK_DESKTOP_RENAME = 1 << 5,
SBSC_MASK_DESKTOP_REMOVE = 1 << 6,
SBSC_MASK_WINDOW_MANAGE = 1 << 7,
SBSC_MASK_WINDOW_UNMANAGE = 1 << 8,
SBSC_MASK_WINDOW_URGENT = 1 << 9,
SBSC_MASK_WINDOW_FULLSCREEN = 1 << 10,
SBSC_MASK_MONITOR = (1 << 4) - (1 << 1),
SBSC_MASK_DESKTOP = (1 << 7) - (1 << 4),
SBSC_MASK_WINDOW = (1 << 11) - (1 << 7),
SBSC_MASK_ALL = (1 << 11) - 1
SBSC_MASK_MONITOR_FOCUS = 1 << 4,
SBSC_MASK_MONITOR_RESIZE = 1 << 5,
SBSC_MASK_DESKTOP_ADD = 1 << 6,
SBSC_MASK_DESKTOP_RENAME = 1 << 7,
SBSC_MASK_DESKTOP_REMOVE = 1 << 8,
SBSC_MASK_DESKTOP_SWAP = 1 << 9,
SBSC_MASK_DESKTOP_TRANSFER = 1 << 10,
SBSC_MASK_DESKTOP_FOCUS = 1 << 11,
SBSC_MASK_DESKTOP_LAYOUT = 1 << 12,
SBSC_MASK_DESKTOP_STATE = 1 << 13,
SBSC_MASK_WINDOW_MANAGE = 1 << 14,
SBSC_MASK_WINDOW_UNMANAGE = 1 << 15,
SBSC_MASK_WINDOW_SWAP = 1 << 16,
SBSC_MASK_WINDOW_TRANSFER = 1 << 17,
SBSC_MASK_WINDOW_FOCUS = 1 << 18,
SBSC_MASK_WINDOW_RESIZE = 1 << 19,
SBSC_MASK_WINDOW_MOVE = 1 << 20,
SBSC_MASK_WINDOW_STATE = 1 << 21,
SBSC_MASK_MONITOR = (1 << 6) - (1 << 1),
SBSC_MASK_DESKTOP = (1 << 14) - (1 << 6),
SBSC_MASK_WINDOW = (1 << 22) - (1 << 14),
SBSC_MASK_ALL = (1 << 22) - 1
} subscriber_mask_t;
subscriber_list_t *make_subscriber_list(FILE *stream, int field);

2
tree.c
View file

@ -351,6 +351,7 @@ void focus_node(monitor_t *m, desktop_t *d, node_t *n)
}
PRINTF("focus node %X\n", n->client->window);
put_status(SBSC_MASK_WINDOW_FOCUS, "window_focus 0x%X\n", n->client->window);
history_add(m, d, n);
set_input_focus(n);
@ -1059,6 +1060,7 @@ bool transfer_node(monitor_t *ms, desktop_t *ds, node_t *ns, monitor_t *md, desk
return false;
PRINTF("transfer node %X\n", ns->client->window);
put_status(SBSC_MASK_WINDOW_TRANSFER, "window_transfer %s %s 0x%X %s %s 0x%X\n", ms->name, ds->name, ns->client->window, md->name, dd->name, nd!=NULL?nd->client->window:0);
bool focused = (ns == mon->desk->focus);
bool active = (ns == ds->focus);

View file

@ -386,7 +386,7 @@ void set_fullscreen(node_t *n, bool value)
client_t *c = n->client;
PRINTF("fullscreen %X: %s\n", c->window, BOOLSTR(value));
put_status(SBSC_MASK_WINDOW_FULLSCREEN, "window_fullscreen %s 0x%X\n", ONOFFSTR(value), c->window);
put_status(SBSC_MASK_WINDOW_STATE, "window_state fullscreen %s 0x%X\n", ONOFFSTR(value), c->window);
c->fullscreen = value;
if (value)
@ -487,7 +487,7 @@ void set_urgency(monitor_t *m, desktop_t *d, node_t *n, bool value)
n->client->urgent = value;
window_draw_border(n, d->focus == n, m == mon);
put_status(SBSC_MASK_WINDOW_URGENT, "window_urgent %s 0x%X\n", ONOFFSTR(value), n->client->window);
put_status(SBSC_MASK_WINDOW_STATE, "window_state urgent %s 0x%X\n", ONOFFSTR(value), n->client->window);
put_status(SBSC_MASK_REPORT);
}