Skip to content

Conversation

@aartamonau
Copy link
Contributor

Certain windows (especially notifications like notify-osd, etc) tend
to make their windows "override redirect". Such windows can't be
prevented from popping on top of slimlock. Previous approach of
handling this was to raise our window every second. This is definitely
better than nothing but potentially sensitive information is still
revealed for some time. And actually it didn't work at least for me
anyway: for some reason XRaiseWindow would not send Expose
event. Probably it has something to do with the fact that this
XRaiseWindow is send from another thread and Xlib is infamous for its
multithreading support. So the new approach is to handle
VisibilityNotify events and raise the window in case the event states
that our window is partially or fully obscured. This is still not
perfect since popping window will be seen as noticeable artifact. But
it seems that x11 does not give a way to handle it better.

@aartamonau
Copy link
Contributor Author

I just realized that it's not going to work with compositing enabled. So I should probably add a periodic call to XRaiseWindow as a fallback for such a case.

@aartamonau
Copy link
Contributor Author

Added another commit to raise window in the old way. Which is needed as I said above when compositing is enabled.

@wapiflapi
Copy link

Hi,

I know this has been made over a year ago, but as it is still open I thought I'dd my two cents here.

@joelburget is no longer maintaining this project. Maybe it would be a good idea to submit this pull request to @dannyn /slimlock ?

Certain windows (especially notifications like notify-osd, etc) tend
to make their windows "override redirect". Such windows can't be
prevented from popping on top of slimlock. Previous approach of
handling this was to raise our window every second. This is definitely
better than nothing but potentially sensitive information is still
revealed for some time. And it didn't work at least for me anyway: for
some reason XRaiseWindow would not send Expose event. Probably it has
something to do with the fact that this XRaiseWindow is send from
another thread and Xlib is infamous for its multithreading support. So
the new approach is to handle VisibilityNotify events and raise the
window in case the event states that our window is partially or fully
obscured. This is still not perfect since popping window will be seen
as noticeable artifact. But it seems that x11 does not give a way to
handle it better.
This change supplements a previous attempt to handle popping windows
better. I realized that approach based on mere handling of visibility
events doesn't work when compositing is enabled. Thus it's still
needed to raise slimlock window from time to time. So I added
`raise_interval' configuration option which specifies how often the
window must be raised (default value is every 1000ms). It's possible
to disable raising completely by setting `raise_interval' to
zero. Everything is implemented in a single thread to avoid notorious
Xlib multi-threading issues.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants