summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/config.h6
-rw-r--r--sway/commands.c38
-rw-r--r--sway/config.c33
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);
177void free_sway_mouse_binding(struct sway_mouse_binding *smb); 176void free_sway_mouse_binding(struct sway_mouse_binding *smb);
178 177
179/** 178/**
179 * Allocate and initialize default bar configuration.
180 */
181struct bar_config *default_bar_config(void);
182
183/**
180 * Global config singleton. 184 * Global config singleton.
181 */ 185 */
182extern struct sway_config *config; 186extern 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;
71static sway_cmd bar_cmd_hidden_state; 71static sway_cmd bar_cmd_hidden_state;
72static sway_cmd bar_cmd_id; 72static sway_cmd bar_cmd_id;
73static sway_cmd bar_cmd_position; 73static sway_cmd bar_cmd_position;
74static sway_cmd bar_cmd_status_command;
74static sway_cmd bar_cmd_strip_workspace_numbers; 75static sway_cmd bar_cmd_strip_workspace_numbers;
75static sway_cmd bar_cmd_tray_output; 76static sway_cmd bar_cmd_tray_output;
76static sway_cmd bar_cmd_tray_padding; 77static 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
1711static 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
1724static struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv) { 1728static 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
150static char *get_config_path(void) { 137static 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
537struct 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}