Tag Archives: real life

campkde, day 2-3

BlaBla

When I’m at KDE events usually I don’t really find time to write that much, by the way, this week I’m in San Diego at CampKDE, we’re now at day 3, the third day of talks, today the lighting talks, together with tutorials and BOFs. All the talks were really interesting, I also gave a talk on the netbook stuff, you can find slides here πŸ™‚ It was probably one of the first important KDE talks i gave and gone pretty well (since all the english still don’t belong to me :p)

I basically talked about what netbooks are now, what they should be and why the situation right now isn’t so happy. This driven us to do something about that, so i described what the principles behind the Plasma Netbook project are and what its components are (i.e. why the shell it’s done the wqy is done, why the Search And Launch and why the at first strange concept of the newspaper thinghie) maybe one of this days i’ll write a longer synopsys of the talk or hmm maybe not πŸ™‚

Then, later in the night, watching all night Chani and Troy attempting to sing Eagles and Sinatra was, hmm, how we could say it… “fascinating” :p

New job

BlaBla

A new quite interesting chapter of my life is started since quite some time, I didn’t want to say too much about it until everything was settled down and up to speed. But now i guess the time has come, let me introduce my new employer, a pretty familiar and constant presence in the KDE development:

Qt development frameworks

Thanks to the generous support of those people, these days known as Qt Development Frameworks (and the mother company Nokia of course), I’ll be sponsored to work full time on KDE, in particular on the Plasma libraries and shells, especially the Plasma netbook project, that is taking up shape quite nicely. Plus there will be another quite cool Qt-related project

I will remain based here in Italy, but especially starting from next year perhaps it would be more probable to see me wandering around conferences around the world, we’ll see πŸ™‚

What i can say: Qt Development Frameworks (or: our little old dear trolls) rocks!

Looking back at Tokamak 3

BlaBla

I’m starting this entry on the train on the way home from Tokamak (and finishing it at home). Looking back it was probably the best KDE event I ever been. I’m already missing each one on every person that was there.
>Fisrt of all I want to thank Mario Fux forhosting the event. It was a really big job for him and everything was gone perfectly smootly.
The place was of breathtaking beauty, I didn’t brought a camera myself but you can see from other blog entries on planetkde photos of this beautiful place. Last day we gone at the bottom of the Motterhorn mountain with the cablecar. This mountain is beautiful because it’s an huge block of rock of the exact shape you would expect from a mountain, really makes you remember how tiny human being are on this planet (yeah, sounds clich

Say something Tokamak

BlaBla

Didn’t really find much time to blog at tokamak. Anyways, what I’ve been doing?

  • The netbook shell has found a new home in kdebase, so now if you build trunk it will be here and will definitely be here for the release of KDE 4.4. This is realy important because it makes easier for people to try it right now without having to compile components from playground. Another important reason for the move is the reuse of the existing coomponents, in particular the new widgets explorer that has been merged from the Gsoc project of Ana, that makes the experience of both plasma-desktop and plasma-netbook much more pleasant. Not much to add right now but stay tuned for a screencast in the next few days.
  • The KnotificationItem library, that is the client of the new systemtray specification has been merged in the KDEUI module. This means is no more experimental and all applications can start to use it without fears of binary incompatibilities. At this point the start of a Freedesktop standardization seems much more realistic.
  • Ad oh well, we are all been busy in refactoring and moving aroundstuff, so while there could be some instabilities in trunk right now, the plasma library will become much more clean and robust in the future.
  • Anyways, many props goes to Rob and Ana that have gone trough the endeavour of merging their pretty big Gsoc projects, this did mean work and work and work, but i’m speechless about the quality of the projects. Ana’s widget explorer makes plasmamuch more usable and pleasant to use, Rob’s remore widgets are well, revolutionary, can’t find other words, but i’m not gonna to explain them here, they can do a much better job.

Gran Canaria

BlaBla

It really doesn’t seem true GCDS is almost over (just a day remainig, how sad :/), and I’m kinda realizing just now that the internets actually exists, so I didn’t blogged at all while here, that happens when I can actually talk in person to most of the internet I care :p

What I can say, the location is fantastic, met some old faces and some new (hello, gnomies :p) and the whole thing has been quite productive, maybe not much on the code side but definitely on the design and the planning part.

We have got some crazy ideas about the ZUI and there is a new plan of collaboration with Kwin that will make the workspace even more integrated.

I’m also veryvery happy with the progress so far by our gsoc students (unfortunately only Chani and Ana are here, this period of the year kinda sucks for students unfortunately), most of their work will probaly be in KDE4.4 (being tired at late night made me write KDE 4.2, DOH!:P)

But what I’m more excited is the Plasma on Netbook project, if the implementation will go straightforward enough, it looks like we something usable is not too far ™, stay tuned :). WEll, actually don’t try to use it now because me and Arthur are turning the thing upside down at the moment, so it will eat your children πŸ™‚

