Thursday, July 26, 2007

desktop zooming

our three level desktop zooming is now working in plasma. wee! the-other-aaron-in-plasma has been working on it the last couple days with some help and consultation and it's now in place and working. we've got a few features to add to it before it all makes sense, but the important bit is that the concept is now there in code in svn.

the idea is this: plasmoids (launchers, icons, widgets, games, mini-apps, etc) exist in groups. a group can be displayed to take up the full area of the screen. this is what one would most likely recognize as "the desktop" today. you are not, however, limited to just one full screen group. you can have several.

when you zoom out, you see these various groups and the plasmoids within them shrink to mere icons. this lets you pan around and rearrange plasmoids or pick another group (and little else).

zoom out once more and the groups become little iconified versions of themselves and the plasmoids themselves disappear. this view lets you see all your groups at once even if you have a lot of them. pick one and you zoom in on it.

the idea is to allow one to manage collections of items by grouping them and then quickly switching between them using zoom-and-pan where zoom provides overview (lowering detail), pan provides navigation and unzoom increases detail again (implying selection of another group to use).

the use cases are something like this:

aaron works at home. you can tell he's a happening fellow by his name. as such he does a lot of things with his computer, not just work. he separates his work from his family from his play "lives" on his computer by arranging different desktop sets. aaron uses the zoom-and-pan to quickly switch between "work" and "family" groups during the day.

lisa is a graphic designer. at any given time she is working on projects for 2-4 clients. she keeps the work files for each client project in a separate group, each labeled according to the project title. she also keeps the contact list for the other people she's working on the project with (copy writers, the client contact, the project manager, etc), the schedule calendar and current todo list (sync'd to the company's groupware/calendaring server) with each group. as she moves from one project to another, she zooms-and-pans to the appropriate group.

josh is a 16 year old lay-about. he should be working on his chem homework but instead is playing on facebook and myspace. he has the plasmoids for different sets of friends in different groups according to clique and a grouping for his class work. when he hears his mom approaching he quickly zoom-and-pans to the work grouping.

ok, the last one is a bit tongue-in-cheek ;)

note that desktop zooming is different from resizing individual plasmoids to show more or less detail in them. and yeah, i'll try and get this into a future screencast.

13 comments:

Anonymous said...

How does this fit in with "Virtual Desktops" provided by the window manager, though? Particularly now that kwin implements Expose/"Present Window" and as such can zoom out, too? Seems like both layers implement basically the same independently. Smells like complexity.ef

Anonymous said...

aseigo,

You have to stop!!!!
How is anyone suppose to keep up with plasma when you blog so much about.
I missing the good old days when everyone was in the dark and the trolls could come out to tell us how plasma was all buzz. :)

Anyway I am amazed at the speed you guys are moving now. I think that even you a re having a hard time keeping up with everything. I was really looking forward tot his since I read the article in Linux.com and was all excited about the ZUI. I can't wait for the next set of screencast. When you add this to the icons on icons that Ruphy is doing and so many thing I think plasma is really bringing something new to the table

Aaron J. Seigo said...

@anonymous mark I: 'How does this fit in with "Virtual Desktops" provided by the window manager, though?'

virtual desktops doesn't actually change your desktop. it changes the windows that are shown. the desktop layer always stays the same, however. therefore:

"Seems like both layers implement basically the same independently."

is not accurate =) virt desks affects windows (as such, it is part of the window manager, actually) while the desktop ZUI affects what you see on the desktop layer.

some possibilities that have come up while discussing this feature including keeping the zoom state on each virtual desktop (both zoom level and where on the scene, e.g. which group(s), the view is centered on) so that switching virtual desktops switches both windows -and- the desktop.

iow, bringing -real- virtual desktops to the mix.

personally, i think this requires a lot of hands-on experimentation. as such i'm not ready to commit to any feature set w/regards to virtual desktops at this point.

odemarken said...

I guess you are right that a thing like this (so new, never-before-seen functionality :) ) needs hands-o experimentation before deciding on the details about how it should work... Still, I think that it would be a logical step to tie plasma in some way to virtual desktops (or make a possibility to do so), leaving it unrelated seems confusing to me...
But anyway, with this post I'm beginning to see the bigger picture behing plasma and now I'm getting REALLY excited about it :) Your work is truly amazing, aseigo.

vincent said...

Impressive and wonderful.
Thanks aseigo

carl said...

Very interesting!

Reminds me of death of the desktop tal by Aza @ google:

http://video.google.com/videoplay?docid=-6856727143023456694&hl=en

Would be nice if it was integrated with the new krunner for fast switching, like Enso is planned to do some day...

theefer said...

Hello Aaron,

Thanks for your very frequent updates, great way to keep up with the Plasma dev, and congratulations to you guys for working so hard and trying so many new things. Honestly, it's really the first time I'm excited about a desktop environment.

I just have a few questions about this zooming interface.

First, is the workspace (i.e. the area that contains all the groups, as shown when you zoom out) actually spatial (think: continuous in 2D), or is it only conceptual (think: a display of the list of groups) ? Spatiality is such an underestimated and underused feature in interfaces these days, I really hope you make use of that, so that people actually *visualize* their whole desktop and know what and *where* things (groups, applications) are.

Second, will it be possible to "bookmark" a view? I'm thinking for instance of switching between frequent groups using a dedicated key for each, or the equivalent of Exposé (F11 zooms out completely).

