4.5 - Activities

todd rme toddrme2178 at gmail.com
Wed Mar 10 01:21:27 CET 2010


On Tue, Mar 9, 2010 at 6:17 PM, Chani <chanika at gmail.com> wrote:
> but if we make the activity span all monitors, we run into other issues - what
> happens when the number of monitors is reduced? where do all the extra
> containments go? how does the user look at them again, or delete them?

There are also issues when you connect to a new monitor, or change the
monitor layout, they will end up with a completely blank activity if
the activity is dependent on the resolution and layout of the screens.
 For people using many different monitors and/or use projectors often,
this means they will end up with blank activities fairly often.  I do
not think that is a good approach.

> since I've never worked with multiple monitors, I don't really know what sort
> of use cases to expect. do people often change the number of monitors they've
> got? do they use the multiple-monitor thing with projectors, or just have the
> projector show what's on their screen like my laptop does? do they actually
> use the different monitors for different tasks? do they plug in different-sized
> monitors at different times?

Changes to the number of monitors are common with laptop users using
multiple monitors, since if they take their laptop anywhere it will
lose a screen.  Further, the two monitors often have different
resolutions, since the monitor resolution is fixed.  The current
implementation has some very serious problems when using multiple
monitors with different resolutions, to such an extent that I have
totally given up trying to use activities at all.  It is just too
frustrating to keep ending up with unusable activities on the screen
much of the time.  This is due to the issue of the plasmoids in
activities not being scaled to match the current monitor resolution.
Please see this bug report for a more in-depth discussion:
https://bugs.kde.org/show_bug.cgi?id=184162

As for projectors, most modern presentation programs have the ability
to show the presentation on one screen and on the other screen show a
tool with a small version of the slide, a timer, notes, a preview of
the next slide and perhaps other information.  So using two different
screens for a presentation is, in my opinion, a better approach, and
one that is supported, if actively not encouraged, by presentation
programs.  For that reason I think you will need to count on many
people using laptops with projectors having two screens, and changing
the resolution of their screens routinely.

There is also the issue with people who bring their laptops to and
from work, which I do occasionally.  My monitor at work and my monitor
at home not only have completely different resolutions, they have
completely different aspect ratios as well.  And neither is remotely
similar to the resolution of my laptop's monitor, nor are they the
same as the projectors I encounter.

I personally do different things at the same time on different
monitors, so being able to have different activities on different
monitors might be useful.  But it might make the software too
complicated.  If you go with this, though, it is essential that the
widgets in an activity are re-scaled if the activity ends up on a
monitor with a different resolution.  Otherwise you would end up with
activities that can and do appear on both monitors but are only usable
on one of them (which is what we have now).

> so... I dunno... should we build the API so that it's possible to have >1
> visible activity? or should we decide that the activity is completely global,
> and then figure out how to gracefully handle changes in the number of monitors?

I have a proposal for what I consider to be a good solution, assuming
you go with all screens sharing the same activity.  Activities are
shared across all screens, so all screens have the same activity.  If
you add a new screen, a new containment is added to all existing
activities (I'll use "containment" as shorthand for the whole-screen
containments like desktop and netbook, as opposed to the panel
containment or container widget).  The new containment takes the same
wallpaper as what I will refer to as the primary containment, the
containment that appears on the primary screen (whichever screen that
happens to be).

If you remove a monitor, that containment disappears, and the widgets
it has are no longer running and taking memory, but its layout is
remembered, so if you plug in that monitor again, or any other
monitor, the containment, including all of its widgets, is placed on
that monitor.  Which screen gets which containment depends on the
screen priority, one containment always appears on the primary screen,
the second containment always appears on the second screen, and so on
for however many screens there are.

The advantage of this method is that it doesn't matter what the
positions of the screens are, what their resolutions are, what type of
screen they are, they will just work.  You plug it into a new monitor
and all of your activities will work just fine.  It also means that
the same containment will always appear on your primary screen,
whatever that might be.

The critical thing here is that containments have to rescale the
widgets they contain depending on the monitor resolution.  Otherwise
you will end up useless activities when you change resolutions, which
is what we have now.

Now there is a possible variation on this, although I do not know
whether it is a good idea or not.  The idea is that you can have the
same activity associated with more than one containment.  So say you
have a "work" activity, you can have different containments that all
are associated with the work activity with different properties and/or
different widgets.  If you have multiple monitors, you can pick which
of those containments appear on each monitor, and change them around
at will, but all monitors will always have the same activity, and if
you change the activity it changes on all monitors.  If you plug in a
new monitor but don't have enough containments, a new blank
containment that has the same settings as the last-created containment
in the activity will be made.  If you then disconnect the monitor,
those containments then just go back into the pool of containments you
can pick from.  It might even be possible to have the same activity on
two different screens at the same time, although I am not sure you
would want to.  This has the advantage that you can make and customize
the containments for external monitors even when those monitors are
not connected.  So you could set up a containment for use with a
projector when you don't have a projector handy.

Further, you could have it so people could change the activities
independently on their two monitors, allowing them to have the same or
different activities on the two monitors depending on what they are
doing.  You could even have an option people could set that would
either force the two monitors to have the same activity or let them be
independent.

-Todd


More information about the Plasma-devel mailing list