And oh, besides
that on the coding side I’ve continued the work on the embedding of plasmoid into the system tray, continuing our plan to show only what you need, when you need it, screencasts about it to follow in the next days (probably when i will get back home).

A system tray even more Plasma

Software

In KDE 4.3 there is the beginning of the support of the new systemtray protcol with some applications that supports it already, and as said, we hope to get a good percentage of our apps supporting it for 4.4.

But there will be an even more crazy thing, as seen in this picture.

I'm going to gcds

Plasma widgets can now be embedded into the system tray (here the battery icon), there is no config ui at the moment (soon to come, i think will be possible to put here only a tiny subset of them anyways)

If you have trunk and want to try it right now you can do the following. Open ~/.kde4/share/config/plasma-desktop-appletrc, look for the systray entry and if for instance its entry is [Containments][3][Applets][63] add a new entry that looks like:

[Containments][3][Applets][63][Configuration][Applets][137]
geometry=24,2,22,22
immutability=1
plugin=battery
zvalue=0

Oh, and by the way: I'm going to gcds

TokaTalks

BlaBla

Yesterday talks were wicked interesting, especially the Alexis talk about the new animation framework was really breathtaking.
Aaanyways, this is kinda a synopsis of what i talked about in my part during
the talk session yesterday at Tokamak, slides
here,
it’s quickly written in few minutes, so the english it’s a total horror,
but i feel it could be kinda interesting anyways πŸ™‚

Themes

Pretty much everything you see in Plasma is based on SVG graphics,
this means that you have a really high degree of customizability
controlled by the Plasma theme. This also means that compared to
classical Qt themes the entry barrier is significantly lower, because
of course you have to be a good designer to make one, but not a
programmer, while to do a Qt theme you have to be both and this is a
really really rare thing.

Also, since themes are pure graphics without binary code they are
completely platform independent so they can be distributed trough the
GHNS framework.

Being vector graphics, we can display them without problem from
very little screen to huge monsters when we will have 600dpi screens
that won’t be a problem, specially for the theme elements based on
the FrameSvg concept.

From a programmer point of view using the theme graphics is quite
easy too, because the two main classes that manages Svg themes (Svg
and FrameSvg) are very abstracted, so you won’t have to bother that
the graphics is actually a Svg.

Plasma themes will be installed under your KDE installation prefix
under share/apps/desktopthemes. The filesystem structure inside the
theme has got two main subfolders: widgets, meant for element
drawn on canvas and dialogs, meant for elements that are
actually a top level window. There are two particular and optional
subfolders: the first is locolor, that will have the same two
widgets and dialogs subfolders meant to be used when the theme is
displayed on screens with less than 16 bit color depth.

The other folder is called opaque and has replacements for
the elements that are a top level widget when the desktop effects are
turned off, that’s because in this case we won’t be able to have a
semitransparent window, so we won’t be able to have luxuries like
antialiased borders or drop shadows, if you have a rounded border
there you should use the good old pixelart tecnique from the 80’s.

