<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'><BR><BR><BR><HR id="stopSpelling"><DIV align="left">&gt; From: aseigo@kde.org<BR>&gt; To: plasma-devel@kde.org<BR>&gt; Subject: Re: GroupingTaskbar infos and questions<BR>&gt; Date: Thu, 4 Sep 2008 12:49:48 -0600<BR>&gt; <BR>&gt; On Thursday 04 September 2008, christian mollekopf wrote:<BR>&gt; &gt; Hi there,the groupingtaskmanager is in a fairly usable state now but there<BR>&gt; &gt; are still some issues left where i could use some help.What is working by<BR>&gt; &gt; now:-Everthing that the old taskmanger could do exept the show only current<BR>&gt; &gt; screen functionality and startup tasks-Automatic grouping by programname<BR>&gt; &gt; based on the name in Taskmanager::Task::classClass()-Manual grouping, this<BR>&gt; &gt; creates on change of the desktop a copy of the whole grouptree so all<BR>&gt; &gt; manually created groups can get restored on return to the desktop (only if<BR>&gt; &gt; showOnlyCurrentDesktop is enabled of course)-Automatic sorting by<BR>&gt; &gt; alpha-Manual sortingWhere i still have to work on and need your help:-I<BR>&gt; &gt; couldn't figure out how to find out if a window is on the current screen<BR>&gt; &gt; because the containment isn't available in the lib.<BR>&gt; <BR>&gt; that's something belongs in the Applet (which has access to the <BR>&gt; containment()); libtaskmanager should simply advertise which screen a window <BR>&gt; is on (and probably take a flag to control whether it should care or not, since <BR>&gt; that's a relatively expensive operation)</DIV><DIV align="left"></DIV><DIV align="left">hmm... i thought so but this leads to some serious problems.</DIV><DIV align="left">Since all the grouping gets done in the lib we can't just leave it up to the</DIV><DIV align="left">visualization because we would end up with empty groups the lib created because it </DIV><DIV align="left">has more tasks available than the visualization displays in the end.</DIV><DIV align="left"></DIV><DIV align="left">The only two solutions i can think of are, we pass the containment pointer to the lib</DIV><DIV align="left">which isn't nice but should at least work, or the visualization has to update a screen variable in</DIV><DIV align="left">the lib. So i guess you would prefer the latter</DIV><DIV align="left"><BR>&gt; <BR>&gt; &gt; -I couldn't find a reliable source for<BR>&gt; &gt; the progamtype. As mentioned i currently use<BR>&gt; &gt; Taskmanager::Task::classClass() which works for things like opera or<BR>&gt; &gt; konqueror but totally fails on programs like vlc and its playlist.<BR>&gt; <BR>&gt; i think that's mostly a failing of programs like vlc.<BR>&gt; <BR>&gt; however, vlc's playlist should belong to the grouping; so calling <BR>&gt; KWindowSystem::groupLeader(vlcPlaylistTask-&gt;winId()) should hopefully return <BR>&gt; vlcTask-&gt;winId()<BR>&gt; <BR>&gt; &gt; -Expanded<BR>&gt; &gt; groups currently look really ugly. The first point is that currently all<BR>&gt; &gt; tasks in an expanded group are squeezed to fit in the room that one task<BR>&gt; &gt; has. I not sure if an expanded group that contains 2 task should use the<BR>&gt; &gt; place of two tasks, or just maybe 1.5 time the place of a single task.<BR>&gt; <BR>&gt; that's a question for the art team ... <BR>&gt; <BR>&gt; &gt; The<BR>&gt; &gt; expanded groups have a background in a specific color so they can easely<BR>&gt; &gt; distincted from other tasks. This is a fully opaque red,, yet. Since this<BR>&gt; &gt; looks awful we need some kind of colorpalette which looks nice and fits the<BR>&gt; &gt; current theme.<BR>&gt; <BR>&gt; leave this up to the artists ...</DIV><DIV align="left"> <BR>&gt; &gt; There porbably has to be a configuration dialog to choose<BR>&gt; &gt; between some palettes.<BR>&gt; <BR>&gt; first sign it's probably not the best possible direction: you need to resort <BR>&gt; immediately to configuraiton for something like "colour used on a specific <BR>&gt; widget when in a specific state" =)<BR>&gt; <BR>&gt; &gt; Unfortunately i don't have a clue if there is<BR>&gt; &gt; already something like this.What else i intend to implement:-A<BR>&gt; &gt; configuration window where some group properties (name, color, icon) can be<BR>&gt; &gt; changed by the user. <BR>&gt; <BR>&gt; i'd recommend not bothering. let's have the artists come up with a concept svg <BR>&gt; for us to work from and then go from there.<BR>&gt; <BR>&gt; the name should be the group leader's name, the icon should be the group <BR>&gt; leader's window icon. KISS.<BR></DIV><DIV align="left"></DIV><DIV align="left">I'm trying to =) </DIV><DIV align="left">But there isn't any group leader. Obvously i can pick one of the first two tasks</DIV><DIV align="left">but then you could end up with a group called "opera" which is actually used  to </DIV><DIV align="left">group all tasks for developing the groupingtaskbar =)</DIV><DIV align="left"></DIV><DIV align="left">But strategies like  progarmGrouping (grouping by program) obvisouly take the icon and name from one of its tasks</DIV><DIV align="left">and won't let the user configure anything.</DIV><DIV align="left"> <BR>&gt; &gt; grouping by programbtw. both manual groupingstartegies aren't persistent<BR>&gt; &gt; over sessions since the Task pointer changes. I wonder if there is some way<BR>&gt; &gt; to recognize windows over sessions.<BR>&gt; <BR>&gt; window class; take a look at how kwin does it in its per-window settings. it's <BR>&gt; not 100% perfect, but 99.9% is good enough here.<BR>&gt; <BR>&gt; &gt; About the sorting and grouping<BR>&gt; &gt; strategies:The only useful sortingstrategy for me is currently the<BR>&gt; &gt; manualSortingStrategy (for what i actually started this whole project =). I<BR>&gt; &gt; implemented the alphasorting to stress the api but it's actually rather<BR>&gt; &gt; annoying if a task jumps around just because the website (and therefore the<BR>&gt; &gt; name of the task) changed.<BR>&gt; <BR>&gt; it shouldn't be alpha by window title, but by application.<BR></DIV><DIV align="left"></DIV><DIV align="left">alright </DIV><DIV align="left"><BR>&gt; &gt; And i can't think of any situation where this<BR>&gt; &gt; would be useful anyway.<BR>&gt; <BR>&gt; so i can go "i'm looking for 'kontact' .. it'll be somewhere before 'mplayer'"<BR></DIV><DIV align="left"></DIV><DIV align="left">yes sure, but unless you havent got like 30 tasks open at the same time you won't be much faster. </DIV><DIV align="left">And since we're trying to focus on  work to do and not on application names ....;-)</DIV><DIV align="left">No just joking, i will implement it.</DIV><DIV align="left"><BR>&gt; &gt; Almost the same for the groupingStrategies. My<BR>&gt; &gt; favourite is definitely the manualgroupingStrategy where i can group tasks<BR>&gt; &gt; according to the work i have to do.<BR>&gt; <BR>&gt; understood; it's a really great exercise to try and get into the headspace of <BR>&gt; others. i wil likely never use manual grouping, but i can totally understand <BR>&gt; where you are coming from.<BR></DIV><DIV align="left">Yes its definitely a great exercise, but im still having a hard time doing it =) </DIV><DIV align="left"><BR>&gt; &gt; i can't think of any further useful strategies. Would be great if some of<BR>&gt; &gt; you could come up with some cool ideas.<BR>&gt; <BR>&gt; by Plasma::Context =) in another week or so we should have Nepomuk integration <BR>&gt; on the rails and then we can start playing with tagging windows.<BR></DIV><DIV align="left"></DIV><DIV align="left">Hehe, this sounds like work is ahead </DIV><DIV align="left"></DIV><DIV align="left">Thanks for your answers<BR>&gt; <BR>&gt; -- <BR>&gt; Aaron J. Seigo<BR>&gt; humru othro a kohnu se<BR>&gt; GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43<BR>&gt; <BR>&gt; KDE core developer sponsored by Trolltech<BR>&gt; <BR></DIV><br /><hr />Die neue Generation der Windows Live Services - jetzt downloaden! <a href='http://get.live.com/' target='_new'>Hier klicken!</a></body>
</html>