summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sway/commands.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/sway/commands.c b/sway/commands.c
index 92c9f3c2..aa4cb89e 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -65,6 +65,7 @@ static sway_cmd cmd_sticky;
65static sway_cmd cmd_workspace; 65static sway_cmd cmd_workspace;
66static sway_cmd cmd_ws_auto_back_and_forth; 66static sway_cmd cmd_ws_auto_back_and_forth;
67 67
68static sway_cmd bar_cmd_mode;
68static sway_cmd bar_cmd_hidden_state; 69static sway_cmd bar_cmd_hidden_state;
69static sway_cmd bar_cmd_id; 70static sway_cmd bar_cmd_id;
70static sway_cmd bar_cmd_position; 71static sway_cmd bar_cmd_position;
@@ -1562,6 +1563,32 @@ static struct cmd_results *bar_cmd_hidden_state(int argc, char **argv) {
1562 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 1563 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
1563} 1564}
1564 1565
1566static struct cmd_results *bar_cmd_mode(int argc, char **argv) {
1567 struct cmd_results *error = NULL;
1568 if ((error = checkarg(argc, "mode", EXPECTED_EQUAL_TO, 1))) {
1569 return error;
1570 }
1571
1572 const char *mode = argv[0];
1573 char *old_mode = config->current_bar->mode;
1574
1575 if (strcasecmp("dock", mode) == 0) {
1576 config->current_bar->mode = strdup(mode);
1577 } else if(strcmp("hide", mode) == 0) {
1578 config->current_bar->mode = strdup(mode);
1579 } else if(strcmp("invisible", mode) == 0) {
1580 config->current_bar->mode = strdup(mode);
1581 } else {
1582 return cmd_results_new(CMD_INVALID, "mode", "Invalid value %s", mode);
1583 }
1584
1585 sway_log(L_DEBUG, "Setting mode: '%s' for bar: %s", mode, config->current_bar->id);
1586
1587 // free old mode
1588 free(old_mode);
1589 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
1590}
1591
1565static struct cmd_results *bar_cmd_id(int argc, char **argv) { 1592static struct cmd_results *bar_cmd_id(int argc, char **argv) {
1566 struct cmd_results *error = NULL; 1593 struct cmd_results *error = NULL;
1567 if ((error = checkarg(argc, "id", EXPECTED_EQUAL_TO, 1))) { 1594 if ((error = checkarg(argc, "id", EXPECTED_EQUAL_TO, 1))) {
@@ -1701,7 +1728,7 @@ static struct cmd_handler bar_handlers[] = {
1701 { "font", NULL }, 1728 { "font", NULL },
1702 { "hidden_state", bar_cmd_hidden_state }, 1729 { "hidden_state", bar_cmd_hidden_state },
1703 { "id", bar_cmd_id }, 1730 { "id", bar_cmd_id },
1704 { "mode", NULL }, 1731 { "mode", bar_cmd_mode },
1705 { "modifier", NULL }, 1732 { "modifier", NULL },
1706 { "output", NULL }, 1733 { "output", NULL },
1707 { "position", bar_cmd_position }, 1734 { "position", bar_cmd_position },