Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fingerprint support #283

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open

Fingerprint support #283

wants to merge 13 commits into from

Conversation

SL-RU
Copy link

@SL-RU SL-RU commented Jan 29, 2023

I've added fingerprint support via fprintd daemon which has DBus communication and because of that build dependencies was added(dbus, gio, fprintd and etc), but they are not required for execution. To run swaylock with fprintd you need to start fprintd and then swaylock with argument -p or --fingerprint

Can you make a review and say is merge possible?

Package with fingerprint support on AUR: https://aur.archlinux.org/packages/swaylock-fprintd-git

This relates to #61

@SL-RU
Copy link
Author

SL-RU commented Jan 29, 2023

CI (builds.sr.ht) compiles wrong version. It seems it compiles only master, not selected commit. Is it okay?

@emersion
Copy link
Member

Hm, do we really all of this complexity? I'd rather not do any of the D-Bus stuff. Can't users leverage a PAM module which integrates with the fingerprint reader instead?

@SL-RU
Copy link
Author

SL-RU commented Jan 30, 2023

Hm, do we really all of this complexity? I'd rather not do any of the D-Bus stuff. Can't users leverage a PAM module which integrates with the fingerprint reader instead?

Yes, we want to check password and fingerprint in parallel. With Pam closest solution is check fingerprint after empty password was entered.

With this MR we can touch fingerprint scanner while PC is asleep, it will wake up over USB and immediately unlock without necessety to press any button.

@emersion
Copy link
Member

I am not sure I want to maintain this upstream.

@SL-RU
Copy link
Author

SL-RU commented Jan 30, 2023

I am not sure I want to maintain this upstream.

Okay, I'll maintain it as a fork

@lack
Copy link

lack commented Feb 21, 2023

I was curious about the fork, @SL-RU : does it need to be tightly integrated with the code of swaylock? Or can it be a separate stand-alone program that interfaces just with the new wlroots lock protocol, and run in parallel with swaylock?

@SebTM
Copy link

SebTM commented Apr 16, 2023

I am not sure I want to maintain this upstream.

Really sad to hear that, the new implementation is really awesome for daily users. Would it be an option to make @SL-RU a maintainer so that it's included but mostly maintained by him if he is even ok with maintaining a fork?

Deleted my last comment after that as it was an system-issue not related to the code/fork.

@paulodiovani
Copy link

I was curious about the fork, @SL-RU : does it need to be tightly integrated with the code of swaylock? Or can it be a separate stand-alone program that interfaces just with the new wlroots lock protocol, and run in parallel with swaylock?

If this works like a plugin it would be great. I already use https://github.com/mortie/swaylock-effects.
I would love to see these forks integrated into the main project without compromising its core features.

@SL-RU
Copy link
Author

SL-RU commented Jun 15, 2023

@lack @paulodiovani currently code is tightly integrated with swaylock, but mainly just for indication. It can be separated into separate service. What is new wlroots lock protocol? How swaylock uses it and how fprintd service will interact with it?

@kennylevinsen
Copy link
Member

What is new wlroots lock protocol? How swaylock uses it and how fprintd service will interact with it?

ext-session-lock-v1, already implemented in swaylock and only affects how lock screens open a lock surface.

@lack
Copy link

lack commented Jun 21, 2023

I guess what I was thinking of may not even need any knowledge of the lock protocol; but instead of implementing the fingerprint integrated into swaylock it could be an external program that:

  • Takes swaylock (or any swaylock variant) plus arguments on its commandline
  • Starts listening for fingerprints
  • Spawns the swaylock command it was given as a child process

Then:

  • If the fingerprint unlock succeeds, it can simply send a SIGUSR1 to the swaylock it spawned which will cause it to unlock
  • If the child process exits, assume it was unlocked some other way and exit

The only thing lost in this approach is a way to have user feedback in swaylock itself if the fingerprint read was attempted and failed...

@SL-RU

