swaywm / sway

i3-compatible Wayland compositor
https://swaywm.org
MIT License
14.67k stars 1.11k forks source link

swaylock allow popup to come through #1056

Closed benallard closed 6 years ago

benallard commented 7 years ago

VirtualBox likes to remember the user when a new version is available. Their popup come through swaylock, and pressing enter while the screen is locked does dismiss the popup. Afterward, it is not possible to login anymore.

Kunagi7 commented 7 years ago

A similar thing happens when I use stalonetray: stalonetray --window-type utility -bg "#073642" --geometry 4x1+60+1 -i 18 Because I need a system tray on sway since programs like telegram desktop, vlc or aimp [wine] use it. When I lock the screen the tray usually appears on top of swaylock and things like the number of messages from telegram can be seen on real time. Thankfully, it doesn't break unlocking.

minus7 commented 7 years ago

I've noticed that popups show ontop of swaylock too. In particular Thunderbird/Lightning reminders. Probably new-email-notifications too; I haven't seen it directly, but I noticed that after a while I couldn't log in anymore (no reaction to keyboard input).

"Luckily" you can just log into another vty and kill swaylock.

CedricCabessa commented 6 years ago

I confirm the bug, and I can not login anymore when a popup is shown on top of swaylock. It is easy to reproduce with a few line of python (pyqt) creating a modal window:

#!/usr/bin/env python3
import sys
from PyQt5 import QtCore, QtWidgets

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    win = QtWidgets.QMainWindow()
    dialog = QtWidgets.QDialog(win)
    dialog.setModal(True)
    dialog.exec_()

Then, in a terminal: swaylock & (sleep 5; ./modal.py)

I've a simple patch here https://github.com/CedricCabessa/sway/commit/d6cc6600d0e69d7ca84064e4ea94e89055a83a42 It is not complete as the modal window still pass through swaylock, but at least the window do not steal the focus and I can type my password. I didn't PR it as it is not complete and I'm not confortable with the meaning of the other type like WLC_BIT_OVERRIDE_REDIRECT

(my patch target 0.15)

ddevault commented 6 years ago

That seems like a good fix to me. Feel free to send it along.

ddevault commented 6 years ago

This will be addressed when wlroots is completed and integrated with sway.