GTK-based lockscreen for Wayland

Overview

gtklock

GTK-based lockscreen for Wayland.

screenshot

About

gtklock is based on gtkgreet. It uses the wlr-layer-shell and wlr-input-inhibitor Wayland protocols and works and sway and other wlroots-based compositors.

Available on these repositories:

Packaging status

Usage

  • Lock screen: $ gtklock
  • Lock screen and daemonize: $ gtklock -d
  • Example style with background: $ gtklock -s ./assets/example-style.css
  • Show help options: $ gtklock -h

Building from source

$ make
$ make install

Dependencies

  • gtk+3.0
  • gtk-layer-shell
  • wayland-client
  • PAM
Comments
  • Flash of desktop screen on laptop resume

    Flash of desktop screen on laptop resume

    Hey,

    Gtklock working pretty great for me. However, if I shut my laptop screen and allow it to suspend, when I come back, I get a flash of my desktop windows before gtlock renders itself.

    Here is my swayidle configuration:

    exec swayidle -w \
             timeout 300   'gtklock -d -s ~/.config/gtklock/style.css' \
             timeout 600   'swaymsg "output * dpms off"' \
             resume        'swaymsg "output * dpms on"' \
             after-resume  'gtklock -d -s ~/.config/gtklock/style.css'
    

    I did have that after-resume line as before-sleep at one point, but that failed to invoke gtlock all together.

    opened by ldelossa 26
  • account locked for no reason

    account locked for no reason

    This happens to me on the random basis:

    image

    Last night and 4 times tonight, out of nowhere, I had my account blocked for 10 minutes. I was playing with changing user images, using in turns mugshot and swaysettings, and also deleting images manually. No idea if it matters. I remember having a similar incident at the office, on some older gtklock version. I'm pretty sure I entered my password correctly every time, and 100% sure that I couldn't misspell it 3 times.

    $ gtklock -i -m userinfo-module
    
    ** (gtklock:280886): WARNING **: 02:53:06.671: gtk-layer-shell v0.7.0 may not work on GTK v3.24.34. If you experience crashes, check https://github.com/wmww/gtk-layer-shell/blob/master/compatibility.md
    
    (gtklock:280886): GLib-CRITICAL **: 02:53:06.703: g_key_file_load_from_file: assertion 'file != NULL' failed
    
    (gtklock:280886): GLib-GObject-CRITICAL **: 03:03:05.260: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
    

    Both ~/.face and /var/lib/AccountsService/icons/piotr are present at the moment.

    opened by nwg-piotr 18
  • No longer see messages in gtklock

    No longer see messages in gtklock

    Hello,

    I got a new laptop today and installed gtklock. Everything works as expected except for the messages shown when attempting a fingerprint scan. Any changes on gtklock's end that would cause this?

    opened by ldelossa 13
  • Wallpaper image with multiple monitors

    Wallpaper image with multiple monitors

    When using a wallpaper image on the lock screen and then plugging in one or more monitors with different resolutions the image rendering on the external monitors does not take the size difference into account. This results in the image being stretched correctly on the laptop monitor, but does not stretch correctly on external monitors with larger resolutions.

    opened by ldelossa 13
  • [AUR] `gtklock` / `gtklock-userinfo-module` dependecy version mismatch

    [AUR] `gtklock` / `gtklock-userinfo-module` dependecy version mismatch

    Hi @jovanlanik! Could you please take a closer look at the gtklock-userinfo-module PKGBUILD -> gtklock version required? Attempt to upgrade, having both packages installed, ends up in:

    (...)
    resolving dependencies...
    looking for conflicting packages...
    error: failed to prepare transaction (could not satisfy dependencies)
    :: installing gtklock (1.3.5-1) breaks dependency 'gtklock=1.3.4' required by gtklock-userinfo-module
    ==> WARNING: Failed to install built package(s).
    ==> Cleaning up...
    :: Cloning gtklock-userinfo-module package repo...
    Cloning into 'gtklock-userinfo-module'...
    remote: Enumerating objects: 19, done.
    remote: Counting objects: 100% (19/19), done.
    remote: Compressing objects: 100% (14/14), done.
    remote: Total 19 (delta 5), reused 19 (delta 5), pack-reused 0
    Receiving objects: 100% (19/19), done.
    Resolving deltas: 100% (5/5), done.
    ==> Making package: gtklock-userinfo-module 1.3.5-1 (Mon Sep  5 08:21:24 2022)
    ==> Checking runtime dependencies...
    ==> Installing missing dependencies...
    error: target not found: gtklock=1.3.5
    ==> ERROR: 'pacman' failed to install missing dependencies.
    ==> Missing dependencies:
      -> gtklock=1.3.5
    ==> Checking buildtime dependencies...
    ==> ERROR: Could not resolve all dependencies.
    

    full output here

    So, the only way to upgrade it is to uninstall gtklock-userinfo-module temporarily.

    opened by nwg-piotr 10
  • Can't compile on ARM64

    Can't compile on ARM64

    Trying to compile on PostmarketOS on ARM64 and I get a pkg-config error that says PAM is not found even though I have the linux-pam and linux-pam-dev packages installed

    opened by Keksimus69 10
  • Fingerprint Support

    Fingerprint Support

    Hey there. GTKLock looks awesome. However, would it be possible to support libfprint finger print? Ideally, this setup works very nicely for swaylock: https://github.com/swaywm/swaylock/issues/61#issuecomment-965175390

    opened by ldelossa 10
  • initially hide the form when the `-b`ackground image used

    initially hide the form when the `-b`ackground image used

    Thank you for adding the -b flag. It looks superb.

    I think it would look even better if the clock, the password label and the unlock button were initially hidden, and show up on a key or button event.

    Thank you for your work, it goes well with what I'm working on.

    opened by nwg-piotr 9
  • per monitor background image

    per monitor background image

    Is there a way to define a background image per monitor? Like so in css: window#DP-1 {} or window.HDMI-A-1 {}

    Or a way for a single background to span across monitors. So you could do smth like this:

    grim /tmp/lock.png
    corrupter -mag 1 -boffset 3 -meanabber 1 /tmp/lock.png /tmp/lock.png
    gtklock -s style.css
    
    opened by Hippo0o 8
  • Crash when disabling display

    Crash when disabling display

    If you disable a display, for example when you connect your laptop to an external display, gtklock will crash, leaving the session unlocked.

    How to reproduce: Run gtklock &!; sleep 2; swaymsg output eDP-1 disable; sleep 2; swaymsg output eDP-1 enable

    opened by trbjo 8
  • Support Yubikey Challenge Response Login

    Support Yubikey Challenge Response Login

    Attempting this in my gtklock pam file:

    auth            sufficient      pam_yubico.so mode=challenge-response chalresp_path=/etc/yubico
    

    https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html

    This currently works in sudo pam file. However, gtklock seems to always report login failed if this is present.

    You can add a debug flag to the pam module options, to try to determine why it failed, but this causes gtklock to segfault.

    opened by ldelossa 7
  • Failed howdy authentication causes core dump

    Failed howdy authentication causes core dump

    I'm currently trying to get howdy and gtklock to play nicely together but have noticed that a failed auth attempt with howdy (so letting it timeout) causes gtklock to seg fault. Successful authentication with howdy works fine. Not sure if this is better posted upstream but figured I'd start here.

    Some useful info: I'm running sway on Linux 5.19.11-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 24 Sep 2022 18:24:15 +0000

    Have howdy plugged into pam and gtklock as follows: /etc/pam.d/login

    #%PAM-1.0
    
    auth       sufficient   pam_unix.so try_first_pass likeauth nullok
    auth       sufficient   pam_python.so /lib/security/howdy/pam.py
    auth       required     pam_securetty.so
    auth       requisite    pam_nologin.so
    auth       include      system-local-login
    auth       optional     pam_gnome_keyring.so
    account    include      system-local-login
    session    include      system-local-login
    session    optional     pam_gnome_keyring.so auto_start
    password   include      system-local-login
    

    Steps to reproduce:

    • Add howdy to pam.d/login
    • Run gtklock
    • Trigger auth attempt by leaving password empty
    • Let attempt timeout
    opened by mlbullett 0
  • Rofi launches on top of gtklock

    Rofi launches on top of gtklock

    I run rofi and then launch gtklock, rofi stays on top of gtklock and allows me to kill gtklock. I'm not sure if this is a security vulnerability but just wanted you to let you know.

    opened by MelihDarcanxyz 2