In order to load an Svg from the current theme is sufficient to
use the setImagePath() function of Plasma::Svg, where you don’t have
to worry neither of the path of the theme or the svg or svgz
extension, so something like “widgets/background” will suffice.

If you are writing a scripted applet you can also include the
graphics alongside the applet code and distribute everything in a
single package, from a javascript applet for instance it will be
sufficient to call the function plasmoid.findSvg(“foo”) and the
proper foo.svg file will be located for you.

That said however now i have to get a bit annoying with some
advices: you should be really really careful when you add custom
graphics in your applet, both when you install it alongside your c++
applet and also when you embed it in the package of your scripted
applet, because your additional graphics must work with as much
themes as possible, and this is an hell lot difficult. You should at
least try it with both a dark and a light theme, but in the end… if
you want to do that, think again πŸ™‚

Boring implementation details

Usually in your applet won’t have to directly paint Svgs, because
if you just use the default plasma widgets you’ll have the svg
painting done for you, but if you have to draw some svg elements you
have to know two classes: Plasma::Svg and Plasma::FrameSvg.

The mighty machine that manages all the svg painting in Plasma is
the Plasma::svg class, that internally uses the QSvgRenderer class,
but optimizes it as much as possible: in the context of the whole
Plasma application for each svg file we get an unique shared svg
renderer and the rendering result is saved to disk thanks to a
KPixmapCache, that can avoid the creation of renderer to a satisfatry
degree: in the second plasma start won’t be created a single renderer
until you resize something, saving a bit of startup time and some
megs of ram.

The most important functions you are interested if you want to use
a Svg are its several paint functions (overloaded with QPoints or
QRects as parameters) the already mentioned setImagePath() resize()
and various functions to access the svg sub elements like
hasElement(), elementSize() and elementRect().

The other class used in plasma to render Svgs works at a slightly
higher level of abstraction and is Plasma::FrameSvg. Usually widgets
are mostly rectangular things, but even if Svg is scalable that
doesn’t mean the result will look pretty, take a look at the slides
example for instance, where a
default applet background is heavily vertically stretched, so the
horizontal borders become thicker that the vertical ones, and to make
things worse they usually aren’t even an integer number of pixels
making the result to look really blurred.

So, what is there in the default applet background? We can see
there are actually 9 pieces: the corners, the edges and the central
part (called with a great stretch of fantasy center, top, topleft,
topright, left,right,bottom, bottomright and bottomleft). When the
thing will get painted not all elements will be scaled, it’s
important that the corners won’t be never ever scaled, while the
horizontal edges will be scaled only horizontally and similarly the
vertical edges will be scaled only vertically, while the center
element will scale freely.

From a boring code standpoint FrameSvg inherit the Svg class, so
all the stuff that is available in Svg is available in FrameSvg too,
but with the difference that you want to resize the image with
resizeFrame() that uses the method i talked before and you’ll paint
the correctly resize Svg with paintFrame(), while paint() is still
useful to paint single elements in the Svg. Also a single Svg can
contain multiple series of 9 elements, with the names differentiated
by a proper prefix, that can be chosen with the setElementPrefix()
function.

University

BlaBla

After many many years, way more of what i would have liked to, today i finished the university, with the defense on my thesis (a weirdo thing about ontologies describing European directives, a PHP+postgresql monster i’m quite proud about after all).

Now even if i will probably continue working in the uni for a (hope not too long) while, it’s really a weeeird sensation knowing that something that took over a quite big chunk of my life it’s actually over.

I hope to be able to continue to hang around and hack on plasma as much as i can, as i feel in the last year KDE became a quite positive part of my life that i’m very happy about πŸ™‚

As long as I will still work for the university it won’t change that much, since i will continue to do pretty much the same thing, and after that, bah, who knows, but for now i don’t want to think about that, just be happy for a bit :p

rain rain rain

BlaBla

It’s some days that it doesn’t happen anything but rain, rain and also well, rain. Starting to get pissed off and the rivers are starting to get hmm, “interesting”…
massive Chisone