#include "helpers.h"
#include "window.h"
#include "tree.h"
+#include "rules.h"
void process_message(char *msg, char *rsp)
{
} else if (strcmp(cmd, "list_windows") == 0) {
list_windows(rsp);
return;
+ } else if (strcmp(cmd, "list_rules") == 0) {
+ list_rules(rsp);
+ return;
} else if (strcmp(cmd, "close") == 0) {
window_close(mon->desk->focus);
return;
}
}
}
+ put_status();
} else if (strcmp(cmd, "cycle_layout") == 0) {
if (mon->desk->layout == LAYOUT_MONOCLE)
mon->desk->layout = LAYOUT_TILED;
else
mon->desk->layout = LAYOUT_MONOCLE;
+ put_status();
} else if (strcmp(cmd, "shift") == 0) {
char *dir = strtok(NULL, TOK_SEP);
if (dir != NULL) {
} else if (strcmp(cmd, "toggle_locked") == 0) {
if (mon->desk->focus != NULL)
toggle_locked(mon->desk->focus->client);
+ } else if (strcmp(cmd, "toggle_visibility") == 0) {
+ toggle_visibility();
} else if (strcmp(cmd, "pad") == 0) {
char *name = strtok(NULL, TOK_SEP);
if (name != NULL) {
if (parse_direction(dir, &d)) {
split_mode = MODE_MANUAL;
split_dir = d;
+ char *rat = strtok(NULL, TOK_SEP);
+ if (rat != NULL)
+ sscanf(rat, "%lf", &mon->desk->focus->split_ratio);
window_draw_border(mon->desk->focus, true, true);
}
}
if (m != NULL && m != mon) {
transfer_node(mon, mon->desk, m, m->desk, mon->desk->focus);
arrange(m, m->desk);
+ char *arg = strtok(NULL, TOK_SEP);
+ send_option_t opt;
+ if (parse_send_option(arg, &opt) && opt == SEND_OPTION_FOLLOW)
+ select_monitor(m);
}
}
} else if (strcmp(cmd, "send_to") == 0) {
transfer_node(mon, mon->desk, loc.monitor, loc.desktop, mon->desk->focus);
if (mon != loc.monitor && loc.monitor->desk == loc.desktop)
arrange(loc.monitor, loc.desktop);
+ char *arg = strtok(NULL, TOK_SEP);
+ send_option_t opt;
+ if (parse_send_option(arg, &opt) && opt == SEND_OPTION_FOLLOW) {
+ select_monitor(loc.monitor);
+ select_desktop(loc.desktop);
+ }
}
}
} else if (strcmp(cmd, "rename_monitor") == 0) {
char *new_name = strtok(NULL, TOK_SEP);
if (new_name != NULL) {
strncpy(m->name, new_name, sizeof(m->name));
+ put_status();
}
}
}
if (new_name != NULL) {
strncpy(loc.desktop->name, new_name, sizeof(loc.desktop->name));
ewmh_update_desktop_names();
+ put_status();
}
}
}
}
arg = strtok(NULL, TOK_SEP);
}
- rule->next = rule_head;
- rule_head = rule;
+ add_rule(rule);
}
return;
} else if (strcmp(cmd, "alternate") == 0) {
return;
} else if (strcmp(cmd, "adopt_orphans") == 0) {
adopt_orphans();
- } else if (strcmp(cmd, "reload") == 0) {
- load_settings();
- run_autostart();
} else if (strcmp(cmd, "reload_autostart") == 0) {
run_autostart();
} else if (strcmp(cmd, "reload_settings") == 0) {
load_settings();
} else if (strcmp(cmd, "quit") == 0) {
+ char *arg = strtok(NULL, TOK_SEP);
+ if (arg != NULL)
+ sscanf(arg, "%i", &exit_status);
quit();
return;
} else {
bool b;
if (parse_bool(value, &b))
focus_follows_mouse = b;
+ } else if (strcmp(name, "adaptative_raise") == 0) {
+ bool b;
+ if (parse_bool(value, &b))
+ adaptative_raise = b;
} else if (strcmp(name, "wm_name") == 0) {
strncpy(wm_name, value, sizeof(wm_name));
ewmh_update_wm_name();
snprintf(rsp, BUFSIZ, "%s", BOOLSTR(gapless_monocle));
else if (strcmp(name, "focus_follows_mouse") == 0)
snprintf(rsp, BUFSIZ, "%s", BOOLSTR(focus_follows_mouse));
+ else if (strcmp(name, "adaptative_raise") == 0)
+ snprintf(rsp, BUFSIZ, "%s", BOOLSTR(adaptative_raise));
else if (strcmp(name, "wm_name") == 0)
snprintf(rsp, BUFSIZ, "%s", wm_name);
else if (strcmp(name, "button_modifier") == 0)
return false;
}
+bool parse_send_option(char *s, send_option_t *o)
+{
+ if (s == NULL) {
+ *o = SEND_OPTION_DONT_FOLLOW;
+ return true;
+ } else if (strcmp(s, "--follow") == 0) {
+ *o = SEND_OPTION_FOLLOW;
+ return true;
+ }
+ return false;
+}
+
bool parse_rotate(char *s, rotate_t *r)
{
if (strcmp(s, "clockwise") == 0) {