For reference, I am a wmii user (very simple tiled window manager), and I love the way I can map each of my viewports to a single keyboard key; I use the numeric keypad for that, which allows me to have both a (virtual) spatial feeling (mail is top-left, web is center, etc) and a very fast, keyboard only "task-switching" mechanism.


Thanks, and keep up the good work!

Aaron J. Seigo said...

@carl: yeah, that's a pretty good talk. well, content wise. i find Aza a bit hard to listen to for an hour and a half (just his speaking habits) and i think he does go a bit toooo far on the "the desktop is about content" (it's at least as much about communication and connecting).. but yes, there are a lot of very good things in that talk of his.

you'll see some of them in kde4.

@theefer: thanks; and i don't blame you for not being excited about a desktop env. i mean.... who's been doing anything interesting? i mean really interesting? bling is bling (hello e17; hello compiz) and it's certainly necessary but .. without substance it's just paris-hilton-the-software

anyways... you ask two questions, so here's two answers =)

spatial: yes, my plan is to make it spatial (this is actually the easier approach with qgraphicsview, interestingly enough =)

keyboard nav: one of the reasons i made krunner pluggable is so that we can do stupid crazy things like type in "plasma work" and it will take you to your work grouping. that's 10 keystrokes right? once we get proper auto-complete in krunner it'll probably be more like 3-4.

and you'll be able to not just jump to groups but also (at some point) windows, websites (that's already there, actually), documents (waiting for xesam to complete that one), etc.. with keywords and actions autocompleting you should be able to be pretty quick about your business.

i know it's not as quick as "alt+ctrl+foo" but it allows us to offer a lot more keyboard nav options given the greater # of combinations.

perhaps someone will contribute a plain ol' "key shortcut goes to a group" patch (which i'd probably accept) but i think it'd be fairly unwieldly if you aren't careful (shortcut collisions and what not).

in any case, i'm not a big fan of the mouse so you can be sure that we'll take care of the keyboarding =)

that said, it remains to be seen how many of the plugins that will make those things go will be ready for 4.0 and which will have to wait for post 4.0.

if we continue this pace of devel, however, i'll be compelled to do an interim release of plasma plugins before 4.1, which would probably be good for the health of plasma in 4.1 anyways. (more testing, for instance)

and, for the record, i'm sure i'm probably wrong on at least two points above and thing will evolve slightly differently. while i have a roadmap at any given point in time, it's subject to continuous evolution.

the end goal is always the same, it's just the precise line of the footpath we take that varies a bit over time =)

illissius said...

I also thought of the virtual desktops relation... the technical differences are quite obvious (one is windows, the other is plasmoids), but look at it in terms of workflow, the way you did in your post. The rationale for virtual desktops is usually that they allow you to organize the windows pertaining to your separate "lives". The rationale for plasma's ZUI is the same, except with plasmoids. Would, then, you have to switch your plasma group and virtual desktop separately whenever you want to switch to a different life? Simply having each virtual desktop have its own associated plasmoids could be a potentially more practical solution, should this turn out to be a problem. I think "let's experiment and find out" is a healthy approach to take, so keep up the good work.

Also, your post does a good job of explaining why being able to switch between groups of plasmoids is a Good Thing, but not so much why zoom-and-pan is the best way to do this. You could accomplish the same or similar with a mere combobox. Now, zoom-and-pan is a hell of a lot more tactile and feedbacky, so I heartily endorse this line of approach (the combobox was only meant as an illustration of the point, and not a remotely serious suggestion), but it does bring up the possibility of there being other tactile/spatial ways to accomplish the same thing, which could also be worth investigating. Like, say, having the separate groups displayed on the sides of a cube, which you can then rotate around in 3D in real time. Just as an example. ;)

(Just saw your most recent reply while previewing... if krunner is going to be so awesome at doing, well, everything, it'd make sense to have it bound to a single key, rather than a combination of them (alt-f2), so that you could really use it lightning fast. Not sure what that single key might be, though.)

Chani said...

I agree with everything illissius said except the cube thing. :)
....that doesn't really leave much for me to say, now. huh.

André said...

A single key? That would of course be the Windows^H^H^H^HLinux key :-)

On assinging a single shortcut key to switch to a specific group. I am assuming Plasma will be DCOP scriptable (seems reasonable) and KDE 4 will have a KHotKeys (or the like, also reasonable), so it should be possible to bind a DCOP command to a shortcut key that makes Plasma make the switch, no?

I was a bit confused on the terminology in the article by the way. If I understood it correctly, you described zooming as reducing a group of plasmoids to icons, and then unzoom again to full sized plasmoids. That seems an illogical way to use the word zoom. Usually, something gets bigger if you zoom, not smaller. Did I misunderstand you, or is this really how you use the terms?

Anonymous said...

First I have to say that the work you guys are doing is absolutely awesome!

I was wondering if the groups are somehow integrated with nepomuk, allowing for example to organize groups by ratings or other metadata. This would be a real natural way to organize the data since a group's properties probably relates to that of the files stored within.

An example: if you organize a couple of work files, documents etc. in a group, the files within would all be tagged with the name of the group.

The other way around, you could choose to group all the files on the desktop that contains a specific tag. This would be a very powerful tool for accesing data and make use of nepomuk.

Love /Nils

Riccardo said...

Ahah, the last example is what I do almost every day (when there is school)! =)

(thankfully my mother isn't reading this :P)

Bye,
ruphy