diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 878be36d..bacec687 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -9,7 +9,7 @@ jobs:
steps:
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/v3.22/community' > /etc/apk/repositories
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/v3.22/main' >> /etc/apk/repositories
- - run: apk --no-cache add git g++ binutils pkgconf meson ninja musl-dev gtkmm4-dev vala gobject-introspection gobject-introspection-dev pulseaudio-dev wireplumber-dev libdbusmenu-glib-dev alsa-lib-dev yyjson-dev
+ - run: apk --no-cache add git g++ binutils pkgconf meson ninja musl-dev gtkmm4-dev vala gobject-introspection gobject-introspection-dev pulseaudio-dev wireplumber-dev libdbusmenu-glib-dev alsa-lib-dev yyjson-dev linux-pam-dev util-linux-login openssl-dev
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
- run: echo 'http://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories
- run: apk --no-cache add wayland-protocols wayfire-dev gtk4-layer-shell-dev gtk4-layer-shell
diff --git a/data/css/default.css b/data/css/default.css
index eed40763..a1005ba8 100644
--- a/data/css/default.css
+++ b/data/css/default.css
@@ -146,6 +146,39 @@
animation-fill-mode: forwards;
}
+.wf-locker .password{
+ padding: 10px;
+ border-radius: 10px;
+ background: #0004;
+}
+.wf-locker .fingerprint-overlay-image {
+ -gtk-icon-size: 64px;
+}
+.wf-locker .fingerprint-overlay-image.good {
+ color: #0f0;
+}
+.wf-locker .fingerprint-overlay-image.bad {
+ color: #f00;
+}
+.wf-locker .fingerprint-overlay-image.info {
+ color: #88f;
+}
+.wf-locker .mpris image.albumart {
+ -gtk-icon-size:96px;
+}
+.wf-locker .user image{
+ -gtk-icon-size:96px;
+}
+.wf-locker image.weather {
+ -gtk-icon-size:80px;
+ padding-left: 25px;
+ padding-right: 25px;
+ padding-bottom: 25px;
+}
+.wf-locker label.weather {
+ padding-left: 25px;
+}
+
@keyframes embiggen {
to {
-gtk-icon-size: 64px;
diff --git a/data/meson.build b/data/meson.build
index a06c63fb..e35455ef 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -1,5 +1,6 @@
install_data('wayfire.png', install_dir: icon_dir)
install_data('wallpaper.jpg', install_dir: resource_dir)
+install_data('wf-locker-pin.desktop', install_dir: join_paths(get_option('prefix'), 'share', 'applications'))
install_data(join_paths('icons', '48x48', 'wayfire.png'), install_dir: join_paths(get_option('prefix'), 'share', 'icons', 'hicolor', '48x48', 'apps'))
install_data(join_paths('icons', '64x64', 'wayfire.png'), install_dir: join_paths(get_option('prefix'), 'share', 'icons', 'hicolor', '64x64', 'apps'))
@@ -12,4 +13,6 @@ install_data(join_paths('icons', '256x256', 'wayfire.png'), install_dir: join_pa
install_data(join_paths('icons', '512x512', 'wayfire.png'), install_dir: join_paths(get_option('prefix'), 'share', 'icons', 'hicolor', '512x512', 'apps'))
install_data(join_paths('icons', 'scalable', 'wayfire.svg'), install_dir: join_paths(get_option('prefix'), 'share', 'icons', 'hicolor', 'scalable', 'apps'))
+install_data('wf-locker-password', install_dir:'/etc/pam.d/')
+
subdir('css')
\ No newline at end of file
diff --git a/data/wf-locker-password b/data/wf-locker-password
new file mode 100644
index 00000000..c1355e38
--- /dev/null
+++ b/data/wf-locker-password
@@ -0,0 +1 @@
+auth include login
diff --git a/data/wf-locker-pin.desktop b/data/wf-locker-pin.desktop
new file mode 100644
index 00000000..beffbf1b
--- /dev/null
+++ b/data/wf-locker-pin.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Exec=wf-locker-pin
+Icon=lock-symbolic
+Terminal=false
+Name=Wf Shell Change PIN
+Categories=Utility;Settings;DesktopSettings;
+NotShowIn=GNOME;KDE;
\ No newline at end of file
diff --git a/meson.build b/meson.build
index 50d6dc66..e472534f 100644
--- a/meson.build
+++ b/meson.build
@@ -14,6 +14,7 @@ project(
)
wayfire = dependency('wayfire')
+pam = dependency('pam')
wayland_client = dependency('wayland-client')
wayland_protos = dependency('wayland-protocols')
gtkmm = dependency('gtkmm-4.0', version: '>=4.12')
@@ -26,6 +27,7 @@ dbusmenu_gtk = dependency('dbusmenu-glib-0.4')
libgvc = subproject('gvc', default_options: ['static=true'], required: get_option('pulse'))
xkbregistry = dependency('xkbregistry')
json = subproject('wf-json').get_variable('wfjson')
+openssl = dependency('openssl')
if get_option('wayland-logout') == true
wayland_logout = subproject('wayland-logout')
diff --git a/metadata/background.xml.in b/metadata/background.xml.in
index be3f88e8..cdf9e6ce 100644
--- a/metadata/background.xml.in
+++ b/metadata/background.xml.in
@@ -21,6 +21,10 @@
<_short>Randomize
false
+