swaywm / swaylock

Screen locker for Wayland
MIT License
841 stars 200 forks source link

display image across multiple screens #43

Open cycomanic opened 5 years ago

cycomanic commented 5 years ago

i3lock would display an image across multiple screens. However swaylock does repeat the same image on all screens. It would be nice to have an option where swaylock displays a single image across both screens, I usually set one large image to stretch both screens.

d4g commented 5 years ago

I am actually having the same issue. I'd also like to have one image to be displayed across multiple screens.

stratosgear commented 5 years ago

While still in plain i3 I would scrot my current monitors, blur the image and then use it as a background in i3lock. If I was on multiple monitors then the blurred image will cover all of them.

scrot /tmp/screenshot.png
convert /tmp/screenshot.png -blur 0x5 /tmp/screenshot.png
# Superimpose Mr.Robot mask logo
composite -gravity center stop.png /tmp/screenshot.png  /tmp/screenshot.png
i3lock -f -i /tmp/screenshot.png && sleep 1

Exchanging scrot with grim and i3lock with swaylock should be ok, but alas swaylock cannot apply the image across the monitors.

asmigala commented 5 years ago

@stratosgear

but alas swaylock cannot apply the image across the monitors.

You can workaround this by enumerating all outputs (swaymsg -t get_outputs), taking a screenshot of each of them (grim -o $output ...) and then calling swaylock with a separate image for each output (swaylock --image=$output:$image ...).

Nonetheless, it would be nice if swaylock could display one image across all outputs (as now you need to run the convert for each image separately)

singulared commented 4 years ago

@stratosgear I think you need something like this: https://gist.github.com/singulared/7c6d53c1b84fbb7cf22d07c5c7d3e945

stratosgear commented 4 years ago

Yes that works great...

Buuut, I had to change the swaymsg -t get_outputs to something like:

swaymsg -t get_outputs | jq -r '.[] | select(.active == true) | .name'

because, when docked, I have the laptop screen deactivated and iterating over all outputs was causing an error.

But overall your script worked out fine, thanks.

Finally, I was able to achieve a faster blur with the corrupter