From c2b99768e9bdaa4b1ef5ac8ca77080ea690b57b4 Mon Sep 17 00:00:00 2001 From: Dominik Bendle Date: Tue, 22 Jan 2019 21:00:01 +0100 Subject: [PATCH] Allow setting both background image and colour The -c/--color option no longer sets BACKGROUND_MODE_SOLID_COLOR (which disables the background image) and the background color is now set in all cases. One can still use --scaling solid_color to disable display of a background image. As a consequence, there is now only one possible default background colour (white), regardless of whether a background image is given or not. --- main.c | 1 - render.c | 8 ++++---- swaylock.1.scd | 7 ++++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/main.c b/main.c index 60f1a96..488d46f 100644 --- a/main.c +++ b/main.c @@ -658,7 +658,6 @@ static int parse_options(int argc, char **argv, struct swaylock_state *state, case 'c': if (state) { state->args.colors.background = parse_color(optarg); - state->args.mode = BACKGROUND_MODE_SOLID_COLOR; } break; case 'd': diff --git a/render.c b/render.c index 1652a5e..100e739 100644 --- a/render.c +++ b/render.c @@ -59,10 +59,10 @@ void render_frame(struct swaylock_surface *surface) { cairo_save(cairo); cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE); - if (state->args.mode == BACKGROUND_MODE_SOLID_COLOR || !surface->image) { - cairo_set_source_u32(cairo, state->args.colors.background); - cairo_paint(cairo); - } else { + cairo_set_source_u32(cairo, state->args.colors.background); + cairo_paint(cairo); + if (surface->image && state->args.mode != BACKGROUND_MODE_SOLID_COLOR) { + cairo_set_operator(cairo, CAIRO_OPERATOR_OVER); render_background_image(cairo, surface->image, state->args.mode, buffer_width, buffer_height); } diff --git a/swaylock.1.scd b/swaylock.1.scd index 593358b..9f7d88c 100644 --- a/swaylock.1.scd +++ b/swaylock.1.scd @@ -55,15 +55,16 @@ Locks your Wayland session. Show the current Caps Lock state also on the indicator. *-s, --scaling* - Scaling mode for images: _stretch_, _fill_, _fit_, _center_, or _tile_. + Scaling mode for images: _stretch_, _fill_, _fit_, _center_, or _tile_. Use + the additional mode _solid\_color_ to display only the background color, even + if a background image is specified. *-t, --tiling* Same as --scaling=tile. *-c, --color* Turn the screen into the given color. If -i is used, this sets the - background of the image to the given color. Defaults to white (FFFFFF), or - transparent (00000000) if an image is in use. + background of the image to the given color. Defaults to white (FFFFFF). *--bs-hl-color* Sets the color of backspace highlight segments.