VDG suggestions and wishes about the system tray

Philipp Stefan sogatori.ml at gmail.com
Wed Aug 27 04:02:11 UTC 2014


On 26.08.2014 22:58, Eike Hein wrote:
> On 26.08.2014 22:35, Philipp Stefan wrote:
>> Hmm, we felt that these applications should not be hidden from the user.
>> When a user e.g. uses KTorrent and closes the window while it is only
>> seeding, there's no telling that the application is still running,
>> unless of course you check the popup.
>
> Except sometimes you *want* to hide things and remove them
> from your immediate attention. It's a "I know where I put
> it" kind of thing. Facilities for spatial organization are
> one of the key things a workspace provides.
>
> But yes, there are different approaches to this, as the
> dock pattern vs. Win-style window list dichotomy indicates ...
But you didn't not put them there, system tray did. In this case, the 
developer decided that to put the application to position X when is has 
reached state Y. The user does have to learn what this happens in both 
cases unless they configured system tray to handle certain indicators 
differently.To be clear, we only want to change the defaults, if the 
user wants to hide certain applications or not than that's ok with us.
We do not want to take away any configuration features.
>> In case of music players and similar, we feel like these applications
>> should not provide their own status notifiers. E.g. a music player
>> should be controlled via their mpris2 interface, which can be accessed
>> by a separate plasmoid in the system tray.
>
> This limits what music players can provide to the lowest
> common denominator of the MPRIS2 spec and our UI frontend
> for it. Apps are great things and app developers have a
> lot of neat ideas. I feel that limiting that idea potential
> would be a bad idea. Also because it's nice when apps can
> try out new things and prove them before they get added to
> the lowest common denominator.
>
> Never do things that limit what innovation can happen on
> your platform, I say :).
That's certainly not what we want to do, I assure you :)
Thing is, these are guidelines, not rules. If a music player has awesome 
new features then they can of course implement a status notifier, 
nothing prevents them from that. It's just that we do no recommend it by 
default. I'm sure lots of applications will have one thing or the other 
where they ignore the guidelines for good.
>> If the status notifiers are used like we intend them to, then the
>> "passive" status really does not provide any benefit for the user any
>> more. For example, if a music player idles, because the playlist has
>> ended, then there's no difference between closing the window and
>> reviving it again with the status notifier, or closing it and opening it
>> again with KRunner, kickoff etc.
>
> This goes into the very broad topic of application life-
> cycle. The technical reality right now is that we do need
> to explicitly communicate lifecycle state to users because
> we don't have perfect state serialization - whether an app
> is running or not matters, because it may not come back up
> in the same state as when it was quit.
Hmm, could you give me some examples for applications with status 
notifiers that handles this that way? I mean, sure applications like 
Inkscape and LibreOffice won't start up in the same state like when they 
were closed, however, applications like them don't seem to use status 
notifiers. I found that mostly media centred applications and those that 
provide background functionality like update notifiers seem to use 
status notifiers. Most of the ones I saw had a way or another to realize 
a state that is consistent with when you close the application. The only 
difference was startup time, but that's another story. I see your 
concern though.
>> This begs the question how many people use status notifiers that way.
>> Currently there's a mix between apps that use status notifier like we
>> intend them to i.e. when one opens the window again they are blank/the
>> program is doing nothing; and then there are applications which treat
>> the "passive" state differently. Which we would break.
>
> I think that's wishful thinking, see above - very few apps
> actually will come up the same way in a restart vs. an un-
> hide. Our application platform simply doesn't work that
> way yet.
>
> It might be nice if it would, and it might be sensible to
> decide to move into that direction. But that's a process
> with many steps from beginning to end.
That's why I am here to discuss it. Maybe I haven't made this clear 
enough before, if so I apologize, but we don't want to take this into 
action in the near future. We know that this would break some 
applications, that's why we want to discuss it now. We don't see this 
coming to fruition till at least 5.4, well except the plasmoid part.
>> However, as of now we feel that this destructive path is the better one
>> to take in the long run.
>
> I'm generally not a fan of arguments along the lines of "let's
> intentionally break this for users to exert pressure".
>
> Change can be for the better, but there should be recourse
> available before a switch gets thrown IMHO.
We are aware of that, we don't like it either. However, currently the 
system tray is a mess when it comes to consistent behaviour. If there 
was a way for system tray to intelligently judge which application can 
be displayed and which can be hidden then we'd go that path. Right now, 
however, we have applications that really don't provide anything useful 
when their indicator has the "passive" flag, then we applications that 
assume the "passive" state when they still perform potentially 
disrupting actions like taking up bandwidth and last but not least we 
have applications that use the "passive" state to declutter the task 
manager while preventing the application from being terminated.
We recognised the last case as valid, as well as the first one. These 
three applications are not neatly separated though, they all use the 
same state to perform their actions.
We could, for example, check if an application is already running when 
one uses Krunner et all and reveal their window when it indeed does, so 
that the last case is covered. But this would only shift the difficulty 
in managing these different applications states from one part of plasma 
to the other.
The "passive" state in the popup is a very nice idea in theory, but we 
have to deal with applications that simply do not fit in with the rest 
and there's no way of dealing with them unless we either change the 
applications, plasma or do nothing. Doing nothing strikes us as the 
worst alternative.
>> Hmm, KTorrent would only eat bandwidth when it's downloading/seeding a
>> torrent, or am I mistaken? In our, "corrected" model, the user would
>> still have access to that functionality. If KTorrent were to change how
>> they use the notifiers then the notifier should have the "active"
>> status, not "passive".
>
> But how does your model deal with setting the speed to 0? (= Pause.)
It would still be "active" as it has not yet finished its task. "Pause" 
should be a temporary action so I don't see why this would warrant to 
move the indicator and break the spatial model of the user. I imagine 
this: You want to quickly pause the torrent for a second to free up 
bandwidth for other applications and you do so by using the indicator. 
When you want to revert this action your indicator is suddenly gone. You 
will find it in the popup, but this behaviour is a learned one in any 
case. And because every application currently uses status notifiers 
differently there's no way for the user to form a general mental model 
of how these indicator behave. This doesn't strike us as something 
desirable.
If you want to completely stop the torrent you should toggle the "stop" 
action in KTorrent. And when you have stopped the torrent(s) then 
there's not difference between closing and startup state.
> You and the user might have a different idea of what "active" means,
> and this model means the user needs to learn about what yours is
> and keep track of it to know where and when to find the app. This
> strikes me as mentally much more complicated than "I put the app
> into the tray, it will be in the tray".
But that's already the case! Not the user decides where the indicator 
can be found depending on the state, but the developer does. The user 
does not influence the situation unless they configured system tray to 
do so, in which case this option stays available.
You already have to remember where to find the indicator of application 
X when it assumes state Y individually, because application Z might not 
behave the same way in state Y, but application Q only behaves like 
application X does in state Y when it does not have any useful 
information for the user.
We want to make the behaviour more predictable so you really can say "I 
put the app into the tray and it will stay there", and it strikes us 
this can only be achieved right now with a bit of pressure. The 
pressure-less path has led us to this rather messy situation in first place.
>> Downloading/seeding is an action, however, that takes up bandwidth which
>> is important for the user. You wouldn't want your music player to hide
>> its notifier (it shouldn’t have it own) when you are listening to a
>> stream either, would you?
>
> Personally I have KTorrent hidden by default and Cantata shown by
> default. That's a binning based on how frequently I need to inter-
> act with them.
You would still be able to configure that. We do not want to take away 
the ability to configure such things. We are merely concerned with the 
default settings. I don't see the problem here.



More information about the Plasma-devel mailing list