+ if ((con = con_by_window_id(window->id)) == NULL)
+ return false;
+
+ bool matched = false;
+ mark_t *mark;
+ TAILQ_FOREACH(mark, &(con->marks_head), marks) {
+ if (regex_matches(match->mark, mark->name)) {
+ matched = true;
+ break;
+ }
+ }
+
+ if (matched) {
+ LOG("mark matches\n");
+ } else {
+ LOG("mark does not match\n");
+ return false;
+ }
+ }
+
+ if (match->window_mode != WM_ANY) {
+ if ((con = con_by_window_id(window->id)) == NULL)
+ return false;
+
+ const bool floating = (con_inside_floating(con) != NULL);
+
+ if ((match->window_mode == WM_TILING && floating) ||
+ (match->window_mode == WM_FLOATING && !floating)) {
+ LOG("window_mode does not match\n");
+ return false;
+ }
+
+ LOG("window_mode matches\n");