-ipc-socket { BEGIN(BIND_AWS_COND); return TOKIPCSOCKET; }
-ipc_socket { BEGIN(BIND_AWS_COND); return TOKIPCSOCKET; }
-new_container { return TOKNEWCONTAINER; }
-default { yylval.number = MODE_DEFAULT; return TOKCONTAINERMODE; }
-stacking { yylval.number = MODE_STACK; return TOKCONTAINERMODE; }
-tabbed { yylval.number = MODE_TABBED; return TOKCONTAINERMODE; }
+ipc-socket { WS_STRING; return TOKIPCSOCKET; }
+ipc_socket { WS_STRING; return TOKIPCSOCKET; }
+restart_state { WS_STRING; return TOKRESTARTSTATE; }
+default_orientation { return TOK_ORIENTATION; }
+horizontal { return TOK_HORIZ; }
+vertical { return TOK_VERT; }
+auto { return TOK_AUTO; }
+workspace_layout { return TOK_WORKSPACE_LAYOUT; }
+new_window { return TOKNEWWINDOW; }
+normal { return TOK_NORMAL; }
+none { return TOK_NONE; }
+1pixel { return TOK_1PIXEL; }
+focus_follows_mouse { return TOKFOCUSFOLLOWSMOUSE; }
+workspace_bar { return TOKWORKSPACEBAR; }
+popup_during_fullscreen { return TOK_POPUP_DURING_FULLSCREEN; }
+ignore { return TOK_IGNORE; }
+leave_fullscreen { return TOK_LEAVE_FULLSCREEN; }
+for_window {
+ /* Example: for_window [class="urxvt"] border none
+ *
+ * First, we wait for the ']' that finishes a match (FOR_WINDOW_COND)
+ * Then, we require a whitespace (EAT_WHITESPACE)
+ * And the rest of the line is parsed as a string
+ */
+ yy_push_state(WANT_STRING);
+ yy_push_state(EAT_WHITESPACE);
+ yy_push_state(FOR_WINDOW_COND);
+ return TOK_FOR_WINDOW;
+ }
+default { /* yylval.number = MODE_DEFAULT; */return TOK_DEFAULT; }
+stacking { /* yylval.number = MODE_STACK; */return TOK_STACKING; }
+stacked { return TOK_STACKING; }
+tabbed { /* yylval.number = MODE_TABBED; */return TOK_TABBED; }