diff options
-rw-r--r-- | include/config.h | 6 | ||||
-rw-r--r-- | sway/commands.c | 38 | ||||
-rw-r--r-- | sway/config.c | 33 |
3 files changed, 46 insertions, 31 deletions
diff --git a/include/config.h b/include/config.h index 0fc8202c..5bb7107a 100644 --- a/include/config.h +++ b/include/config.h | |||
@@ -125,7 +125,6 @@ struct sway_config { | |||
125 | list_t *output_configs; | 125 | list_t *output_configs; |
126 | list_t *criteria; | 126 | list_t *criteria; |
127 | struct sway_mode *current_mode; | 127 | struct sway_mode *current_mode; |
128 | struct bar_config bar; | ||
129 | struct bar_config *current_bar; | 128 | struct bar_config *current_bar; |
130 | uint32_t floating_mod; | 129 | uint32_t floating_mod; |
131 | uint32_t dragging_key; | 130 | uint32_t dragging_key; |
@@ -177,6 +176,11 @@ int sway_mouse_binding_cmp_buttons(const void *a, const void *b); | |||
177 | void free_sway_mouse_binding(struct sway_mouse_binding *smb); | 176 | void free_sway_mouse_binding(struct sway_mouse_binding *smb); |
178 | 177 | ||
179 | /** | 178 | /** |
179 | * Allocate and initialize default bar configuration. | ||
180 | */ | ||
181 | struct bar_config *default_bar_config(void); | ||
182 | |||
183 | /** | ||
180 | * Global config singleton. | 184 | * Global config singleton. |
181 | */ | 185 | */ |
182 | extern struct sway_config *config; | 186 | extern struct sway_config *config; |
diff --git a/sway/commands.c b/sway/commands.c index 5c23a611..f6c3b094 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -71,6 +71,7 @@ static sway_cmd bar_cmd_modifier; | |||
71 | static sway_cmd bar_cmd_hidden_state; | 71 | static sway_cmd bar_cmd_hidden_state; |
72 | static sway_cmd bar_cmd_id; | 72 | static sway_cmd bar_cmd_id; |
73 | static sway_cmd bar_cmd_position; | 73 | static sway_cmd bar_cmd_position; |
74 | static sway_cmd bar_cmd_status_command; | ||
74 | static sway_cmd bar_cmd_strip_workspace_numbers; | 75 | static sway_cmd bar_cmd_strip_workspace_numbers; |
75 | static sway_cmd bar_cmd_tray_output; | 76 | static sway_cmd bar_cmd_tray_output; |
76 | static sway_cmd bar_cmd_tray_padding; | 77 | static sway_cmd bar_cmd_tray_padding; |
@@ -1127,22 +1128,8 @@ static struct cmd_results *cmd_bar(int argc, char **argv) { | |||
1127 | return cmd_results_new(CMD_FAILURE, "bar", "Can only be used in config file."); | 1128 | return cmd_results_new(CMD_FAILURE, "bar", "Can only be used in config file."); |
1128 | } | 1129 | } |
1129 | 1130 | ||
1130 | // Create new bar from default bar config | 1131 | // Create new bar with default values |
1131 | struct bar_config *bar = NULL; | 1132 | struct bar_config *bar = default_bar_config(); |
1132 | bar = malloc(sizeof*bar); | ||
1133 | bar->mode = strdup(config->bar.mode); | ||
1134 | bar->hidden_state = strdup(config->bar.hidden_state); | ||
1135 | bar->modifier = config->bar.modifier; | ||
1136 | bar->position = config->bar.position; | ||
1137 | bar->bindings = create_list(); | ||
1138 | bar->status_command = strdup(config->bar.status_command); | ||
1139 | bar->font = strdup(config->bar.font); | ||
1140 | bar->bar_height = config->bar.bar_height; | ||
1141 | bar->workspace_buttons = config->bar.workspace_buttons; | ||
1142 | bar->strip_workspace_numbers = config->bar.strip_workspace_numbers; | ||
1143 | bar->binding_mode_indicator = config->bar.binding_mode_indicator; | ||
1144 | bar->tray_padding = config->bar.tray_padding; | ||
1145 | list_add(config->bars, bar); | ||
1146 | 1133 | ||
1147 | // set bar id | 1134 | // set bar id |
1148 | int i; | 1135 | int i; |
@@ -1721,6 +1708,23 @@ static struct cmd_results *bar_cmd_position(int argc, char **argv) { | |||
1721 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | 1708 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); |
1722 | } | 1709 | } |
1723 | 1710 | ||
1711 | static struct cmd_results *bar_cmd_status_command(int argc, char **argv) { | ||
1712 | struct cmd_results *error = NULL; | ||
1713 | if ((error = checkarg(argc, "status_command", EXPECTED_AT_LEAST, 1))) { | ||
1714 | return error; | ||
1715 | } | ||
1716 | |||
1717 | if (!config->current_bar) { | ||
1718 | return cmd_results_new(CMD_FAILURE, "status_command", "No bar defined."); | ||
1719 | } | ||
1720 | |||
1721 | free(config->current_bar->status_command); | ||
1722 | config->current_bar->status_command = join_args(argv, argc); | ||
1723 | sway_log(L_DEBUG, "Feeding bar with status command: %s", config->current_bar->status_command); | ||
1724 | |||
1725 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | ||
1726 | } | ||
1727 | |||
1724 | static struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv) { | 1728 | static struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv) { |
1725 | struct cmd_results *error = NULL; | 1729 | struct cmd_results *error = NULL; |
1726 | if ((error = checkarg(argc, "strip_workspace_numbers", EXPECTED_EQUAL_TO, 1))) { | 1730 | if ((error = checkarg(argc, "strip_workspace_numbers", EXPECTED_EQUAL_TO, 1))) { |
@@ -1809,7 +1813,7 @@ static struct cmd_handler bar_handlers[] = { | |||
1809 | { "output", NULL }, | 1813 | { "output", NULL }, |
1810 | { "position", bar_cmd_position }, | 1814 | { "position", bar_cmd_position }, |
1811 | { "seperator_symbol", NULL }, | 1815 | { "seperator_symbol", NULL }, |
1812 | { "status_command", NULL }, | 1816 | { "status_command", bar_cmd_status_command }, |
1813 | { "strip_workspace_numbers", bar_cmd_strip_workspace_numbers }, | 1817 | { "strip_workspace_numbers", bar_cmd_strip_workspace_numbers }, |
1814 | { "tray_output", bar_cmd_tray_output }, | 1818 | { "tray_output", bar_cmd_tray_output }, |
1815 | { "tray_padding", bar_cmd_tray_padding }, | 1819 | { "tray_padding", bar_cmd_tray_padding }, |
diff --git a/sway/config.c b/sway/config.c index 2c2cc025..1302faa8 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -132,19 +132,6 @@ static void config_defaults(struct sway_config *config) { | |||
132 | config->edge_gaps = true; | 132 | config->edge_gaps = true; |
133 | config->gaps_inner = 0; | 133 | config->gaps_inner = 0; |
134 | config->gaps_outer = 0; | 134 | config->gaps_outer = 0; |
135 | |||
136 | // Bar | ||
137 | config->bar.mode = "dock"; | ||
138 | config->bar.hidden_state = "hide"; | ||
139 | config->bar.modifier = 0; | ||
140 | config->bar.position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM; | ||
141 | config->bar.status_command = "while :; do date +'%Y-%m-%d %l:%M:%S %p' && sleep 1; done"; | ||
142 | config->bar.font = "monospace 10"; | ||
143 | config->bar.bar_height = -1; | ||
144 | config->bar.workspace_buttons = true; | ||
145 | config->bar.strip_workspace_numbers = false; | ||
146 | config->bar.binding_mode_indicator = true; | ||
147 | config->bar.tray_padding = 2; | ||
148 | } | 135 | } |
149 | 136 | ||
150 | static char *get_config_path(void) { | 137 | static char *get_config_path(void) { |
@@ -546,3 +533,23 @@ void free_sway_mouse_binding(struct sway_mouse_binding *binding) { | |||
546 | } | 533 | } |
547 | free(binding); | 534 | free(binding); |
548 | } | 535 | } |
536 | |||
537 | struct bar_config *default_bar_config(void) { | ||
538 | struct bar_config *bar = NULL; | ||
539 | bar = malloc(sizeof(struct bar_config)); | ||
540 | bar->mode = strdup("dock"); | ||
541 | bar->hidden_state = strdup("hide"); | ||
542 | bar->modifier = 0; | ||
543 | bar->position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM; | ||
544 | bar->bindings = create_list(); | ||
545 | bar->status_command = strdup("while :; do date +'%Y-%m-%d %l:%M:%S %p' && sleep 1; done"); | ||
546 | bar->font = strdup("monospace 10"); | ||
547 | bar->bar_height = -1; | ||
548 | bar->workspace_buttons = true; | ||
549 | bar->strip_workspace_numbers = false; | ||
550 | bar->binding_mode_indicator = true; | ||
551 | bar->tray_padding = 2; | ||
552 | list_add(config->bars, bar); | ||
553 | |||
554 | return bar; | ||
555 | } | ||