Yes, background wallpapers can be animated.
Whew! Now on to what I've been doing with backgrounds since yesterday ... When I sat down with Zack a while back and wrote down all the things that would be needed from backgrounds, it started to become apparent that I would simply be rewriting the Applet class: plugins, config pages, mimetype associations (so different background file formats can be supported by different plugins) ...
I also had another problem to solve: what to use to group applets for zooming, multi-screen, sharing the Corona between the desktop and panels, etc. When Zack said, "The backgrounds should be QGraphicsItems ..." it became natural / obvious to make the connection between the backgrounds and the need for a grouping class.
So I've been working on a class called Containment. (Get it? Plasma containment? oo-hoo-hoo!) It's just an applet registered with the Plasma/Containment ServiceType, but also provides for grouping. Containment now hosts the FormFactor and other constraints, so there can be multiple constraints sets in one Corona which is needed to share the Corona between multiple visualizations (e.g. panels or whatever). Essentially, Containments are full-screened (or full-panel) applets that always sit behind the other applets.
The really neat thing about this approach (at least to me) is that backgrounds can be interactive. In fact, any applet could be used as a background (not that you'd want to, of course ). Yes, it also means they can be animated (or drawn using OpenGL or...). As a bonus, people writing backgrounds don't have to learn Yet Another API or plugin system, which is also a bonus. You could even write backgrounds in JavaScript or whatever other languages we get ScriptEngines for (Python, Ruby..). Neat-o.
It'll be interesting to see what kinds of background plugins people come up with. Zack said he wanted to do one, so maybe we'll get some posh out of that.
Anyways, I'll put a screencast together showing this stuff in action which might help make things clearer in case the above was too obtuse. ;) And yes, I know, it's just backgrounds (well, and grouping and what not) and I'm all excited about it. But .. but .. animated wallpapers! ;)

37 comments:
But can they make coffee?
I'm going to take a leaf out of Zack's book and admit it - I actually touched myself while reading that post (although I did not - quite - rub my nipples).
People often have an obsession with playing movies in the part where the wallpaper should be - will this be a possibility, also? (If so, I shall indulge myself and give the left one a quick tweak.)
SSJ
"But can they make coffee"
no, but they can make tea ;)
"playing movies"
of course; anything you can do in a QGraphicsItem is possible here. the question is how efficient can you make it; i really don't know how well QGraphicsView would cope with full screen updates at video refresh rates =)
really neat stuff.
A good example could be a simple landscape background that changes the light according to the hour... and even at night it could use something like stellarium to show the current visible stars, etc.
The probable reason why you're being asked about animated/movie wallpapers is that vista has them -- full screen, animated looped video. I haven't seen it used for anything like full-motion- feature-film-style animation, and I suspect that would actually be quite disorienting, and/or physically sickening. BUT, it does work quite nicely, for things having an image with a moving river on your desktop.
"vista has them"
a-ha! that would explain it.
Awesome. Graphics View is really cool. Once you realize that you might as well make everything a QGraphicsItem, instead of trying to draw things on the view manually, it becomes really easy.
The only thing I'm wondering about is performance. If you override the background drawing of QGraphicsView, you can optimize by drawing only the exposed rectangle. Does QGraphicsItem have a similar optimization, or do you always have to repaint the whole thing?
would it be possible to use e17s' animated backgrounds? i think that they using some short of animated layers, it would be cool to use vectors, now when they should be quite fast..
so my other question would be if qt4 can read inkscapes' own svg format with all that fancy effects (as opacity whitin objects as a global thing not only as a kind of transparency colour)
Well, only Vista Ultimate has them. And looking at a video showing them off, they're pretty poor.
http://youtube.com/watch?v=s-_IOeO5VAY
Distracting full screen motion with really poor frame rates (of course, maybe this is because of the video capture).
To be pretty, it needs to be much more subtle than that. I love the idea of a landscape that changes lighting as the day progresses. It could even use the weather data engine to look up sunrise/sunset times (or even cloud cover!) and adjust accordingly. I think the effect would be great, and it changes seldomly enough that performance cost would be minimal.
Would it be possible to display screensavers the same way? Having a unified framework for screensavers, backgrounds, and widgets would be great. Use a screensaver for you background or widget, a widget for your screensaver or background, or a background for your screensaver or widget. All of those would be useful options (some more than others, obviously). It would also allow you to make your own animated screensavers using plasma just as easy as it is to make widgets.
I didn't know Vista could do this before but a better vid displaying this on Vista is here and fmv is possible: http://youtube.com/watch?v=VMwL_JLVYWM&mode=related&search=
Most are very distracting but the waterfall does look very classy. I think most would have got the idea from: http://www.kde-look.org/content/show.php/animated+wallpaper+?content=33584
Hi Aaron,
there is another name related to plasma containment:
Tokamak
So if you need another name for a class or technology ...
I always loved the concept of a little (unfortunately) windows-only program called GT Ripple.
You pick an wallpaper, copy it, paint the zones you want animated and load it up: instant coolness.
I used to have an animated open stargate on my desktop.
Hope someone implements something like that for plasma.
Humm very interesting.
Not the part about wlappers couse geting extrely good animated walpapers will be hard, i should know geting a good still image is hard enough now geting inumerous ones... hehhehe
but on the other hand the possibility of havin a group of plamoids that can include animated iteractive wallpapers in a opens a brand new world of oportunities in the multimedia area. Play Photos, Vidio, music, that with a coerent well defined screnn that is there for that propuse can be wonderfull.
i love the idea of having animated wallpapers (videos, etc)
where is the screencast?
@Knuckles: sorry but i don't like that approach.
with all due respect of course ;)
Yes!
I hoped for it. Animated Wallpaper.
Now i only have to persuade an artist to make the following scene:
A really nice Cherry Tree Garden in Spring with falling leaves everywhere.
Anyone want to do this? :D
"i really don't know how well QGraphicsView would cope with full screen updates at video refresh rates =)"
brrrr...
Each time you update the background you trigger a paint event for every plasmoid on the desktop, don't you?
And the area of placement for group of Containments should be called a Field. (Get it? Plasma Containment Field. oo-hoo-hoo!)
Wow! I thank you so much! This is exactly what I was thinking of almost a year ago, in my blog. Will it be possible to layer multiple wallpaper applets, like described below? (I don't want to be "blogspam" so I just copy the relavent entry here.)
November 17th, 2006
What if instead of a static image, we had “Wallpaper Widgets”? Imagine a Wallpaper Widget that showed a different picture if you have new email, or that displayed a slideshow of the latest NASA images, or that changed colors depending on the stock market. Add transparency support, and multiple Wallpaper Widgets could be layered, so that your desktop could show a weather based wallpaper by default, an envelope wallpaper if you had new mail, and on top of those, a translucent wallpaper that was tinted green or red based on the stock market! Obviously, a generic wallpaper widget could be made that simply lets users pick a static image to display, but advanced generic wallpaper widgets could be written to handle picture slideshows, wallpaper rotating, and so on.
Postscript 6-19-07:
I bet this is achievable in Plasma. (Meaning I could make transparent Plasma applets that take up as much size as the screen.)
Postscript 9-17-07:
Wow! Plasma "backgrounds" really are applets! This is going to be so cool!
First of all, thank you so much for the great work, KDE developers! I'm curious about something though. Do any project maintainers explore the ideas contributed by users for KDE 4 on KDE-look? They reside in the KDE 4 Brainstorming category.
* Sorry link is http://kde-look.org/index.php?xcontentmode=65
@mercurio: with the new caching stuff in place, such redraws shouldn't be a problem. and hopefully even that will be kept to a minimum.
@kwilliam: such a thing could be written as a Containment, but layering Containments won't be supported (it would cause issues with constraints management). you could also probably achieve a similar effect by just using regular applets anyways =)
@anonymous: yes, several of us do look in on the brainstorming section on kde-look.org. i was one of the people who started asking for greater user input a few years ago. the results have been spotty with a few really good ideas amongst the rest. so it's sort of like sifting for gold in a stream bed.
While we're on the subject of crazy feature requests, I really admire the interesting paradigm that the guys from BumpTop are implementing (but I think that's for Windows). Is there any chance of some later version of KDE4 supporting such a realistic desktop metaphor?
This could be a dream come true... a plasma based LCARS design interactive background? 8)
i personally don't like BumpTop/slowfat, i think there is no need to do that yet and i prefer the current desktop metaphor, and i think plasma will be able to do that
err, sorry i mean *lowfat*
A couple requests for aseigo.
1. rotating taskbar capability.
2. animated 3d icon capaibility.
For animated 3d icons we need polygon based widgets. So this capability has to at least be built into KDE or QT.
My otating taskbar idea is described here
http://forum.compiz-fusion.org/showthread.php?t=4267
I hope Aaron Seigo reads it, because I think it would be essential. My 3d widgets idea is here http://www.planetblur.org/hosted/awnforum/index.php?shard=forum&action=g_reply&ID=866&page=1&isLive=true
If you can read these ideas and directly them to the proper individuals, it would be great. I don't personally know how to get into contact with the panel developer but I think being able to rotate the taskbar would be an essential feature for usability.
The reasoning behind the rotating/flippable taskbar is the same reasoning behind the compiz cube.
Why use a 2d taskbar which only ever uses one side at all times, when you can use all 4 sides of the 3d object giving you 4 times the space of the 2d object?
This alone should make the case for a 3d taskbar. This functionality could also work for tabs in firefox, if the tabs were 3d we could just flip all the tabs to access the next group of tabs immediately, this increases usability.
The ability to lock and password protect the taskbar has to do with the combinations of flipping. This feature would allow for locking a taskbar which would increase security and usability, in a way which would prevent another individual from just looking over your shoulder and watching you type in a password.
In this way, you could store your secret tasks on the flipsides of the 3d taskbar and only you'll know the combination to unlock them.
This idea is for whoever develops the panel and deals with usability. I think 2d tabs and 2d taskbars are barely functional as they have reached their limits. We now need 3d in this area.
"Is there any chance of some later version of KDE4 supporting such a realistic desktop metaphor?"
Bumptop is 3d for the sake of being 3d, not because it's actually usefully 3d.
The cube, thats usefully 3d. Being able to flip a window and access another window on the other side, thats usefully 3d. Being able to flip objects in general is usefully 3d.
Having 3d icons that are animated would be usefully 3d, because you can take more information in from an animation than you can from text alone.
I looked at bumptop, the icons weren't animated, in fact they weren't any different than they are now, they were just 3d. And bumptop in general did not seem very advanced or powerful. Can I run 100 applications at a time and keep track of them all in bumptop? In that interface I don't think so.
As computers become more powerful, the way we use them will require more power.
Tabs will become more important, as will multiple desktops, and so the first place to enhance usability in my opinion is in tabbing, by allowing tabs to be flipped cube style. The second would be windows, by allowing windows to be flipped you could for example have an AIM window on one side, flip it to the other side and there's a web browser.
You could have your work window with your spreadsheet/word processor, flip it over and you have a game on the other side. You could even have it so that you can switch users simply by flipping all the windows and locking them.
So I use the computer, I decide to lock it so you can use your account, all my windows can flip and be replaced with your windows, or blank windows which you can fill with your applications, and the root user could decide exactly to only let me open new windows.
Imagine being able to log into pidgin and have all your friends on it, but then your gf wants to use the computer and access pidgin to talk to her friends, so you just flip pidgin, lock it, and her pidgin is on the other side as default.
Thats the sorta capability I'm talking about. And it can only come about if we embrace 3d from a usability perspective, and think "how can we use these extra dimensions to give the user more power over the behavior and security of the desktop experience?"
E17 has that working for a long time before vista alpha1 came out.
@Aaron
Caching! Wow :D
So finally it is time to refactory (again ^^) the Photo Frame plasmoid, when I manage to get my build environment working O_o
I missed a lot about plasma development in August, I need absolutely to bring me up to date. :/
LookingGlass has a nice background feature, not only can the backgrounds be animated but when switching to different workspaces (left and right) the background pans around as a panorama. This is a little like Compiz's "inside the cube" option, but without sharp edges. http://www.youtube.com/watch?v=mn84YX-ywTM
This feature is really subtle, and only comes into effect when switching workspace (or 'group' depending on the metaphor), so therefore doesn't interfere with normal working. Also, it has layers, which makes parralax scrolling possible (the foreground moving faster than the background).
I am not too in favour of looking glass's completely freeform 3D applications, because I like some level of consistency around a common (and changable) theme, but the backgrounds I do like, and would love to see a plasmoid implementing the idea (and maybe even file compatibility :) )
Also, about the BumpTop (and to a similar extent Lowfat) idea, I think that such a system might be nice to use (I would prefer Lowfat's 2D view to BumpTop's 3D one, since screens are 2D) but putting icons in there is redundant, why not use an actual document instead of a box that says "ODF" on it for example? Adding (show/hide) editing controls to each would make an "object oriented" take on the desktop. Such a thing might be nice for casual home users.
okay, dumb question (?): where do you post your screencasts, Aaron?
Also a tech question: will this break the background program feature of KDE 3's desktop? That is how I've got Xplanet working currently.
hey aaron!
i can't set a wallpaper for my plasma-desktop, so it is just black - i installed opensuse width the latest builds... is this a bug? maybe i am just stupid... (i did not even found a configuration-file to manage this)
thanks!
brr
Post a Comment