so, this summer I’m gonna be putting plasma widgets on the screensaver. oh god, what have I got myself into?!
it’s gonna be pretty awesome… it just might take a few rather ugly hacks to get past X weirdness.
let’s start by quoting the scenarios from my soc proposal:
Amy wants to take her laptop to her lectures to play nethack — uh, I mean, take notes. She gets to class, unhibernates her laptop - then discovers she forgot to pause her music. Her laptop has no hardware volume control and the screen is locked, but since she always has a volume control on her screensaver, she reaches the mute button before anyone gets too annoyed.
Amy leaves to find a bathroom, and while she’s gone Bob leans over to see what’s on her computer. The screen is locked, so he can’t do any damage, but he leaves a rude message on the Notes widget anyways. Amy comes back and rolls her eyes at Bob’s bad spelling.
It’s the weekend, and Amy is having a party. She has all her music on her computer, and wants her friends to be able to pick songs, but doesn’t want Bob putting up nasty images like he did on Cory’s computer. She loads up the ‘party’ widgets she saved before, with a music widget and a few other toys, then leaves the screen locked.
Amy and her friends decide to go out for dinner. A few minutes after they leave, Amy’s roommate Dan comes home to find the music still blaring. He hits the stop button on the music widget, then logs into his own account and starts playing his own music.
so, what we’re going to have is basically a three-layer screensaver: layer 1 is the actual screensaver - the pretty animation. layer 2 is plasma - the widgets. layer 3 is the lock process - the bit that quietly makes sure the screen stays locked, offers a dialog to unlock it, and does some other invisible tie-things-together stuff. layer 2 is the only new bit here, of course.
naturally, there are some security concerns about putting something interactive on a locked screen. since something like this will never be 100% foolproof, it’ll be opt-in, and I’ll be making it as secure as it can reasonably be. plasma, like screensavers, will run in a separate process in case it crashes. plasma will be locked and unconfigurable unless the user enters their password to go into edit-mode. widgets will be tweaked to be aware of security restrictions and reduce their functionality when on the screensaver, then put on a whitelist, so users can only add safe plasmoids from the gui.
all this security infrastructure should end up helping plasma in general, and kiosk mode: when I’m done there should be a nice simple way for plasmoids to check what sort of features they should offer, and stay out of trouble. of course, bugs will happen - but that’s always a risk in any software.
unfortunately, the security also makes my life more difficult: running plasma out-of-process means *pain* in terms of both display and input. display was going to be a pain anyways - it might end up requiring composite to show the screensaver at the same time as plasma - but input, eeew. just to complicate it even more, that “this session is locked” dialog will probably stick around, because it has some fancy plugin ability that I don’t think I’ll have time to investigate.
so… lots of work to do, and I’ll probably run into all sorts of evil X things I never wanted to know. but when it’s done I’ll finally have that volume control on my screensaver! ;) and clocks, and notes, and maybe a photo, and, and… somuchstuff! :)