Uli Schlachter 60542da091
Do not "set" the wallpaper during startup (#4373)
"Set" the wallpaper during startup only sometimes

Since commit 4f5e0e7, i3 would take a screenshot and set that as the
background pixmap of the root window during startup. This is the easy
part of setting a proper X11 wallpaper.

The code in question was added because something either set the
background pixmap of the root window to NONE or the X11 server was
started with "-background none". This is apparently done by default by
e.g. gdm to avoid some flickering while the X11 server starts up.

This commit makes this code conditional: Only when no wallpaper is
detected is a screenshot taken.

Since I could not find any way to query the background of a window, a
more direct approach is taken to detect this situation: First, we find
some part of the root window that is not currently covered. Then we open
a white window there, close it again and grab a screenshot. If a
wallpaper is set, the X11 server will draw this wallpaper after the
window is closed and something else will be visible in the screenshot.

However, the wallpaper could have a white pixel at the tested position.
Thus, this procedure is repeated with a black window.

Only when this procedure produces two different pixel values is a
screenshot taken and set as the wallpaper.

Fixes: https://github.com/i3/i3/issues/4371
Fixes: https://github.com/i3/i3/issues/2869
Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-05-20 21:37:35 +02:00
2021-02-27 10:38:13 +01:00
2020-06-16 22:27:39 +02:00
2021-01-03 10:17:43 +01:00
2020-05-19 14:45:06 +02:00
2020-10-20 09:36:44 +02:00
2020-05-19 14:45:06 +02:00
2018-05-01 13:49:55 +03:00
2020-09-15 13:41:34 +00:00
2021-02-27 10:37:57 +01:00

Logo i3: A tiling window manager

Build Status Issue Stats Pull Request Stats

Packages Packages

i3 is a tiling window manager for X11.

For more information about i3, please see the project's website and online documentation.

For information about contributing to i3, please see CONTRIBUTING.md.

Description
No description provided
Readme 18 MiB
Languages
C 58.4%
Perl 36%
Raku 2.6%
Ruby 1.2%
Shell 0.7%
Other 1.1%