Releases(v2.0.1)
Owner
Jovan Lanik
Jovan Lanik
Embedded Flutter runtime targeting Embedded Linux with Wayland

ivi-homescreen IVI Homescreen for Wayland Strongly Typed (C++) Lightweight Clang 11 Release Stripped = 151k GCC 9.3 Release Stripped = 168k Source run

null 170 Dec 1, 2022
way-displays: Manage Your Wayland Displays

way-displays: Manage Your Wayland Displays Sets preferred mode or highest at maximum refresh Arranges left to right Auto scales based on DPI: 96 is a

Alexander Courtis 69 Oct 27, 2022
A friendly C++ library to create Wayland Compositors.

A friendly C++ library to create Wayland compositors that runs directly on top of DRM.

Eduardo Hopperdietzel 5 Nov 23, 2022
Extremely minimal raw Wayland greeter for greetd.

greetd-mini-wl-greeter An extremely simple raw Wayland greeter for greetd, inspired by lightdm-mini-greeter. Usage Follow the same steps as for e.g. g

Philip Jones 19 Nov 22, 2022
Uma prova de conceito para mostrar como rodar código nativo GTK dentro do Qt Framework :)

QTK Uma prova de conceito para mostrar como rodar código nativo GTK dentro do Qt Framework :) Nota: Como toda PoC que se preze esse projeto está incri

