[kde-linux] Wandering panel (top of screen) in KDE-4.7.3 +
Duncan
1i5t5.duncan at cox.net
Thu Nov 17 14:50:47 UTC 2011
Dag Nygren posted on Thu, 17 Nov 2011 11:43:49 +0200 as excerpted:
> torsdag 17 november 2011 07:42:58 skrev James Tyrer:
>> I have had a panel at the top of the screen for some time now. It is
>> one of the few things that I like about GNOME.
>>
>> And now with 4.7.3, I find that if I set it to: "Auto-hide" that it
>> does not stay at the top of the screen when it unhides but rather takes
>> positions farther down the screen directly beneath other windows that
>> are open. This includes the vertical panel on (my) right that contains
>> nothing but a clock and a spacer.
>>
>> This is clearly some sort of REGRESSION, but I no longer report bugs
>> since the argument over fixing KDESU.
>
> Yes. I have the same thing. The regression is earlier than 4.7.3 though.
> I also entered this as a bug in KDE bugs.
Confirmed here as well. But for me and others, the bug first hit around
4.6.2. I actually bisected it down to a specific commit, and expected
that since it appeared in a bug-fix only release and I had bisected it to
a specific commit, the fix would appear within two such bugfix releases.
Seems I was wrong. The bug survives into 4.7 and continues to affect new
people.
That's actually a clue that something's triggering it, as is the fact
that when I forced the location using the below workaround for awhile,
eventually I could go without the workaround for awhile, until something
triggered it again...
The basic problem seems to be that kwin and plasma are fighting over what
X's "dock window type" means. Panels are normally dock-window-type,
which as the name implies, normally dock to a display edge. Only for
some reason, plasma seems to be overriding some property (they still say
dock window type, but...), and kwin is attempting to use its default
smart-window-placement for them. Thus, if there's already an existing
non-maximized window at the top left corner (which is the default
placement for the first window, so this isn't unusual) when the panel
appears (either at plasma startup or unhides if auto-hide was turned on),
kwin will treat the panel as a normal window and try to smart-place it to
avoid covering another window as much as possible, thus placing it below
and/or to the right of already existing windows.
There's apparently quite a few related existing bug reports on the same
general bug, in part because the behavior appears slightly different for
different people. As such, the same general workaround (as reported on
at least two of the bugs) applies, but it too must be slightly different
for different people, so some experimenting will likely be necessary.
Bugs:
(Someone else's)
Autohiding panel sometimes moves to middle of the screen when being viewed
https://bugs.kde.org/show_bug.cgi?id=272663
(Mine)
[Regression][Bisected]
4.6.1 to 4.6.2 libkdeinit4_plasma-desktop.so panel placement
https://bugs.kde.org/show_bug.cgi?id=271532
As you can see from the comments on mine, after I found the workaround
(below) and discovered that it seemed to work fine without the workaround
after awhile (so I thought it was fixed), I tried to close it, but others
said it was still happening to them on current versions, so I reopened.
Workaround:
I'd like to claim this as my idea but unfortunately can't. I don't
(didn't) normally think of panels as windows, so the thought of using
window rules didn't occur to me until I saw someone else post that it
worked for them in a comment on IIRC that first-listed bug. Never-the-
less, I had to modify the specifics to get it to work for me, so at least
part of the solution is mine. =:^)
Create a new window rule (kde settings, workspace appearance and
behavior, window behavior, window rules, or get to the same place using
the window menu on a normal window, configure window behavior, window
rules). Hit the new button.
In the resulting edit window-specific settings dialog, click the detect
window properties button, then click on the panel in question. (Note
that if you have the panel set to autohide, you may wish to temporarily
change it to always visible in ordered to make clicking on it easier.)
If you have multiple panels, you'll probably want the rule to only apply
to one. The distinction between panels is "Window Role", with
"panel_N" (where N is a number) being the role. Each panel has its own N-
number, so that's the critical bit to match if you only want it to apply
to one panel but you have several. So you want to match window class and
window role.
OK out of the picker dialog and check the rest of the window matching tab
(this GUI changed between 4.6 and 4.7, I'm describing 4.7, those still on
4.6 will have to adapt the instructions somewhat as a result, it's the
first two tabs, there, IIRC). In particular, you probably want to make
sure the rule only applies to the Dock (panel) window type, just in case
you somehow get a normal window that would otherwise match the rule. Set
the description to something else if you like, as well. (You may wish to
label it so you know what panel the settings are for, for instance, if
you have multiple panels.)
Once you have it setup to select the right window, you have to tell it
what to do with the window. In this case we'll be using the size and
position tab for that.
Here's where the bit of experimentation comes in. In the original bug
comment reporting this as a workaround, they said that setting initial
placement, force, no placement, worked for them. That didn't work for
me. Instead, I set position, force, 0,0 (thus the top left corner).
That's what worked for me.
That's the workaround. OK the dialog, hit apply in window rules, and see
if that fixes the problem for you.
Meanwhile, one caution. Using window rules like this by definition
overrides the normal application settings. In particular, if you force
the window position, as I did, attempting to move the panel to a
different screen edge using the normal plasma panel settings method isn't
going to work. You'll need to remember that you used a window rule to
force the position, and disable that first, if decide you want to move
the panel elsewhere. Because plasma isn't expecting to be overridden
like this, attempting to move the panel to a different edge with the rule
forcing the position may have "interesting" results.
Hope that helps. The workaround works fine for me. No more panels
moving around when I didn't move them! Just remember that you might need
a bit of experimentation to get it right. FWIW, no window placement, if
it works for you, is probably a safer alternative to the forced
positioning that worked for me, since the former interferes less with
plasma's internal expectations.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
More information about the kde-linux
mailing list