Allow swaybg to be disabled

Same as #2791 but for swaybg.

Fixes #2790
master
emersion 6 years ago
parent 6cb0e58c6d
commit c988b03d85

@ -9,12 +9,17 @@ struct cmd_results *cmd_swaybg_command(int argc, char **argv) {
return error; return error;
} }
if (config->swaybg_command) { free(config->swaybg_command);
free(config->swaybg_command); config->swaybg_command = NULL;
char *new_command = join_args(argv, argc);
if (strcmp(new_command, "-") != 0) {
config->swaybg_command = new_command;
wlr_log(WLR_DEBUG, "Using custom swaybg command: %s",
config->swaybg_command);
} else {
free(new_command);
} }
config->swaybg_command = join_args(argv, argc);
wlr_log(WLR_DEBUG, "Using custom swaybg command: %s",
config->swaybg_command);
return cmd_results_new(CMD_SUCCESS, NULL, NULL); return cmd_results_new(CMD_SUCCESS, NULL, NULL);
} }

@ -136,6 +136,7 @@ void free_config(struct sway_config *config) {
free(config->floating_scroll_left_cmd); free(config->floating_scroll_left_cmd);
free(config->floating_scroll_right_cmd); free(config->floating_scroll_right_cmd);
free(config->font); free(config->font);
free(config->swaybg_command);
free((char *)config->current_config_path); free((char *)config->current_config_path);
free((char *)config->current_config); free((char *)config->current_config);
free(config); free(config);
@ -240,6 +241,8 @@ static void config_defaults(struct sway_config *config) {
if (!(config->active_bar_modifiers = create_list())) goto cleanup; if (!(config->active_bar_modifiers = create_list())) goto cleanup;
if (!(config->swaybg_command = strdup("swaybg"))) goto cleanup;
if (!(config->config_chain = create_list())) goto cleanup; if (!(config->config_chain = create_list())) goto cleanup;
config->current_config_path = NULL; config->current_config_path = NULL;
config->current_config = NULL; config->current_config = NULL;

@ -229,17 +229,16 @@ void apply_output_config(struct output_config *oc, struct sway_output *output) {
} }
} }
if (oc && oc->background) { if (output->bg_pid != 0) {
if (output->bg_pid != 0) { terminate_swaybg(output->bg_pid);
terminate_swaybg(output->bg_pid); }
} if (oc && oc->background && config->swaybg_command) {
wlr_log(WLR_DEBUG, "Setting background for output %d to %s", wlr_log(WLR_DEBUG, "Setting background for output %d to %s",
output_i, oc->background); output_i, oc->background);
size_t len = snprintf(NULL, 0, "%s %d \"%s\" %s %s", size_t len = snprintf(NULL, 0, "%s %d \"%s\" %s %s",
config->swaybg_command ? config->swaybg_command : "swaybg", config->swaybg_command, output_i, oc->background,
output_i, oc->background, oc->background_option, oc->background_option,
oc->background_fallback ? oc->background_fallback : ""); oc->background_fallback ? oc->background_fallback : "");
char *command = malloc(len + 1); char *command = malloc(len + 1);
if (!command) { if (!command) {
@ -247,8 +246,8 @@ void apply_output_config(struct output_config *oc, struct sway_output *output) {
return; return;
} }
snprintf(command, len + 1, "%s %d \"%s\" %s %s", snprintf(command, len + 1, "%s %d \"%s\" %s %s",
config->swaybg_command ? config->swaybg_command : "swaybg", config->swaybg_command, output_i, oc->background,
output_i, oc->background, oc->background_option, oc->background_option,
oc->background_fallback ? oc->background_fallback : ""); oc->background_fallback ? oc->background_fallback : "");
wlr_log(WLR_DEBUG, "-> %s", command); wlr_log(WLR_DEBUG, "-> %s", command);
@ -260,6 +259,7 @@ void apply_output_config(struct output_config *oc, struct sway_output *output) {
free(command); free(command);
} }
} }
if (oc) { if (oc) {
switch (oc->dpms_state) { switch (oc->dpms_state) {
case DPMS_ON: case DPMS_ON:
@ -353,4 +353,3 @@ void create_default_output_configs(void) {
list_add(config->output_configs, oc); list_add(config->output_configs, oc);
} }
} }

@ -71,6 +71,9 @@ The following commands may only be used in the configuration file.
Executes custom background _command_. Default is _swaybg_. Refer to Executes custom background _command_. Default is _swaybg_. Refer to
*output* below for more information. *output* below for more information.
It can be disabled by setting the command to a single dash:
_swaybg\_command -_
*swaynag\_command* <command> *swaynag\_command* <command>
Executes custom command for _swaynag_. Default is _swaynag_. Additional Executes custom command for _swaynag_. Default is _swaynag_. Additional
arguments may be appended to the end. This should only be used to either arguments may be appended to the end. This should only be used to either

Loading…
Cancel
Save