More multitouchy fun

Sorry, nothing related to sex! Since my previous post, I didn’t actually hack much on getting MPX working, mostly blocking on the lack of ideas about a good API. That was until ImendioConf, where a talk with Richard about the subject made ideas start flowing, so here’s my late christmas present!

http://github.com/garnacho/gtk-mpx/tree/mpx

Besides making GDK use XInput 2.0, The main change is at the GtkWidget level, I’ve introduced GtkDeviceGroup and the “multidevice-event” signal. GtkDeviceGroup is just a container for GdkDevices, each widget can have several GtkDeviceGroups. The “multidevice-event” reports grouped motion events for the devices contained in a GtkDeviceGroup, it also provides hints about the latest event that happened and whether a device was just added,removed or updated.

The idea is, a widget would add devices to a group on button-press, enter-notify… remove them on button-release, leave-notify… and would get grouped motion events for all these devices in between. In the repo there are also a couple of test apps to show this working.

Obviously, there are quite some things left, I’ve collected missing stuff I’ve identified in the wiki, so if you feel curious about multitouch, compile xorg and help out!

And now of course, some videos of the examples :)

(Post) Guadec hack

No! this isn’t another “added tabs to $APP” [1], Instead I decided to spend my hacking time on getting MPX work with GTK+. Surprisingly, gdk is 99% prepared to handle multiple pointers, so besides adding support there for the new XInput method to handle device grabs, most of the remaining work should just be focused on making GtkWidgets deal sanely with multiple pointers (madness awaits there…). Here’s a “screencast” of my proof app, apologies for the quality, trying to record and use both the nipple thingy and the touchpad isn’t quite easy :)

GTK+ getting along with MPX

Also, I’ve spent one extra week in Istanbul and surroundings with Mitch and Pia, It has proven to be a really beautiful place full of life, returning to Turkey is a must.

The Marmara sea from Büyükada coast

[1] You caught me guys :), I was seriously concerned about your sanity for a while

Update: In case it isn’t clear, the patch isn’t really far from the “evil hack” state, I’ll just submit it to bugzilla as soon as there’s some reasonable base work in which other smaller patches can be developed incrementally.

Too far…

Almost everybody had some boss that was too exigent about how you spend your work time, but this time it got too far! This is the backtrace I’ve got from epiphany several times:

Program received signal SIGSEGV, Segmentation fault.
...
(gdb) bt
#0  ephy_node_db_is_immutable (db=0x854f2c0)
at /build/buildd/epiphany-browser-2.22.0/lib/ephy-node-db.c:174
#1  0x080a7ad9 in resolver_found_cb (resolver=0x8507240, interface=3,
protocol=GA_PROTOCOL_INET, name=0x951d5d8 "Richard Hult",
type=0x9229338 "_http._tcp", domain=0x9705e98 "local",
host_name=0x9166308 "Celery.local", address=0xbfa12944,
port=<value optimized out>, txt=0x883a960, flags=4, data=0x8547620)
at /build/buildd/epiphany-browser-2.22.0/src/bookmarks/ephy-bookmarks.c:979
#2  0xb7f86fbf in ga_signals_marshal_VOID__INT_ENUM_STRING_STRING_STRING_STRING_POINTER_INT_POINTER_INT () from /usr/lib/libavahi-gobject.so.0
...

Please, at least let me browse API docs and repositories, I promise I’ll behave!

Two new children in Cookieville

It’s been already more than 6 years since my first contribution to what then was called the ximian-setup-tools. Shortly after that, I was given the oportunity to maintain them, which has been quite rewarding during much time. But lately I’ve grown the urge to move on and hack on other things I nowadays consider more exciting or funny.

So, after 2.21.x I’ll consider both gnome-system-tools and liboobs orphan, left in the cold, crying for a new maintainer! If you want to add some emotion to your life, have these midnight wakeups because you forgot to upload that tarball or just think you had to be maintainer once in your life, please contact me!

If anyone wants to bite the bullet, I’ll of course be around to clear up doubts. Else, I think I’ll just be doing tarballs occassionally.

Ain’t it pretty, ma?

My USB mouse is getting crazy, it sometimes moves the pointer by itself to some random corner and refuses to get it out the there for a while. This leaves me confused for a few seconds, shaking the mouse like crazy and looking at all corners, trying to locate the pointer again.

Of course, the “locate pointer” option in control-center is quite useful, but looked quite ugly enough to make me deactive it again for a couple of times, until I worked on that some days ago!

  locate-pointer-composited.gif
click to see the animation

Obviously, this effect will only be used if there is a composite manager available, a quite fun hack. I’m really glad that it has been included in gnome-settings-daemon 2.21.x

 

M-x gtk-doc-insert

If you began using emacs22 and you were used to gtk-doc.el, you probably noticed they aren’t good friends. I had to wipe the dust to my lisp, but I’m glad to tell you there’s already a fix! Right, it also modifies the function not to insert unnecessary trailing whitespaces. Emacs should enable show-trailing-whitespace by default, so we’d all hate them :)

Giving the last kicks in libgnomeui’s butt

One of the things I’ve been doing lately at Imendio is a GIO/GVfs powered GtkFileSystem implementation, finally today it reached a really usable state (there are a few quirks left though), I’m already thinking in moving the GnomeVFS implementation away and put this one in its place :)

On the API, I must say Alex has done a really nice job, GFile has a really powerful and easy to use API, thumbs up!

