}
coordinates_t ref = {mon, mon->desk, mon->desk->focus};
+ coordinates_t trg = ref;
if ((*args)[0] != OPT_CHR) {
int ret;
- coordinates_t tmp = ref;
- if ((ret = node_from_desc(*args, &tmp, &ref)) == SELECTOR_OK) {
+ if ((ret = node_from_desc(*args, &ref, &trg)) == SELECTOR_OK) {
num--, args++;
} else {
handle_failure(ret, "node", *args, rsp);
while (num > 0) {
if (streq("-f", *args) || streq("--focus", *args)) {
- coordinates_t dst = ref;
+ coordinates_t dst = trg;
if (num > 1 && *(args + 1)[0] != OPT_CHR) {
num--, args++;
int ret;
break;
}
} else if (streq("-a", *args) || streq("--activate", *args)) {
- coordinates_t dst = ref;
+ coordinates_t dst = trg;
if (num > 1 && *(args + 1)[0] != OPT_CHR) {
num--, args++;
int ret;
coordinates_t dst;
int ret;
if ((ret = desktop_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
- if (transfer_node(ref.monitor, ref.desktop, ref.node, dst.monitor, dst.desktop, dst.desktop->focus)) {
- ref.monitor = dst.monitor;
- ref.desktop = dst.desktop;
+ if (transfer_node(trg.monitor, trg.desktop, trg.node, dst.monitor, dst.desktop, dst.desktop->focus)) {
+ trg.monitor = dst.monitor;
+ trg.desktop = dst.desktop;
} else {
fail(rsp, "");
break;
coordinates_t dst;
int ret;
if ((ret = monitor_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
- if (transfer_node(ref.monitor, ref.desktop, ref.node, dst.monitor, dst.monitor->desk, dst.monitor->desk->focus)) {
- ref.monitor = dst.monitor;
- ref.desktop = dst.monitor->desk;
+ if (transfer_node(trg.monitor, trg.desktop, trg.node, dst.monitor, dst.monitor->desk, dst.monitor->desk->focus)) {
+ trg.monitor = dst.monitor;
+ trg.desktop = dst.monitor->desk;
} else {
fail(rsp, "");
break;
coordinates_t dst;
int ret;
if ((ret = node_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
- if (transfer_node(ref.monitor, ref.desktop, ref.node, dst.monitor, dst.desktop, dst.node)) {
- ref.monitor = dst.monitor;
- ref.desktop = dst.desktop;
+ if (transfer_node(trg.monitor, trg.desktop, trg.node, dst.monitor, dst.desktop, dst.node)) {
+ trg.monitor = dst.monitor;
+ trg.desktop = dst.desktop;
} else {
fail(rsp, "");
break;
coordinates_t dst;
int ret;
if ((ret = node_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
- if (swap_nodes(ref.monitor, ref.desktop, ref.node, dst.monitor, dst.desktop, dst.node)) {
- ref.monitor = dst.monitor;
- ref.desktop = dst.desktop;
+ if (swap_nodes(trg.monitor, trg.desktop, trg.node, dst.monitor, dst.desktop, dst.node)) {
+ trg.monitor = dst.monitor;
+ trg.desktop = dst.desktop;
} else {
fail(rsp, "");
break;
}
stack_layer_t lyr;
if (parse_stack_layer(*args, &lyr)) {
- if (!set_layer(ref.monitor, ref.desktop, ref.node, lyr)) {
+ if (!set_layer(trg.monitor, trg.desktop, trg.node, lyr)) {
fail(rsp, "");
break;
}
(*args)++;
}
if (parse_client_state(*args, &cst)) {
- if (alternate && ref.node != NULL && ref.node->client != NULL &&
- ref.node->client->state == cst) {
- cst = ref.node->client->last_state;
+ if (alternate && trg.node != NULL && trg.node->client != NULL &&
+ trg.node->client->state == cst) {
+ cst = trg.node->client->last_state;
}
- if (!set_state(ref.monitor, ref.desktop, ref.node, cst)) {
+ if (!set_state(trg.monitor, trg.desktop, trg.node, cst)) {
fail(rsp, "");
break;
}
fail(rsp, "node %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
}
}
if (streq("hidden", key)) {
- set_hidden(ref.monitor, ref.desktop, ref.node, (a == ALTER_SET ? b : !ref.node->hidden));
+ set_hidden(trg.monitor, trg.desktop, trg.node, (a == ALTER_SET ? b : !trg.node->hidden));
changed = true;
} else if (streq("sticky", key)) {
- set_sticky(ref.monitor, ref.desktop, ref.node, (a == ALTER_SET ? b : !ref.node->sticky));
+ set_sticky(trg.monitor, trg.desktop, trg.node, (a == ALTER_SET ? b : !trg.node->sticky));
} else if (streq("private", key)) {
- set_private(ref.monitor, ref.desktop, ref.node, (a == ALTER_SET ? b : !ref.node->private));
+ set_private(trg.monitor, trg.desktop, trg.node, (a == ALTER_SET ? b : !trg.node->private));
} else if (streq("locked", key)) {
- set_locked(ref.monitor, ref.desktop, ref.node, (a == ALTER_SET ? b : !ref.node->locked));
+ set_locked(trg.monitor, trg.desktop, trg.node, (a == ALTER_SET ? b : !trg.node->locked));
} else {
fail(rsp, "node %s: Invalid key: '%s'.\n", *(args - 1), key);
break;
fail(rsp, "node %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.node == NULL || ref.node->vacant) {
+ if (trg.node == NULL || trg.node->vacant) {
fail(rsp, "");
break;
}
if (streq("cancel", *args)) {
- cancel_presel(ref.monitor, ref.desktop, ref.node);
+ cancel_presel(trg.monitor, trg.desktop, trg.node);
} else {
bool alternate = false;
if ((*args)[0] == '~') {
}
direction_t dir;
if (parse_direction(*args, &dir)) {
- if (alternate && ref.node->presel != NULL && ref.node->presel->split_dir == dir) {
- cancel_presel(ref.monitor, ref.desktop, ref.node);
+ if (alternate && trg.node->presel != NULL && trg.node->presel->split_dir == dir) {
+ cancel_presel(trg.monitor, trg.desktop, trg.node);
} else {
- presel_dir(ref.monitor, ref.desktop, ref.node, dir);
- if (!IS_RECEPTACLE(ref.node)) {
- draw_presel_feedback(ref.monitor, ref.desktop, ref.node);
+ presel_dir(trg.monitor, trg.desktop, trg.node, dir);
+ if (!IS_RECEPTACLE(trg.node)) {
+ draw_presel_feedback(trg.monitor, trg.desktop, trg.node);
}
}
} else {
fail(rsp, "node %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.node == NULL || ref.node->vacant) {
+ if (trg.node == NULL || trg.node->vacant) {
fail(rsp, "");
break;
}
fail(rsp, "node %s: Invalid argument: '%s'.\n", *(args - 1), *args);
break;
} else {
- presel_ratio(ref.monitor, ref.desktop, ref.node, rat);
- draw_presel_feedback(ref.monitor, ref.desktop, ref.node);
+ presel_ratio(trg.monitor, trg.desktop, trg.node, rat);
+ draw_presel_feedback(trg.monitor, trg.desktop, trg.node);
}
} else if (streq("-v", *args) || streq("--move", *args)) {
num--, args++;
if (sscanf(*args, "%i", &dx) == 1) {
num--, args++;
if (sscanf(*args, "%i", &dy) == 1) {
- if (!move_client(&ref, dx, dy)) {
+ if (!move_client(&trg, dx, dy)) {
fail(rsp, "");
break;
}
if (sscanf(*args, "%i", &dx) == 1) {
num--, args++;
if (sscanf(*args, "%i", &dy) == 1) {
- if (!resize_client(&ref, rh, dx, dy)) {
+ if (!resize_client(&trg, rh, dx, dy)) {
fail(rsp, "");
break;
}
fail(rsp, "node %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
if ((*args)[0] == '+' || (*args)[0] == '-') {
int pix;
if (sscanf(*args, "%i", &pix) == 1) {
- int max = (ref.node->split_type == TYPE_HORIZONTAL ? ref.node->rectangle.height : ref.node->rectangle.width);
- double rat = ((max * ref.node->split_ratio) + pix) / max;
+ int max = (trg.node->split_type == TYPE_HORIZONTAL ? trg.node->rectangle.height : trg.node->rectangle.width);
+ double rat = ((max * trg.node->split_ratio) + pix) / max;
if (rat > 0 && rat < 1) {
- set_ratio(ref.node, rat);
+ set_ratio(trg.node, rat);
} else {
fail(rsp, "");
break;
} else {
double rat;
if (sscanf(*args, "%lf", &rat) == 1 && rat > 0 && rat < 1) {
- set_ratio(ref.node, rat);
+ set_ratio(trg.node, rat);
} else {
fail(rsp, "node %s: Invalid argument: '%s'.\n", *(args - 1), *args);
break;
fail(rsp, "node %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
flip_t flp;
if (parse_flip(*args, &flp)) {
- flip_tree(ref.node, flp);
+ flip_tree(trg.node, flp);
changed = true;
} else {
fail(rsp, "");
fail(rsp, "node %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
int deg;
if (parse_degree(*args, °)) {
- rotate_tree(ref.node, deg);
+ rotate_tree(trg.node, deg);
changed = true;
} else {
fail(rsp, "node %s: Invalid argument: '%s'.\n", *(args - 1), *args);
break;
}
} else if (streq("-E", *args) || streq("--equalize", *args)) {
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
- equalize_tree(ref.node);
+ equalize_tree(trg.node);
changed = true;
} else if (streq("-B", *args) || streq("--balance", *args)) {
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
- balance_tree(ref.node);
+ balance_tree(trg.node);
changed = true;
} else if (streq("-C", *args) || streq("--circulate", *args)) {
num--, args++;
fail(rsp, "node %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
circulate_dir_t cir;
if (parse_circulate_direction(*args, &cir)) {
- circulate_leaves(ref.monitor, ref.desktop, ref.node, cir);
+ circulate_leaves(trg.monitor, trg.desktop, trg.node, cir);
changed = true;
} else {
fail(rsp, "node %s: Invalid argument: '%s'.\n", *(args - 1), *args);
break;
}
} else if (streq("-i", *args) || streq("--insert-receptacle", *args)) {
- insert_receptacle(ref.monitor, ref.desktop, ref.node);
+ insert_receptacle(trg.monitor, trg.desktop, trg.node);
changed = true;
} else if (streq("-c", *args) || streq("--close", *args)) {
if (num > 1) {
fail(rsp, "node %s: Trailing commands.\n", *args);
break;
}
- if (ref.node == NULL || locked_count(ref.node) > 0) {
+ if (trg.node == NULL || locked_count(trg.node) > 0) {
fail(rsp, "");
break;
}
- close_node(ref.node);
+ close_node(trg.node);
break;
} else if (streq("-k", *args) || streq("--kill", *args)) {
if (num > 1) {
fail(rsp, "node %s: Trailing commands.\n", *args);
break;
}
- if (ref.node == NULL) {
+ if (trg.node == NULL) {
fail(rsp, "");
break;
}
- kill_node(ref.monitor, ref.desktop, ref.node);
+ kill_node(trg.monitor, trg.desktop, trg.node);
changed = true;
break;
} else {
}
if (changed) {
- arrange(ref.monitor, ref.desktop);
+ arrange(trg.monitor, trg.desktop);
}
}
}
coordinates_t ref = {mon, mon->desk, NULL};
+ coordinates_t trg = ref;
if ((*args)[0] != OPT_CHR) {
int ret;
- coordinates_t tmp = ref;
- if ((ret = desktop_from_desc(*args, &tmp, &ref)) == SELECTOR_OK) {
+ if ((ret = desktop_from_desc(*args, &ref, &trg)) == SELECTOR_OK) {
num--, args++;
} else {
handle_failure(ret, "desktop", *args, rsp);
while (num > 0) {
if (streq("-f", *args) || streq("--focus", *args)) {
- coordinates_t dst = ref;
+ coordinates_t dst = trg;
if (num > 1 && *(args + 1)[0] != OPT_CHR) {
num--, args++;
int ret;
}
focus_node(dst.monitor, dst.desktop, dst.desktop->focus);
} else if (streq("-a", *args) || streq("--activate", *args)) {
- coordinates_t dst = ref;
+ coordinates_t dst = trg;
if (num > 1 && *(args + 1)[0] != OPT_CHR) {
num--, args++;
int ret;
fail(rsp, "desktop %s: Not enough arguments.\n", *(args - 1));
break;
}
- if (ref.monitor->desk_head == ref.monitor->desk_tail) {
+ if (trg.monitor->desk_head == trg.monitor->desk_tail) {
fail(rsp, "");
break;
}
coordinates_t dst;
int ret;
if ((ret = monitor_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
- if (transfer_desktop(ref.monitor, dst.monitor, ref.desktop)) {
- ref.monitor = dst.monitor;
+ if (transfer_desktop(trg.monitor, dst.monitor, trg.desktop)) {
+ trg.monitor = dst.monitor;
} else {
fail(rsp, "");
break;
coordinates_t dst;
int ret;
if ((ret = desktop_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
- if (swap_desktops(ref.monitor, ref.desktop, dst.monitor, dst.desktop)) {
- ref.monitor = dst.monitor;
+ if (swap_desktops(trg.monitor, trg.desktop, dst.monitor, dst.desktop)) {
+ trg.monitor = dst.monitor;
} else {
fail(rsp, "");
break;
}
cycle_dir_t cyc;
if (parse_cycle_direction(*args, &cyc)) {
- desktop_t *d = ref.desktop;
+ desktop_t *d = trg.desktop;
if (cyc == CYCLE_PREV) {
if (d->prev == NULL) {
while (d->next != NULL) {
- swap_desktops(ref.monitor, d, ref.monitor, d->next);
+ swap_desktops(trg.monitor, d, trg.monitor, d->next);
}
} else {
- swap_desktops(ref.monitor, d, ref.monitor, d->prev);
+ swap_desktops(trg.monitor, d, trg.monitor, d->prev);
}
} else {
if (d->next == NULL) {
while (d->prev != NULL) {
- swap_desktops(ref.monitor, d, ref.monitor, d->prev);
+ swap_desktops(trg.monitor, d, trg.monitor, d->prev);
}
} else {
- swap_desktops(ref.monitor, d, ref.monitor, d->next);
+ swap_desktops(trg.monitor, d, trg.monitor, d->next);
}
}
} else {
layout_t lyt;
cycle_dir_t cyc;
if (parse_cycle_direction(*args, &cyc)) {
- change_layout(ref.monitor, ref.desktop, (ref.desktop->layout + 1) % 2);
+ change_layout(trg.monitor, trg.desktop, (trg.desktop->layout + 1) % 2);
} else if (parse_layout(*args, &lyt)) {
- change_layout(ref.monitor, ref.desktop, lyt);
+ change_layout(trg.monitor, trg.desktop, lyt);
} else {
fail(rsp, "desktop %s: Invalid argument: '%s'.\n", *(args - 1), *args);
break;
fail(rsp, "desktop %s: Not enough arguments.\n", *(args - 1));
break;
}
- rename_desktop(ref.monitor, ref.desktop, *args);
+ rename_desktop(trg.monitor, trg.desktop, *args);
} else if (streq("-r", *args) || streq("--remove", *args)) {
if (num > 1) {
fail(rsp, "desktop %s: Trailing commands.\n", *args);
break;
}
- if (ref.desktop->root == NULL &&
- ref.monitor->desk_head != ref.monitor->desk_tail) {
- remove_desktop(ref.monitor, ref.desktop);
+ if (trg.desktop->root == NULL &&
+ trg.monitor->desk_head != trg.monitor->desk_tail) {
+ remove_desktop(trg.monitor, trg.desktop);
return;
} else {
fail(rsp, "");
}
if (changed) {
- arrange(ref.monitor, ref.desktop);
+ arrange(trg.monitor, trg.desktop);
}
}
}
coordinates_t ref = {mon, NULL, NULL};
+ coordinates_t trg = ref;
if ((*args)[0] != OPT_CHR) {
int ret;
- coordinates_t tmp = ref;
- if ((ret = monitor_from_desc(*args, &tmp, &ref)) == SELECTOR_OK) {
+ if ((ret = monitor_from_desc(*args, &ref, &trg)) == SELECTOR_OK) {
num--, args++;
} else {
handle_failure(ret, "monitor", *args, rsp);
while (num > 0) {
if (streq("-f", *args) || streq("--focus", *args)) {
- coordinates_t dst = ref;
+ coordinates_t dst = trg;
if (num > 1 && *(args + 1)[0] != OPT_CHR) {
num--, args++;
int ret;
}
}
focus_node(dst.monitor, dst.monitor->desk, dst.monitor->desk->focus);
+ } else if (streq("-s", *args) || streq("--swap", *args)) {
+ num--, args++;
+ if (num < 1) {
+ fail(rsp, "monitor %s: Not enough arguments.\n", *(args - 1));
+ return;
+ }
+ coordinates_t dst;
+ int ret;
+ if ((ret = monitor_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
+ if (!swap_monitors(trg.monitor, dst.monitor)) {
+ fail(rsp, "");
+ return;
+ }
+ } else {
+ handle_failure(ret, "monitor -s", *args, rsp);
+ return;
+ }
} else if (streq("-d", *args) || streq("--reset-desktops", *args)) {
num--, args++;
if (num < 1) {
fail(rsp, "monitor %s: Not enough arguments.\n", *(args - 1));
return;
}
- desktop_t *d = ref.monitor->desk_head;
+ desktop_t *d = trg.monitor->desk_head;
while (num > 0 && d != NULL) {
- rename_desktop(ref.monitor, d, *args);
+ rename_desktop(trg.monitor, d, *args);
d = d->next;
num--, args++;
}
put_status(SBSC_MASK_REPORT);
while (num > 0) {
- add_desktop(ref.monitor, make_desktop(*args, XCB_NONE));
+ add_desktop(trg.monitor, make_desktop(*args, XCB_NONE));
num--, args++;
}
while (d != NULL) {
desktop_t *next = d->next;
if (d == mon->desk) {
- focus_node(ref.monitor, d->prev, d->prev->focus);
+ focus_node(trg.monitor, d->prev, d->prev->focus);
}
- merge_desktops(ref.monitor, d, mon, mon->desk);
- remove_desktop(ref.monitor, d);
+ merge_desktops(trg.monitor, d, mon, mon->desk);
+ remove_desktop(trg.monitor, d);
d = next;
}
} else if (streq("-a", *args) || streq("--add-desktops", *args)) {
return;
}
while (num > 0) {
- add_desktop(ref.monitor, make_desktop(*args, XCB_NONE));
+ add_desktop(trg.monitor, make_desktop(*args, XCB_NONE));
num--, args++;
}
} else if (streq("-r", *args) || streq("--remove", *args)) {
fail(rsp, "");
return;
}
- remove_monitor(ref.monitor);
+ remove_monitor(trg.monitor);
return;
} else if (streq("-o", *args) || streq("--order-desktops", *args)) {
num--, args++;
fail(rsp, "monitor %s: Not enough arguments.\n", *(args - 1));
return;
}
- desktop_t *d = ref.monitor->desk_head;
+ desktop_t *d = trg.monitor->desk_head;
while (d != NULL && num > 0) {
desktop_t *next = d->next;
coordinates_t dst;
- if (locate_desktop(*args, &dst) && dst.monitor == ref.monitor) {
- swap_desktops(ref.monitor, d, dst.monitor, dst.desktop);
+ if (locate_desktop(*args, &dst) && dst.monitor == trg.monitor) {
+ swap_desktops(trg.monitor, d, dst.monitor, dst.desktop);
if (next == dst.desktop) {
next = d;
}
}
xcb_rectangle_t r;
if (parse_rectangle(*args, &r)) {
- update_root(ref.monitor, &r);
+ update_root(trg.monitor, &r);
} else {
fail(rsp, "monitor %s: Invalid argument: '%s'.\n", *(args - 1), *args);
return;
fail(rsp, "monitor %s: Not enough arguments.\n", *(args - 1));
return;
}
- rename_monitor(ref.monitor, *args);
- } else if (streq("-s", *args) || streq("--swap", *args)) {
- num--, args++;
- if (num < 1) {
- fail(rsp, "monitor %s: Not enough arguments.\n", *(args - 1));
- return;
- }
- coordinates_t dst;
- int ret;
- if ((ret = monitor_from_desc(*args, &ref, &dst)) == SELECTOR_OK) {
- if (!swap_monitors(ref.monitor, dst.monitor)) {
- fail(rsp, "");
- return;
- }
- } else {
- handle_failure(ret, "monitor -s", *args, rsp);
- return;
- }
+ rename_monitor(trg.monitor, *args);
} else {
fail(rsp, "monitor: Unknown command: '%s'.\n", *args);
return;