@WhyNotHugo
Copy link
Contributor

Can't users leverage a PAM module which integrates with the fingerprint reader instead?

The PAM fingerprint module (from libfprint) relies on libfprintd which depends on polkit which requires systemd. So it's not portable and won't work on many configurations.

That said, this implementation relies on fprintd, so it suffers from the same limitations.

I do think that the approach mentioned by @lack makes a lot of sense. I wonder if we could use SIGUSR2 to signal to the user "failed attempt" for out-of-band unlock attempts.

@SebTM
Copy link

SebTM commented Sep 2, 2023

I wonder if we could use SIGUSR2 to signal to the user "failed attempt" for out-of-band unlock attempts.

Hey, I tried to implement this - it generally works but I sometimes get random crashes (after more than one SIGUSR2 signals) and tried to debug it with the swaylock-logged script I found in another issue.

Current Status: https://github.com/SebTM/swaylock/tree/feature/sigusr2
PR: #311

#!/bin/sh
(echo -e "\n\nStarting swaylock:\n"; WAYLAND_DEBUG=1 ./build/swaylock -F 2>&1 | sed  's/\[.......\....\]/\[XXXXXXX.YYY\]/') | grep -v keyboard | grep -v pointer >> swaylock_logfile

Log from a crash:

Starting swaylock:

