On 25/12/2022 20:23:59, Yves-Alexis Perez wrote:
control: tag -1 unreproducible moreinfo
On Fri, 2022-12-23 at 13:38 +0100, Sébastien Dufromentel wrote:
> Since the 4.18, it looks like Xfwm ignore such property: when I
maximize some
> windows, they take the whole screen size and thus cover those
reserved spaces,
> which is a bit problematic. The other WM I have on this computer,
Compiz and
> Sawfish, still reserve space perfectly. I rollbacked to 4.16 using
the bullseye
> package, and it works again too, so it looks like something very
specific to
> this version of this particular WM.
Hi Sébastien, could you add more details on your configuration and
especially
which applications use those reserved spaces? I didn't experience
this issue
here at least with a standard Xfce desktop (so with xfce4-panel).
Regards,
--
Yves-Alexis
Hi there, sorry for the response delay.
I indeed use a custom environment with Xfwm and not the classical Xfce.
I just launch xfwm4 and some hand-made applications at startup through
a ~/.xsession script.
Here's attached a minimal script (using Python3/Xlib) to create a panel
window reserving space at the top of the screen. When Xfwm 4.16 (or any
other classical WM) is running in a standalone way, space is indeed
avoided by the maximized window, so we have the panel and the maximized
window's titlebar next to each other; but when Xfwm 4.18 is running,
strut is ignored and the panel and the maximized window's titlebar end
at the exact same location.
Hope it'll help.
Regards,
#! /bin/python3
# coding: Utf-8
import time, array
import Xlib.display
disp = Xlib.display.Display()
screen = disp.screen()
geom = screen.root.get_geometry()
panel = screen.root.create_window(0, 0, geom.width, 24, 0,
screen.root_depth, background_pixel=0xFF00FF00)
panel.change_property(disp.intern_atom("_NET_WM_WINDOW_TYPE"),
disp.intern_atom("ATOM"), 32, array.array("I",
(disp.intern_atom("_NET_WM_WINDOW_TYPE_DOCK"),)))
panel.change_property(disp.intern_atom("_NET_WM_STRUT"),
disp.intern_atom("CARDINAL"), 32, array.array("I", (0, 0, 24, 0)))
panel.map()
while True:
while disp.pending_events() > 0:
ev = disp.next_event()
time.sleep(0.01)