If you want to play with it, clone the the module from git://git.imendio.com/carlos/gtk-file-system-gvfs.git (or see it here), give it a spin and tell me how it went!

Of course there’s a screenshot for the unbelievers! we could play “spot the difference” with it:

Screenshot for unbelievers!

Update: WordPress sucks, it insisted in linking the image to some place inside my admin page…

Animate/Inanimate

Due to the “Canvas evaluation moderator” GtkTask, I’ve been informing myself quite a lot about the different available canvases and their possibilities, and one concrete feature available in some canvases grabbed my attention: timelines.

Timelines could be beneficial not only for canvas, but probably toolkit-wide to some extent, as people wants bling here and there, and animations are a part of it. So I began experimenting with a timeline object (which I’ve just submitted to bugzilla, see #444659) and the results don’t look bad so far:



Useless animation (Code)



Useless animation, applied (#328090)

Giggle 0.3 released

It arrived! the third release of giggle! Slimmer and faster than ever! Here are the relevant links:

Visit the project page for more information!

Call for artists and tango lovers: Giggle is still (still!) in need of an icon! Is there any brave artist ready to bite the bullet and create one? :)

First Free Software University Contest

I’m heading to Seville a bit later this evening, it’ll be great to meet the contest participants and some friends and see Seville again!

It’s never too late to meet again

I’m still here in Galicia visiting a friend in Santiago de Compostela, after spending the last few days in the excellent Guademy, which was a great opportunity to meet old friends and new people from both sides of the free software desktop. Here’s a minidiary I composed:

Thursday

Arrived at A Coruña in the evening, met some of the organizers, went to the conference place (The university of A Coruña) and witnessed the more wildest university party I’ve ever seen, 2 huge tents with concerts, lots of people drinking outside, in the corridors, in the classrooms… Street Fighter and Fifa ‘0X competitions in projectors, a DJ… It’s totally irrelevant for the conference, but was awesome enough to tell :)

Friday

First day of Guademy (which means GUAdemy DEstroys MYths), funnily
enough, there were two crossed laser sabers and the GNOME/KDE logos in
the posters. Missed the beginning of the inauguration (Some local politician talking about how good is collaboration and such, would like to see them apply this too :P), highlighted talks were about the QT Java and python bindings and two about GTK+, mine and one about using threads with it.

My talk finally turned a “How to use the latest APIs”, seemed more popular, and was indeed welcome by the public.

After that there was a talk about Kuiserver, a KDE oriented solution almost equal to Mathusalem, I absolutely think that Kuiserver and Mathusalem should join efforts and at least share the DBus spec, lots of users would be thankful.

After the talk finished, dinner in the same place (they brought pizzas and galician empanada) and after that the queimada, done with pretty strong alcohol, coffee, sugar, fire, and what could seem a satanic rite to strangers (at least, Aaron Seigo was looking quite puzzled)

Saturday

First talk was about developing applications in KDE4, the author was so excited about this that turned a 1h talk into a ~3h one, delaying the whole day. I was late that morning, but it seemed to me more about using KDevelop than about programming, but they have a great IDE for the environment indeed…

After lunch there was a football match, being the result GNOME 5 – KDE 2, go GNOME!

Other highlighted talks where about the build brigade, using valgrind (KDE oriented), system-tools-backends (mine, got good public response here), tinymail and the state of KDE (by Aaron Seigo)

That talk was about how exciting was KDE4 and all the new technologies it introduced. It’s fun how many of them are based in, or how do they resemble things that are already in GNOME (although they try to support native APIs somewhere):

  • Accessibility support: they’re shamelessly using ATK though DBus :P.
  • Okular: is it me or it looks like evince? maybe poppler is responsible…
  • Usability studies: a HIG!
  • Phonon: with a Gstreamer backend
  • Solid: with HAL backend
  • Decibel (VOIP service arquitecture)
  • Akonady (contacts and messaging store): e-d-s? it seems they’ll se it more widely, though
  • Sonnet (Spelling and grammar checking)
  • Kross (Application automation, scriptability)
  • ThreadWeaver (Easy multi-threading): easy to use worker thread
    pattern.

  • Strigi: like beagle and the useful-for-all tracker.
  • Plasma (workspace evolving): maybe I didn’t get it, or wasn’t attending properly, but after all the “it’s going to be
    incredible” speech, he showed a mixture of beagle and the “run
    application” dialog.

After that, an excellent dinner, featuring octopus and other regional dishes and lots of beer, and after that some more partying…

Sunday

Last day, woke up soonish to the conference place, rumors said that Aaron Seigo arrived at 9AM to the hotel, and some people was “wow, the KDE people likes party”, they don’t know us… :P

Seen the Buoh, Okular and “Freedesktop integration” talks. It’s curious how almost every feature highlighted in the Okular talk is already present in Evince, and the funniest phrase of that talk: “Yeah, I know it’s slow, but it’s KDE 4” :P.

the “Freedesktop integration”, by Rodrigo Moya, was just an overview of what we have right now, some slides about why shouldn’t we be “fighting” between ourselves and aim to the other OSs share (rough numbers were Linux Desktop: 1%, MacOS:10%, Win: 89%), and the missing areas to make an user switch seamlessly from KDE to GNOME or vice versa, without any loss of relevant information.

Other conclusions

The KDE people was fun and friendly, and all the flaming was just for fun, but it’s easy to assume that the more involved people won’t spend their time flaming seriously. I’m really looking forward for the next Guademy :)