[XXXXXXX.YYY]  -> wl_display@1.get_registry(new id wl_registry@2)
[XXXXXXX.YYY]  -> wl_display@1.sync(new id wl_callback@3)
[XXXXXXX.YYY] wl_display@1.delete_id(3)
[XXXXXXX.YYY] wl_registry@2.global(1, "wl_shm", 1)
[XXXXXXX.YYY]  -> wl_registry@2.bind(1, "wl_shm", 1, new id [unknown]@4)
[XXXXXXX.YYY] wl_registry@2.global(2, "wl_drm", 2)
[XXXXXXX.YYY] wl_registry@2.global(3, "zwp_linux_dmabuf_v1", 4)
[XXXXXXX.YYY] wl_registry@2.global(4, "wl_compositor", 5)
[XXXXXXX.YYY]  -> wl_registry@2.bind(4, "wl_compositor", 4, new id [unknown]@5)
[XXXXXXX.YYY] wl_registry@2.global(5, "wl_subcompositor", 1)
[XXXXXXX.YYY]  -> wl_registry@2.bind(5, "wl_subcompositor", 1, new id [unknown]@6)
[XXXXXXX.YYY] wl_registry@2.global(6, "wl_data_device_manager", 3)
[XXXXXXX.YYY] wl_registry@2.global(7, "zwlr_gamma_control_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(8, "zxdg_output_manager_v1", 3)
[XXXXXXX.YYY] wl_registry@2.global(9, "org_kde_kwin_idle", 1)
[XXXXXXX.YYY] wl_registry@2.global(10, "ext_idle_notifier_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(11, "zwp_idle_inhibit_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(12, "zwlr_layer_shell_v1", 4)
[XXXXXXX.YYY] wl_registry@2.global(13, "xdg_wm_base", 2)
[XXXXXXX.YYY] wl_registry@2.global(14, "zwp_tablet_manager_v2", 1)
[XXXXXXX.YYY] wl_registry@2.global(15, "org_kde_kwin_server_decoration_manager", 1)
[XXXXXXX.YYY] wl_registry@2.global(16, "zxdg_decoration_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(19, "wp_presentation", 1)
[XXXXXXX.YYY] wl_registry@2.global(20, "zwlr_output_manager_v1", 4)
[XXXXXXX.YYY] wl_registry@2.global(21, "zwlr_output_power_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(22, "zwp_input_method_manager_v2", 1)
[XXXXXXX.YYY] wl_registry@2.global(23, "zwp_text_input_manager_v3", 1)
[XXXXXXX.YYY] wl_registry@2.global(24, "zwlr_foreign_toplevel_manager_v1", 3)
[XXXXXXX.YYY] wl_registry@2.global(25, "ext_session_lock_manager_v1", 1)
[XXXXXXX.YYY]  -> wl_registry@2.bind(25, "ext_session_lock_manager_v1", 1, new id [unknown]@7)
[XXXXXXX.YYY] wl_registry@2.global(26, "wp_drm_lease_device_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(27, "zwlr_export_dmabuf_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(28, "zwlr_screencopy_manager_v1", 3)
[XXXXXXX.YYY] wl_registry@2.global(29, "zwlr_data_control_manager_v1", 2)
[XXXXXXX.YYY] wl_registry@2.global(30, "zwp_primary_selection_device_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(31, "wp_viewporter", 1)
[XXXXXXX.YYY] wl_registry@2.global(32, "wp_single_pixel_buffer_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(33, "zxdg_exporter_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(34, "zxdg_importer_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(35, "zxdg_exporter_v2", 1)
[XXXXXXX.YYY] wl_registry@2.global(36, "zxdg_importer_v2", 1)
[XXXXXXX.YYY] wl_registry@2.global(37, "xdg_activation_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(40, "zwlr_input_inhibit_manager_v1", 1)
[XXXXXXX.YYY] wl_registry@2.global(42, "wl_seat", 8)
[XXXXXXX.YYY]  -> wl_registry@2.bind(42, "wl_seat", 4, new id [unknown]@8)
[XXXXXXX.YYY] wl_registry@2.global(44, "wl_output", 4)
[XXXXXXX.YYY]  -> wl_registry@2.bind(44, "wl_output", 4, new id [unknown]@9)
[XXXXXXX.YYY] wl_callback@3.done(621)
[XXXXXXX.YYY]  -> ext_session_lock_manager_v1@7.lock(new id ext_session_lock_v1@3)
[XXXXXXX.YYY]  -> wl_display@1.sync(new id wl_callback@10)
[XXXXXXX.YYY] wl_display@1.delete_id(10)
[XXXXXXX.YYY] wl_seat@8.name("seat0")
[XXXXXXX.YYY] wl_seat@8.capabilities(3)
[XXXXXXX.YYY] wl_output@9.geometry(0, 0, 280, 190, 0, "BOE", "0x095F", 0)
[XXXXXXX.YYY] wl_output@9.mode(1, 2256, 1504, 59999)
[XXXXXXX.YYY] wl_output@9.scale(2)
[XXXXXXX.YYY] wl_output@9.name("eDP-1")
[XXXXXXX.YYY] wl_output@9.description("BOE 0x095F (eDP-1)")
[XXXXXXX.YYY] wl_output@9.done()
[XXXXXXX.YYY] ext_session_lock_v1@3.locked()
[XXXXXXX.YYY] wl_callback@10.done(624)
[XXXXXXX.YYY]  -> wl_compositor@5.create_surface(new id wl_surface@10)
[XXXXXXX.YYY]  -> wl_compositor@5.create_surface(new id wl_surface@13)
[XXXXXXX.YYY]  -> wl_subcompositor@6.get_subsurface(new id wl_subsurface@14, wl_surface@13, wl_surface@10)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_sync()
[XXXXXXX.YYY]  -> ext_session_lock_v1@3.get_lock_surface(new id ext_session_lock_surface_v1@15, wl_surface@10, wl_output@9)
[XXXXXXX.YYY]  -> wl_compositor@5.create_region(new id wl_region@16)
[XXXXXXX.YYY]  -> wl_region@16.add(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@10.set_opaque_region(wl_region@16)
[XXXXXXX.YYY]  -> wl_region@16.destroy()
[XXXXXXX.YYY] wl_display@1.delete_id(16)
[XXXXXXX.YYY] ext_session_lock_surface_v1@15.configure(625, 1804, 1203)
[XXXXXXX.YYY]  -> ext_session_lock_surface_v1@15.ack_configure(625)
[XXXXXXX.YYY]  -> wl_surface@10.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_shm@4.create_pool(new id wl_shm_pool@16, fd 10, 34723392)
[XXXXXXX.YYY]  -> wl_shm_pool@16.create_buffer(new id wl_buffer@17, 0, 3608, 2406, 14432, 0)
[XXXXXXX.YYY]  -> wl_shm_pool@16.destroy()
[XXXXXXX.YYY]  -> wl_surface@10.attach(wl_buffer@17, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@10.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY]  -> wl_buffer@17.destroy()
[XXXXXXX.YYY]  -> wl_shm@4.create_pool(new id wl_shm_pool@18, fd 11, 234256)
[XXXXXXX.YYY]  -> wl_shm_pool@18.create_buffer(new id wl_buffer@19, 0, 242, 242, 968, 0)
[XXXXXXX.YYY]  -> wl_shm_pool@18.destroy()
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] discarded [unknown]@17.[event 0](0 fd, 8 byte)
[XXXXXXX.YYY] wl_display@1.delete_id(16)
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@18)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_callback@18.done(2009114)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@18)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_callback@18.done(2009136)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@18)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_callback@18.done(2009161)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@18)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_callback@18.done(2009169)
[XXXXXXX.YYY] wl_seat@8.capabilities(2)
[XXXXXXX.YYY] wl_seat@8.capabilities(0)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(11)
[XXXXXXX.YYY] wl_display@1.delete_id(12)
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2010663)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_callback@17.done(2010664)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2019172)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_callback@17.done(2019181)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2020672)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_callback@17.done(2020673)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2021404)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_callback@17.done(2021407)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_seat@8.capabilities(2)
[XXXXXXX.YYY] wl_seat@8.capabilities(3)
[XXXXXXX.YYY] wl_callback@17.done(2024594)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] discarded [zombie]@18.[event 0](1 fd, 16 byte)
[XXXXXXX.YYY] discarded [zombie]@18.[event 5](0 fd, 16 byte)
[XXXXXXX.YYY] discarded [zombie]@18.[event 1](0 fd, 20 byte)
[XXXXXXX.YYY] discarded [zombie]@18.[event 4](0 fd, 28 byte)
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2024602)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026289)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026312)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026331)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026345)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026931)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026954)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026971)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2026988)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027012)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027021)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027052)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_callback@17.done(2027055)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027092)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027104)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027132)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027137)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027172)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027188)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2027212)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_seat@8.capabilities(2)
[XXXXXXX.YYY] wl_seat@8.capabilities(0)
[XXXXXXX.YYY] wl_callback@17.done(2027355)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(12)
[XXXXXXX.YYY] wl_display@1.delete_id(11)
[XXXXXXX.YYY] wl_display@1.delete_id(18)
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_callback@17.done(2027358)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_callback@17.done(2028833)
[XXXXXXX.YYY]  -> wl_surface@10.frame(new id wl_callback@17)
[XXXXXXX.YYY]  -> wl_subsurface@14.set_position(843, 541)
[XXXXXXX.YYY]  -> wl_surface@13.set_buffer_scale(2)
[XXXXXXX.YYY]  -> wl_surface@13.attach(wl_buffer@19, 0, 0)
[XXXXXXX.YYY]  -> wl_surface@13.damage_buffer(0, 0, 2147483647, 2147483647)
[XXXXXXX.YYY]  -> wl_surface@13.commit()
[XXXXXXX.YYY]  -> wl_surface@10.commit()
[XXXXXXX.YYY] wl_display@1.delete_id(17)
[XXXXXXX.YYY] wl_buffer@19.release()
[XXXXXXX.YYY] wl_callback@17.done(2028834)

Maybe someone can have a look as my C skills are very elementary...
Edit: Also already have a working (but needs some cleanup) wrapper-app (starting/sending SIGUSR1 to swaylock) handling fingerprint auth in go via dbus.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants