{March 18, 2010}   gsoc!

I had a realization yesterday. I was on my way home, after class, and it suddenly hit me: it’s 5:30pm. And the sun is still shining.
Winter is over. :)

So now it’s spring, and soon it will be summer, and you know what that means – summer of code! :)
Actually this blog post comes a bit late – If you’re a developer, you should have already put your project ideas up on the wiki, and if you’re a student you should already be talking to developers and reading those wiki pages to find a project that interests you. Still, it’s not too late to start – today google announced the list of accepted organizations. This didn’t really affect KDE – it’s a pretty safe bet that google will accept us – but for students who aren’t sure where to start, there’s now a nice list. :) Of course, I still say KDE’s the best community to work with ;)

So if you’re a student, and you haven’t figured out what you’re doing this summer, get moving! :) GSoC is one of the best possible ways to spend a summer. :)

oh, and lydia has put together a cool flowchart to show all the important deadlines. :)

{August 17, 2009}   gsoc wrapup

Well, today is the official end of gsoc. Conveniently it’s also the day I merged my code into svn. I’m still working on some behind-the-scenes cleanup, but it feels good to have the code actually in trunk. :) And now other people get to test it out easily, yay!

I haven’t written any particularly interesting code this week; just doing code review with Aaron, getting it ready to go into svn. And now it’s in. :) Other than that I’ve been enjoying the parties and sunshine. And thunderstorms… vancouver’s got the seasons on shuffle right now ;)

Another summer, another project complete… :) A plugin API, a config UI, and six plugins. yay!

so, if you’re running trunk, go play with it! :) the config page is in the Desktop Settings dialog.

{August 8, 2009}   gsoc week 11: two new plugins

This week I created two plugins: a window list and an application list.

The window list, well, shows a list of windows. :) I added config so you can show only the current desktop’s, or show them in submenus if you tend to have a lot of windows. (although perhaps that should happen automagically?)
Since there was already a tasks engine for getting info on windows, it was pretty easy to write the plugin. :) I just had to add a feature and fix a couple of bugs, and the engine did nearly all the work. :)

For the application list… well, it turns out that none of the people writing launchers had actually written a nice generic app engine. :P So I wrote it. that actually wasn’t much work either; I based it on the tasks engine, and it gives info on all apps, with a service to launch them. No favourites or recent docs – but feel free to add that to the engine when gsoc ends (that’s in one week! eep!) :)

That’s it for plugins from me… at least for now. I’m going to spend next week fixing up and polishing things, then gsoc will be over, and I have a few other things I’d like to do before school starts.

There are two plugins I’d originally planned to do that aren’t in here: a zoom plugin, which is on hold while we reinvent the whole ZUI thing, and a quicklaunch plugin, which I would have done this week if I’d had a kmenu plugin to build on already (that was the week I had to send the laptop away). Making a quicklaunch plugin could be done by just adding config to the app list plugin so that the user can pick just some apps or menus to show; not too much work, so if someone’s interested, come see me when I’ve got this code in trunk. :)

{July 30, 2009}   gsoc week 10

whee! thursday evening and I’m done for the week. I made the desktop menu configurable, so that most standard plasma actions could be chosen. this means that I can check off the zoom actions, and have my preferred way of zooming back again. :)

tomorrow I’ll do some cleanup of various little things – need to get the API in better shape so it can go into trunk. after that I’m going to have a busy weekend (parties, fireworks and chores) and probably won’t be online much (yet somehow I always end up in irc despite saying that ;)

[update: I got *all* my cleanup tasks done on friday! yay! now the code’s up on reviewboard.]

well, the laptop thing took up half my week, so I decided I wasn’t going to get that kmenu plugin done. I’m just going to skip it; either I can implement it after gsoc, or someone else can.

instead, I spent a bit of time on scripty – making it possible for amarok’s translations to stay in extragear while amarok itself moves to git. the code still needs to be tested, but yay, amarok should have translations again soon. :)

I also turned the paste feature into a plugin today; it still behaves the same by default, but you can turn it off the same way you turn off any plugin. :) I cleaned up the code a bit while I was at it.

it’s hard to believe there’s only three more weeks of gsoc. wow.

{July 19, 2009}   temporarily away

so, I finally got tired of all the little hardware problems with my laptop. I called dell. I jumped through their hoops. I backed everything up. and tomorrow they’re sending a box for me to put my laptop in.
it’ll be back, without the hardware issues (I hope), in 7-10 business days.

this means no laptop for two weeks. :/ sucky, but it was the least painful time of year to do this. and the warranty is only good for another month anyways.

