Swaylock-effects is a fork of swaylock which adds built-in screenshots and image manipulation effects like blurring. It's inspired by i3lock-color, although the feature sets aren't perfectly overlapping.
This repository (jirutka/swaylock-effects) is a fork of mortie/swaylock-effects which is no longer maintained.
swaylock \
--screenshots \
--clock \
--indicator \
--indicator-radius 100 \
--indicator-thickness 7 \
--effect-blur 7x5 \
--effect-vignette 0.5:0.5 \
--ring-color bb00cc \
--key-hl-color 880033 \
--line-color 00000000 \
--inside-color 00000088 \
--separator-color 00000000 \
--grace 2 \
--fade-in 0.2
The main new features compared to upstream swaylock are:
--screenshots
to use screenshots instead of an image on disk or a color--clock
to show date/time in the indicator
--indicator
to make the indicator always active--timestr
and --datestr
to set the date/time formats
(using strftime-style formatting)--submit-on-touch
to use your touchscreen to submit a password.
If you can unlock your device with anything else than your password,
this might come helpful to trigger PAM's authentication process.--grace <seconds>
to set a password grace period, so that the password
isn't required to unlock until some number of seconds have passed.
--indicator
, the indicator is always shown,
even in the grace period.--indicator-idle-visible
, the indicator is only
visible after the grace period.--grace-no-mouse
to not unlock as a response
to a mouse event, and --grace-no-touch
to not unlock as a response to
a touch event.--fade-in <seconds>
to make the lock screen fade in.--indicator-image <path>
to display an image inside the indicator.--text-clear <string>
, --text-caps-lock <string>
, --text-ver <string>
,
and --text-wrong <string>
to change the texts displayed inside the indicator.--effect-blur <radius>x<times>
: Blur the image (thanks to yvbbrjdr's
fast box blur algorithm in
i3lock-fancy-rapid)--effect-pixelate <factor>
: Pixelate the image.--effect-scale <scale>
: Scale the image by a factor. This can be used
to make other effects faster if you don't need the full resolution.--effect-greyscale
: Make the image greyscale.--effect-vignette <base>:<factor>
: Apply a vignette effect (range is 0-1).--effect-compose <position>;<size>;<gravity>;<path>
: Overlay another image.--effect-custom <path>
: Load a custom effect from a C file or shared object.New feature ideas are welcome as issues (though I may never get around to implement them), new feature implementations are welcome as pull requests :)
swaylock-effects continuously incorporates changes from the original swaylock. The following table shows the relation between the swaylock-effect and swaylock versions.
swaylock-effects | swaylock (original) |
---|---|
1.6-0 | 1.5 |
1.6-1 | 1.5-7-ga99afe6a |
1.6-2 | 1.5-9-g235b925d |
1.6-3 | 1.5-9-g235b925d |
1.6.10 | 1.6 |
1.6.11 | 1.6 |
1.7.0.0 | 1.7-8-gb4e3a2b |
The original mortie/swaylock-effects (now unmaintained) has been packaged for:
Install dependencies:
*Compile-time dep
**Optional: required for background images other than PNG
Run these commands:
meson build
ninja -C build
sudo ninja -C build install
On systems without PAM, you need to suid the swaylock binary:
sudo chmod a+s /usr/local/bin/swaylock
Swaylock will drop root permissions shortly after startup.
--effect-blur <radius>x<times>
: Blur the image.
<radius>
is a number specifying how big
the blur is, <times>
is a number which specifies essentially how high quality the blur is
(i.e how closely the effect will resemble a true gaussian blur).
--effect-pixelate <factor>
: Pixelate the image.
<factor>
is the amount of pixelation; a value of 10 will make each 10x10 square of pixels
the same color.
--effect-scale <scale>
: Scale the image by a factor.
This effect scales the internal buffer. This has a few uses:
--effect-scale
in combination with --scaling
to create a zoom effect:
--efect-scale 1.1 --scaling center
--effect-scale 0.5 --effect-blur 7x5 --effect-scale 2
, swaylock-effect needs to blur
only 1/4 as many pixels.--effect-greyscale
: Make the displayed image greyscale.
--effect-vignette <base>:<factor>
: Apply a vignette effect.
Base and factor should be between 0 and 1.
--effect-compose "<position>;<size>;<gravity>;<path>"
: Overlay another image to your lock screen.
<position>
: Optional. The position on the screen to put the image, as <x>,<y>
.
10%,10%
), a number of pixels (20,20
), or a mix (30%,40
).-1,-1
would be the bottom right pixel.50%,50%
.<size>
: Optional. The size of the image on the screen, as <w>x<h>
.
10%x10%
), a number of pixels (20x20
), or a mix (30%x40
).-1
, the width is figured out based on the height and aspect ratio.-1
, the height is figured out based on the width and aspect ratio.<gravity>
: Optional. Determine which point of the image is placed at <position>
.
center
, north
, south
, west
, east
,
northwest
, northeast
, southwest,
southeast`.<gravity>
of northwest
, <position>
gives the location of the top/left
corner of the image; with southeast
, <position>
controls the bottom/right corner,
center
controls the middle of the image, etc.center
if no <position>
is given; otherwise, intelligently decide a gravity
based on position (10,10
-> northwest, -10,10
-> northeast, etc).<path>
: The path to an image file.This command requires swaylock-effects to be compiled with gdk-pixbuf2. It supports all image formats gdk-pixbuf2 supports; on my system, that's png, jpeg, gif, svg, bmp, ico, tiff, wmf, ani, icns, pnm, qtif, tga, xbm and xpm.
--effect-custom <path>
: Load a custom effect from a shared object.
The .so must export a function void swaylock_effect(uint32_t *data, int width, int height)
or a function uint32_t swaylock_pixel(uint32_t pix, int x, int y, int width, int height)
.