swaybg: one instance for all outputs

This makes it so there will only be one swaybg instance running
instead of one per output. swaybg's cli has been changed to a xrandr
like interface, where you select an output and then change properties
for that output and then select another output and repeat. This also
makes it so swaybg is only killed and respawned when a background
changes or when reloading.
This commit is contained in:
Brian Ashworth 2019-04-03 21:53:43 -04:00 committed by Simon Ser
parent 0ad905f23c
commit 75e7bd24cc
8 changed files with 497 additions and 251 deletions

View file

@ -424,7 +424,6 @@ struct sway_config {
list_t *active_bar_modifiers;
struct sway_mode *current_mode;
struct bar_config *current_bar;
char *swaybg_command;
uint32_t floating_mod;
bool floating_mod_inverse;
uint32_t dragging_key;
@ -447,6 +446,11 @@ struct sway_config {
enum sway_popup_during_fullscreen popup_during_fullscreen;
bool xwayland;
// swaybg
char *swaybg_command;
struct wl_client *swaybg_client;
struct wl_listener swaybg_client_destroy;
// Flags
enum focus_follows_mouse_mode focus_follows_mouse;
enum mouse_warping_mode mouse_warping;
@ -607,6 +611,8 @@ void reset_outputs(void);
void free_output_config(struct output_config *oc);
bool spawn_swaybg(void);
int workspace_output_cmp_workspace(const void *a, const void *b);
int sway_binding_cmp(const void *a, const void *b);
@ -625,8 +631,6 @@ void load_swaybar(struct bar_config *bar);
void load_swaybars(void);
void terminate_swaybg(pid_t pid);
struct bar_config *default_bar_config(void);
void free_bar_config(struct bar_config *bar);