I do have my n810 and my ancient desktop machine, and pete says I can borrow his laptop if I need to – but getting a proper working environment set up always takes time. and effort. and I hate doing it. so I’m going to have to cut one or two plugins from my gsoc project. perhaps I can get them done after gsoc, or perhaps someone else can write them – they’re really not that hard. :)

it’s funny… I love packing and unpacking *things*. moving is fun for me. but moving to a new *computer* is something I hate. I just want my computer to stay the same and stay working, and there’s always a ton of little details that don’t Just Work or are different or something…

I cleaned up the plugin config thing from last week – it’s not pretty but it works. I also, implemented all the API review stuff. the only thing I’m unhappy about is having one function that takes a QEvent – the problem is that it has to be as generic as possible because I can’t add more virtual functions later, but this results in the same boring code being copy&pasted into every plugin to check which kind of event it is and send it to an event-specific function. :/

anyways, I got away from all that today and had some fun writing new plugins. :) there’s one to switch activities that’s implemented almost the same as switching desktops. it’s so much easier to use actvities now… although it highlights the inconvenience of setting the same plugin on every activity…
I ran across a few bugs related to containment types, too – hopefully we can get fixes for that into 4.3.

I also started on a zoom plugin, but got annoyed when I found out Containment’s zoom functions were actually Q_PRIVATE_SLOTs, which means I can’t use them… and all the zoom stuff is implemented in DesktopView anyways, and I’m not sure how I’m going to find out the current zoom level… I mean, I’m sure I could hack something in, but it feels icky. so I’m probably going to sleep on it, and finish that plugin in the morning.

ahhh, it feels nice to be back on schedule. :) hard to believe there’s only a few weeks left, though.

{July 13, 2009}   gsoc week 7

so I did get that rightclick stuff compiling the day I last blogged, and included a bit of code for the panel’s rightclick. :) yay.

later in akademy I spent an afternoon hacking on plugin-specific config, and got some API review. on the way back to vancouver I set aside the half-implemented API review and went back to making the plugin config thing work. airplanes are a good place for getting myself to write code I’d rather avoid; so few distractions. :) of course, git is a must for that. it’d suck to manage all that stuff without local commits.

I now have a configurable title for the menu from my test plugin, yay. :) there are still several bugs in the code, so I need to do some cleanup, but being able to actually use it and see things happen makes me happy. :)

wow, akademy’s over. I miss you guys already.

{July 6, 2009}   gsoc week 6

just a quick update, no screenshots or shiny things right now…

on hte way to madrid I had lots of time to hack, so I started on a contextmenu plugin. this is the one that’ll actually draw the right-click menu we have right now (except in svn it’s reimplemented in *every* containment).

to do this, I first had to deal with the old contextmenu code: it gets called before my plugin code and gets in the way. I stripped out a bunch, threw out some old cruft, and made it work with my plugin system. it went surprisingly smoothly. when you right-click the containment, it calls whichever plugin is bound to rightclick. when you rightclick an applet, it calls a different function in that plugin to get the containment actions, so that you still have that “foo Activity Options” submenu. :) yay, zero regressions!

so then I needed a plugin that provided the data. first I made a plugin that just blindly forwarded the containment’s contextActions. then I moved the simple actions, the ones that the containment was actually pulling from libplasma, into the plugin. now I’m moving *all* the actions from DefaultDesktop into the plugin. :) I haven’t got that part to compile yet, but I’m sure I’ll get some more hacking time before akademy is over. :)

once that code compiles, though, there’ll be a lot less code in containments. :) then I’ll need to either make a similar plugin for the panel, or just make that same plugin use panel actions when appropriate. in a few weeks I’ll also make it configurable, so that I can have zoom actions in *my* contextmenu. :)

for now, though, there are presentations going on, and people all around, so I’m going to go enjoy akademy. :)

{June 29, 2009}   gsoc week 5

so for last week I was in berlin for linuxtag… I’ll blog more about that later. now I’m in oslo, where it is unreasonably hot.

at linuxtag I spent a few mornings hacking on my gsoc project, and a couple of afternoons finding random people to test it on. :) after two model-view attempts the previous week, I decided to take the “fuck model-view” approach this time. it’s highly unlikely that there will ever be more than a dozen of these kind of plugins, so I don’t need scalability, just something small and simple. I made a widget that shows one plugin, and stuck a bunch of them in a scrollarea. :)

it could still use some tweaking, but I think this is a much more intuitive layout. it could be a bit more obvious what to do after clicking the input button, though…

anyways, now that this is committed, and it’s in good enough shape to live with for a while, I’ll be moving on to the contextmenu plugin i think. either that or I’ll make that “configure” button work. right now I’m just going to sleeeeeep.

et cetera