swaywm / swaylock

Screen locker for Wayland
MIT License
851 stars 202 forks source link

swaylock either migrated to another output or failed to catch hotplug on labwc #313

Open kode54 opened 1 year ago

kode54 commented 1 year ago

Running the following packages on Arch:

wlroots-hidpi-xprop-git 0.17.0.20230821.165609-1 labwc-wlroots-017-git 0.6.4.r57.gbd6efe4-1 swaylock 1.7.2-1 swayidle 1.8.0-1

The labwc package is basically Git version with labwc PR 626 applied to it.

The issue I'm having is that, if I boot up labwc with one display, lock the screen with swaylock, then plug in my second monitor, swaylock doesn't lock the newly attached monitor.

I also have a problem if I set up swayidle to invoke kanshi sighup to reset the scaling of my primary monitor, which defaults to 100% scaling when I want 200%. This results in swaylock migrating off it or failing to lock it, too.

No crashes logged.

kennylevinsen commented 1 year ago

Please retest with swaylock master, which would guarantee that ext-session-lock-v1 is used.

Locking with ext-session-lock is session-wide, not per monitor. Quoting the spec:

The locked event indicates that the session is locked. This means that the compositor must stop rendering and providing input to normal clients. Instead the compositor must blank all outputs with an opaque color such that their normal content is fully hidden.

If any regular content ever appears during lock, it is a bug in labwc. If the issue is just that the lock UI does not appear, this could be a bug in swaylock (or labwc). For the latter, collect a WAYLAND_DISPLAY=1 log - but please avoid typing your password as this would be included in the log.

kode54 commented 1 year ago

I tested 1.7.2 and 1.7.2.r8 from Git master, and both work with hotplugging the display. The problem comes when using an SSH session to rescale the output, which is similar to if I were to have my swayidle commandline for display power on so that it sends SIGHUP to Kanshi and restores my display scaling mode.

The log does seem to indicate that swaylock is doing the correct thing, and that labwc is at fault.

Here is the log anyway, it doesn't include any password. I wasn't able to type anything to the accessible desktop, because the session lock was still capturing the keyboard. I was, however, able to use the mouse to control my waybar, and also to command the desktop menu to terminate the labwc session.

https://gist.github.com/kode54/0af4fc82ff1957cd08604aab5bef5684