diff --git a/src/ipc.c b/src/ipc.c index bdf1dfea..fa3513bc 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -202,7 +202,23 @@ void dump_node(yajl_gen gen, struct Con *con, bool inplace_restart) { y(integer, (con == focused)); ystr("layout"); - y(integer, con->layout); + switch (con->layout) { + case L_DEFAULT: + ystr("default"); + break; + case L_STACKED: + ystr("stacked"); + break; + case L_TABBED: + ystr("tabbed"); + break; + case L_DOCKAREA: + ystr("dockarea"); + break; + case L_OUTPUT: + ystr("output"); + break; + } ystr("border"); switch (con->border_style) { diff --git a/src/load_layout.c b/src/load_layout.c index 7e57e94d..6fe0a086 100644 --- a/src/load_layout.c +++ b/src/load_layout.c @@ -131,6 +131,21 @@ static int json_string(void *ctx, const unsigned char *val, unsigned int len) { json_node->border_style = BS_NORMAL; else LOG("Unhandled \"border\": %s\n", buf); free(buf); + } else if (strcasecmp(last_key, "layout") == 0) { + char *buf = NULL; + asprintf(&buf, "%.*s", (int)len, val); + if (strcasecmp(buf, "default") == 0) + json_node->layout = L_DEFAULT; + else if (strcasecmp(buf, "stacked") == 0) + json_node->layout = L_STACKED; + else if (strcasecmp(buf, "tabbed") == 0) + json_node->layout = L_TABBED; + else if (strcasecmp(buf, "dockarea") == 0) + json_node->layout = L_DOCKAREA; + else if (strcasecmp(buf, "output") == 0) + json_node->layout = L_OUTPUT; + else LOG("Unhandled \"layout\": %s\n", buf); + free(buf); } } return 1; @@ -142,6 +157,7 @@ static int json_int(void *ctx, long long val) { static int json_int(void *ctx, long val) { #endif LOG("int %d for key %s\n", val, last_key); + // TODO: remove this after the next preview release if (strcasecmp(last_key, "layout") == 0) { json_node->layout = val; } diff --git a/testcases/t/16-nestedcons.t b/testcases/t/16-nestedcons.t index 954732dd..8d25482b 100644 --- a/testcases/t/16-nestedcons.t +++ b/testcases/t/16-nestedcons.t @@ -26,7 +26,7 @@ my $expected = { geometry => ignore(), swallows => ignore(), percent => 0, - layout => 0, + layout => 'default', focus => ignore(), focused => 0, urgent => 0,