Version: (using KDE 4.3.1) Installed from: Ubuntu Packages Creating a chrome less window of size equal to your screen resolution creates a window of that size and covers the system task bar. The expectation is that the WM should restrict the size of the window to the screen's visible area. // make the window chrome less gtk_window_set_decorations(GTK_WINDOW(window), FALSE); gtk_window_show_all(window); // set the size equal to screen resolution (1400 x 1050 in my case) gtk_window_move(GTK_WINDOW(window), 0,0); gtk_window_resize(GTK_WINDOW(window), 1400, 1050); Result - The window covers the whole desktop including the task bar. Expected - The window should not cover the task bar, the WM should restrict the window size to visible area
why? you requested a specific (and sane) geometry (size and position) - so why should you get something else? (apps might have a good reason to set a specific default size that's not equal to a minimum/maximu/fixed size) just set the window to be maximized should do what you (probably) want and works on every desktop geometry. if this doesn't fit you, you can ask for the available desktop area (e.g. QDesktopWidget - I don't know the function for gtk+) and do some sophisticated geomtry calculations based on this information.
I just wanted to add that, we actually added a patch to "fix" this problem some time ago for Plasma Netbook Shell. We have not yet decided which behaviour will be in 4.4. An application without decoration and matching the screen geometry is treated as a fullscreen window. This is required to "fix" not NETWM compliant windows.
> Expected - The window should not cover the task bar, the WM should restrict the window size to visible area I doubt this is about the fullscreen issue. Afaiu the OP requests a geometry adjustment (though a specific geometry was requesteed by the app)
If I make these requests for a window with chrome (a decorated window), the KWIN restricts the size to the screen's visible area and creates a smaller window such that task bar is not hidden. Where as if I do the same for a non-decorated window, the task bar gets hidden. I did not call fullscreen, so why should it behave as fullscreen. Also why should there be difference in behavior of decorated and non-decorated window with respect to setting the size of the window. Also this might be a security issue where by any app could capture the whole screen area even though the user didn't want that. Generally when a window goes full screen, WM gives an option to bring the window out of fullscreen mode if the user wants that (irrespective of the app dev's choice). Thus generally no app can capture the wholse screen area without user's intent. But in this case, the non-decorated window would cover the wholse screen area. And even if the user wants to come out of this "fullscreen type" mode, he cant.
(In reply to comment #4) > Where as if I do the same for a non-decorated window, the task bar gets hidden. > I did not call fullscreen, so why should it behave as fullscreen. As mentioned in comment #2 this is a required feature to support legacy application which do not use NETWM. The current behaviour in trunk is changed. Your window would be below the taskbar not above.
When a window has a decoration it obeys decorated window rules; when it's undecorated it follows undecorated window rules. A decorated window relies on the titlebar to be visible to users so they can move the window around. This means if KWin detects if a titlebar is behind a panel the entire window is moved. If you had your panel on the bottom of the screen the window geometry would not have changed. As an undecorated window doesn't rely on a titlebar for the window to be moved (If it does there's nothing KWin can do anyway as it can't detect that...) KWin just leaves the window where it requested to be. This report is either INVALID or WONTFIX--I can't decide.
Hmm, I might have misread the report due to possibly-incorrect comments added by others. What exactly are you trying to achieve?
Rereading the report it seems comments 2+ are off-topic. Thomas's first reply is correct, if you don't want to cover the panel then don't request a geometry that does so as KWin is required to obey those requests according to the ICCCM standard (I'm assuming that GTK+ is using WM_SIZE_HINTS to set the initial geometry). The correct method would to be to query the window tree for strut areas (_NET_WM_STRUT_PARTIAL and _NET_WM_STRUT) and manually calculate the required geometry of your window. You cannot use _NET_WORKAREA as it doesn't take into account multi-monitor systems that have different sized monitors. I am uncertain as to whether or not GTK+ has a helper function for this or not.