diff options
author | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2015-12-18 23:49:50 +0100 |
---|---|---|
committer | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2015-12-19 00:13:51 +0100 |
commit | 9d7f1afdfb62a5851a38c8add7d05ae45a87066a (patch) | |
tree | 8770c0a2cd74ec54a7b1f5b48e7610aff125ece7 | |
parent | Merge pull request #357 from sce/fix_swaybar_crashes (diff) | |
download | sway-9d7f1afdfb62a5851a38c8add7d05ae45a87066a.tar.gz sway-9d7f1afdfb62a5851a38c8add7d05ae45a87066a.tar.zst sway-9d7f1afdfb62a5851a38c8add7d05ae45a87066a.zip |
Add bar option: swaybar_command <command>
-rw-r--r-- | include/config.h | 1 | ||||
-rw-r--r-- | sway/commands.c | 19 | ||||
-rw-r--r-- | sway/config.c | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/include/config.h b/include/config.h index 32562908..7e4fda7e 100644 --- a/include/config.h +++ b/include/config.h | |||
@@ -92,6 +92,7 @@ struct bar_config { | |||
92 | enum desktop_shell_panel_position position; | 92 | enum desktop_shell_panel_position position; |
93 | list_t *bindings; | 93 | list_t *bindings; |
94 | char *status_command; | 94 | char *status_command; |
95 | char *swaybar_command; | ||
95 | char *font; | 96 | char *font; |
96 | int height; // -1 not defined | 97 | int height; // -1 not defined |
97 | int tray_padding; | 98 | int tray_padding; |
diff --git a/sway/commands.c b/sway/commands.c index 24d56052..48e18e8a 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -79,6 +79,7 @@ static sway_cmd bar_cmd_position; | |||
79 | static sway_cmd bar_cmd_separator_symbol; | 79 | static sway_cmd bar_cmd_separator_symbol; |
80 | static sway_cmd bar_cmd_status_command; | 80 | static sway_cmd bar_cmd_status_command; |
81 | static sway_cmd bar_cmd_strip_workspace_numbers; | 81 | static sway_cmd bar_cmd_strip_workspace_numbers; |
82 | static sway_cmd bar_cmd_swaybar_command; | ||
82 | static sway_cmd bar_cmd_tray_output; | 83 | static sway_cmd bar_cmd_tray_output; |
83 | static sway_cmd bar_cmd_tray_padding; | 84 | static sway_cmd bar_cmd_tray_padding; |
84 | static sway_cmd bar_cmd_workspace_buttons; | 85 | static sway_cmd bar_cmd_workspace_buttons; |
@@ -1909,6 +1910,23 @@ static struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv | |||
1909 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | 1910 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); |
1910 | } | 1911 | } |
1911 | 1912 | ||
1913 | static struct cmd_results *bar_cmd_swaybar_command(int argc, char **argv) { | ||
1914 | struct cmd_results *error = NULL; | ||
1915 | if ((error = checkarg(argc, "swaybar_command", EXPECTED_AT_LEAST, 1))) { | ||
1916 | return error; | ||
1917 | } | ||
1918 | |||
1919 | if (!config->current_bar) { | ||
1920 | return cmd_results_new(CMD_FAILURE, "swaybar_command", "No bar defined."); | ||
1921 | } | ||
1922 | |||
1923 | free(config->current_bar->swaybar_command); | ||
1924 | config->current_bar->swaybar_command = join_args(argv, argc); | ||
1925 | sway_log(L_DEBUG, "Using custom swaybar command: %s", config->current_bar->swaybar_command); | ||
1926 | |||
1927 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | ||
1928 | } | ||
1929 | |||
1912 | static struct cmd_results *bar_cmd_tray_output(int argc, char **argv) { | 1930 | static struct cmd_results *bar_cmd_tray_output(int argc, char **argv) { |
1913 | sway_log(L_ERROR, "warning: tray_output is not supported on wayland"); | 1931 | sway_log(L_ERROR, "warning: tray_output is not supported on wayland"); |
1914 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | 1932 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); |
@@ -1977,6 +1995,7 @@ static struct cmd_handler bar_handlers[] = { | |||
1977 | { "separator_symbol", bar_cmd_separator_symbol }, | 1995 | { "separator_symbol", bar_cmd_separator_symbol }, |
1978 | { "status_command", bar_cmd_status_command }, | 1996 | { "status_command", bar_cmd_status_command }, |
1979 | { "strip_workspace_numbers", bar_cmd_strip_workspace_numbers }, | 1997 | { "strip_workspace_numbers", bar_cmd_strip_workspace_numbers }, |
1998 | { "swaybar_command", bar_cmd_swaybar_command }, | ||
1980 | { "tray_output", bar_cmd_tray_output }, | 1999 | { "tray_output", bar_cmd_tray_output }, |
1981 | { "tray_padding", bar_cmd_tray_padding }, | 2000 | { "tray_padding", bar_cmd_tray_padding }, |
1982 | { "workspace_buttons", bar_cmd_workspace_buttons }, | 2001 | { "workspace_buttons", bar_cmd_workspace_buttons }, |
diff --git a/sway/config.c b/sway/config.c index 970225f4..32135286 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -610,6 +610,7 @@ struct bar_config *default_bar_config(void) { | |||
610 | bar->position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM; | 610 | bar->position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM; |
611 | bar->bindings = create_list(); | 611 | bar->bindings = create_list(); |
612 | bar->status_command = strdup("while :; do date +'%Y-%m-%d %l:%M:%S %p' && sleep 1; done"); | 612 | bar->status_command = strdup("while :; do date +'%Y-%m-%d %l:%M:%S %p' && sleep 1; done"); |
613 | bar->swaybar_command = NULL; | ||
613 | bar->font = strdup("monospace 10"); | 614 | bar->font = strdup("monospace 10"); |
614 | bar->height = -1; | 615 | bar->height = -1; |
615 | bar->workspace_buttons = true; | 616 | bar->workspace_buttons = true; |