+ arrange(mon, mon->desk);
+ } else if (strcmp(cmd, "flip") == 0) {
+ char *flp = strtok(NULL, TOK_SEP);
+ if (flp != NULL) {
+ flip_t f;
+ if (parse_flip(flp, &f))
+ flip_tree(mon->desk->root, f);
+ }
+ arrange(mon, mon->desk);
+ } else if (strcmp(cmd, "balance") == 0) {
+ balance_tree(mon->desk->root);
+ arrange(mon, mon->desk);
+ } else if (strcmp(cmd, "grab_pointer") == 0) {
+ char *pac = strtok(NULL, TOK_SEP);
+ if (pac != NULL) {
+ pointer_action_t a;
+ if (parse_pointer_action(pac, &a))
+ grab_pointer(a);
+ }
+ } else if (strcmp(cmd, "track_pointer") == 0) {
+ char *arg1 = strtok(NULL, TOK_SEP);
+ char *arg2 = strtok(NULL, TOK_SEP);
+ if (arg1 == NULL || arg2 == NULL)
+ return;
+ int root_x, root_y;
+ if (sscanf(arg1, "%i", &root_x) == 1 && sscanf(arg2, "%i", &root_y) == 1)
+ track_pointer(root_x, root_y);
+ } else if (strcmp(cmd, "ungrab_pointer") == 0) {
+ ungrab_pointer();