Natanael 1 Nov 27, 2021
C++ - Gtk - Granite - Flatpak

Description ElementaryCpp is a template for eOS applications, meaning that it's built over Gtkmm and C++17. Features GSchema Support ElementaryOS 6 Da

Jeyson Flores 8 Feb 26, 2022
Language that provides an abstraction to a PART of GTK difficulty

Welcome to GPP_COMPILER Language that provides an abstraction to a PART of GTK difficulty . To get projet on your computer, clone it using the followi

null 9 Jan 28, 2022
FFF is a decentralized blockchain based on IPFS/RIPPLE, which integrates lua virtual machine-based smart contracts.

FFF is a decentralized blockchain based on IPFS/RIPPLE, which integrates lua virtual machine-based smart contracts. It is also a software platform designed to help coordinate voluntary free market operations amongst a set of social actors.

gen2600 6 Oct 24, 2022
An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.

Physically Based Rendering (c) 2017 - 2018 Michał Siejak (@Nadrin) An implementation of physically based shading model & image based lighting in vario

Michał Siejak 1.1k Nov 26, 2022
Scrollytroller is a crank-based USB controller, initially inteneded for use with Playdate's Pulp web-based game development tool

Scrollytroller Scrollytroller is a crank-based USB controller, initially inteneded for use with Playdate's Pulp web-based game development tool. This

Scott Lawrence 4 Feb 17, 2022
A Navigator 2.0 based Flutter widget that automatically splits the screen into two views based on available space

A Navigator 2.0 based Flutter widget that automatically splits the screen into two views based on available space

null 5 Sep 17, 2022
A CUDA-accelerated cloth simulation engine based on Extended Position Based Dynamics (XPBD).

Velvet Velvet is a CUDA-accelerated cloth simulation engine based on Extended Position Based Dynamics (XPBD). Why another cloth simulator? There are a

Vital Chen 37 Nov 21, 2022
QtVerbalExpressions - This Qt lib is based off of the C++ VerbalExpressions library. [MIT]

QtVerbalExpressions Qt Regular Expressions made easy This Qt lib is based off of the C++ VerbalExpressions library by whackashoe. Testing if we have a

null 57 Nov 24, 2022
Updated version of Silicos-it's shape-based alignment tool

shape-it Description Code for shape-it with openbabel3 and rdkit INSTALL Following example is the basic way to install the tool: git clone https://git

RDKit 24 Nov 3, 2022
ESP32 based DIY word clock project

Wordclock ESP32 based DIY wordclock project TL;DR: check out this ✨ demo video ✨ Another take on the classic DIY word clock. This one requires a laser

null 39 Nov 9, 2022
A USB-PD sniffer/injector/sink based on Google's Twinkie, re-designed to be manufactured by mere mortals.

Twonkie - a USB-PD sniffer based on Google's Twinkie Twonkie is a USB-PD sniffer/injector/sink based on a Google project called Twinkie, re-engineered

Joachim Fenkes 96 Dec 1, 2022
CQC (Charmed Quark Controller) a commercial grade, full featured, software based automation system. CQC is built on our CIDLib C++ development system, which is also available here on GitHub.

The CQC Automation System What It Is CQC is a commercial quality, software based automation system, suitable for residential or commercial application

Dean Roddey 60 Oct 2, 2022
Experimental telegram client based on official Android sources

Catogram Experimental telegram client based on official Android sources Catogram features: Message translator TGX Style of context menu VKUI Icons and

null 185 Nov 22, 2022
A USB-PD sniffer/injector/sink based on Google's Twinkie, re-designed to be manufactured by mere mortals.

Twonkie - a USB-PD sniffer based on Google's Twinkie Twonkie is a USB-PD sniffer/injector/sink based on a Google project called Twinkie, re-engineered

Joachim Fenkes 96 Dec 1, 2022