KWin's window-specific settings
Today, in one user forum, I noticed somebody saying that they use different virtual desktops for different things and therefore they'd want different panel for each desktop. Our bug #79531, more or less. One interesting note is that the user uses GNOME, but would be willing to switch to whatever provides this feature.
Kicker does not support this, nor does GNOME panel it seems, and I doubt any panel actually can do this. However, since one can create multiple panels with Kicker, it should be sufficient to put each of them on a different virtual desktop. Kicker can't do this, but should be this allmighty window manager thingy. Alt+F3/Configure Window Behavior->Window-specific settings, click New, click Detect, select a Kicker panel, confirm and then apply any desired changes - in this case it's going to the Geometry tab, enabling Desktop, setting it to Force and choosing the right virtual desktop.
That should do it. Except that, in this case, it doesn't, as KWin cannot uniquely identify the panels. They all claim the application is Kicker, but the role ("xprop | grep ROLE") is always ExtensionContainer :( - object name (QWidget::setWindowRole() for Qt4) for all of them is the same and I had to fix it in SVN. Now it works. Eventually, when KDE4 development becomes a bit less exciting again :), I plan to put code somewhere in kdelibs that would check for this and annoy people.
And there are other tricks one could do with KWin's window-specific settings, so it's a pity that the help for it is very short and unsufficient and I haven't found time yet to write good docs for it (well, and I'm lame at that, too). How about, if there was somebody who can't code, but would like to contribute to KDE anyway, created the docs for it ;)? Interesting topic for many people to read, and docs howto should have info on how to make that part of KDE. I'll answer any questions necessary. Any takers ;)?
PS: The widget style in the screenshot is the B3 style (variation of the so-called Highcolor). Since I'm already naively asking for things, could somebody port that to KDE4? I'm bad at styles too.
"I doubt any panel actually
"I doubt any panel actually can do this"
nonsense :) plasma is capable of almost anything! you just have to write some code for it ;)
code was committed today to have the taskbar only show windows for the current desktop. from that I see there is a signal to tell us when the desktop changes. just find a programmer with some spare time (ie. probably not one of the main plasma devs) and convince them to write a panel that makes use of this signal.
hmm... now that I think about it, it might perhaps be useful to have the option of not having the panelview on all desktops... then you could also have more panels on one desktop than on another... or would it be more fun to have panels tied to specific desktop containments (which operate independently of the "virtual desktop" window-grouping thing, but will have the option to co-operate with it eventually)...
damnit, now you've got me thinking! it's past my bedtime already :P now I'll nevre get to sleep... :)
in order to have one panelview display different applets for each virtual-desktop, the most sensible solution is probably to have several Panel Containments on the graphicsscene, and then change which one the panel graphicsview displays when that signal's sent. this would require changes to the panel view code, but it would be more elegant than a mere containment plasmoid trying to handle everything itself. besides, I have a sneaky feeling that the view code was kinda brittle last time I looked at it... wouldn't hurt to give it a little love...
wait, no. that would look
wait, no. that would look dumb when ctrl-f8 was used to show all desktops. maybe one view per desktop would be better then... but that might come with a whole bunch of extra config, if we let users have panels that aren't on all desktops... say if you wanted an extra panel that only showed up on a certain desktop... ick.
this stuff is just never as simple as it seems, when you're trying to get it to really behave well.