tag:blogger.com,1999:blog-84721200788420806832024-03-14T09:12:56.625+01:00No InspirationChristophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.comBlogger33125tag:blogger.com,1999:blog-8472120078842080683.post-70656118261994354252013-03-25T10:48:00.000+01:002013-03-25T10:48:40.192+01:00SPICE on OSX, take 2<div dir="ltr" style="text-align: left;" trbidi="on">
A while back, I made a <a href="http://cfergeau.blogspot.fr/2011/06/spicy-apples.html">Vinagre build for OSX</a>. However, reproducing this build needed lots of manual tweaking, the build was not working on newer OSX versions, and in the mean time, the recommended SPICE client became <a href="http://git.fedorahosted.org/git/virt-viewer.git">remote-viewer</a>. In short, this work was obsolete. <br />
<br />
I've recently looked again at this, but this time with the goal of <a href="http://spice-space.org/page/OSX_Client">documenting the build process</a>, and making the build as easy as possible to reproduce. This is once again based off <a href="http://www.gtk.org/download/macos.php">gtk-osx</a>, with an additional moduleset containing the SPICE modules, and a script to download/install most of what is needed. I've also switched to building remote-viewer instead of vinagre <br />
<br />
This time, I've <a href="http://spice-space.org/page/OSX_Client/Build">documented</a> all of this work, but all you should have to do to build remote-viewer for OSX is to run a script, copy a configuration file to the right place, and then run a usual jhbuild build. <a href="http://spice-space.org/page/OSX_Client/Build">Read the documentation</a> for more detailed information about how to do an OSX build.<br />
<br />
I've uploaded a <a href="http://people.freedesktop.org/~teuf/spice-gtk-osx/dmg/0.3/RemoteViewer.dmg">binary</a> built using these instructions, but it's lacking some features (USB redirection comes to mind), and it's slow, etc, etc, so .... patches welcome! ;) Feel free to contact me if you are interested in making OSX builds and need help getting started, have build issues, ...</div>
Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com10tag:blogger.com,1999:blog-8472120078842080683.post-90279074786682566742012-12-11T11:33:00.000+01:002012-12-11T11:33:28.260+01:00FOSDEM 2013 Crossdesktop devroom Call for talks<div dir="ltr" style="text-align: left;" trbidi="on">
The<a href="https://mail.gnome.org/archives/desktop-devel-list/2012-November/msg00053.html"> Call for talks</a> for the Crossdesktop devroom at <a href="https://fosdem.org/2013/">FOSDEM 2013</a> is getting to its end this Friday. Don't wait and submit your talk proposal about your favourite part of GNOME now!<br />
<br />
Proposals should be sent to the <a href="https://lists.fosdem.org/listinfo/crossdesktop-devroom">crossdesktop devroom mailing list</a> (you don't have to subscribe).</div>
Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-4980685406897824852012-08-09T14:59:00.000+02:002012-08-09T15:00:53.497+02:00¿ Qué estabas haciendo ?<div dir="ltr" style="text-align: left;" trbidi="on">
9 years after my first and only <a href="http://2003.guadec.org/">GUADEC</a>, I've finally been able to go back to GUADEC, and guess what? It was amazing to be there!<br />
<br />
This was a great opportunity to meet plenty of people I only knew from IRC, in particular seb128 whom I have known for 10 years and never met. And let's not forget all our amazing interns from the <a href="http://projects.gnome.org/outreach/women/">OPW</a> and <a href="http://code.google.com/soc/">GSoC</a> programs, this was very refreshing to see how enthusiastic they all were about GUADEC.<br />
<br />
Quick memory drop of the main highlights for this week :<br />
<ul style="text-align: left;">
<li>Lots of tapas, <a href="http://portal.estrellagalicia.es/es/index.php?idioma=es">Estrella Galicia</a> and beach ;) </li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm9.staticflickr.com/8001/7705373996_9e8378b3cc_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="http://farm9.staticflickr.com/8001/7705373996_9e8378b3cc_c.jpg" width="200" /></a></div>
<br />
<ul style="text-align: left;">
<li>Summer evenings in A Coruña can get cold, don't forget to take some kind of sweater with you when you travel there!</li>
<li>In the end, I've done a lot more talking with people in the lobby and sitting in the sunny grass than actual talk attendance</li>
<li>It's getting harder and harder to keep the existence of the French cabal secret, we'll have to do something about this!</li>
<li>Huge kudos to the organizers, everything was perfectly organized, network was great (save for the unexpected flood ;), and also thanks to the sponsors for the various parties and for making that event possible</li>
</ul>
As for the talks, here are the things I've done/attended during this week:<br />
<ul style="text-align: left;">
<li>I've been to Nathan Willis <a href="https://www.gpul.org/indico/contributionDisplay.py?contribId=51&confId=0">"How to fix a font"</a> talk, interesting overview of various font issues. He was also looking for ways to get native speakers feedback since he is sometimes designing cyrillic fonts, and it can be hard to know what looks good or not. One possible way of achieving this would be to get the various GNOME language teams involved </li>
<li><a href="http://zee-nix.blogspot.fr/">Zeeshan</a> made a presentation about <a href="https://www.gpul.org/indico/contributionDisplay.py?contribId=9&confId=0">GNOME Boxes</a>, cool as usual, but he could have done better on the photos of me he used ;)</li>
<li>Marc-André and I gave a talk about building Windows applications from your linux application using MinGW, attendance was on the low side (about 15 people), but everyone seemed very interested in building for Windows. Quick spoiler for the talk: <span style="font-family: "Courier New", Courier, monospace;">mingw32-configure && make -j4</span>, all the other gory details can be found in <a href="https://www.gpul.org/indico/materialDisplay.py?contribId=58&materialId=slides&confId=0">our slides</a></li>
<li>Together with some members of the <strike>French cabal</strike> GNOME-fr, I attended a meeting with the board to defend a <a href="http://www.openstreetmap.org/?lat=47.11&lon=2.48&zoom=6&layers=Q&mlat=48.58&mlon=7.75">Strasbourg</a> bid for GUADEC 2013, it was more of a session to discuss about the most important items to have in the bid rather than an actual defence, I summed up my notes in a (French) <a href="https://mail.gnome.org/archives/gnome-fr-list/2012-July/msg00009.html">email</a>. Now we've got work to do :)</li>
<li>We also had a 2 hour meeting about <a href="https://live.gnome.org/Boxes/">GNOME Boxes</a> design. Marc-André, Zeeshan and Jonathan were present as well as our designers (Jakub and Jon), our Summer of Code students, Fidêncio and Jovanka, and other members of the SPICE team (Alon and Hans). This was a pretty productive meeting where we could go over the various small issues in Boxes design that were uncovered during development, and discuss with the designers how to best fix them</li>
<li>Last but not least, on Sunday all the GSoC and OPW interns who could attend GUADEC gave <a href="https://www.gpul.org/indico/getFile.py/access?contribId=36&resId=0&materialId=slides&confId=0">lightning talks</a> to present their work. All the talks went well, and some very cool stuff was presented. It was just great to meet all these new heads and to feel all this energy around GNOME and free software</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm9.staticflickr.com/8164/7669127752_b6597b76b8_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://farm9.staticflickr.com/8164/7669127752_b6597b76b8_c.jpg" width="320" /></a></div>
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://farm9.staticflickr.com/8002/7669130772_12d553f97e_c.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="211" src="http://farm9.staticflickr.com/8002/7669130772_12d553f97e_c.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fidêncio and Jovanka giving their lightning talks</td><td class="tr-caption" style="text-align: center;"><br /></td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<br />
<br />
All in all, this GUADEC was a wonderful experience, I'm very happy to have been there. See you all next year! Hopefully in Strasbourg ;)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm9.staticflickr.com/8150/7670088838_0bbc4e189e_h.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://farm9.staticflickr.com/8150/7670088838_0bbc4e189e_h.jpg" width="320" /></a></div>
<br />
<br />
<span style="font-size: x-small;">The last 3 photos in this post were taken by <a href="http://www.flickr.com/photos/anarey/">Ana Rey</a></span> <span style="font-size: x-small;">and are shared under a <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA 2.0 licence</a></span><br />
<ul style="text-align: left;">
</ul>
<ul style="text-align: left;">
</ul>
</div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-87165834070502404942012-07-23T12:19:00.001+02:002012-07-23T12:19:05.044+02:00Outside Boxes<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
oVirt</h3>
Let's start this post with a quick presentation of oVirt (you'll understand why in a few paragraphs...).<br />
<a href="http://www.ovirt.org/">oVirt</a> is a free project providing management, monitoring and provisioning of KVM virtual machines on multiple hosts. It comes with a web interface to create and manage virtual machines, hypervisor nodes, storage, ... and with a user portal for those who just want to connect to an already existing virtual machine.<br />
The way the user portal works is that you log into the portal from your browser, then you choose the virtual machine you want to connect to, and a browser plugin will take over and spawn an external binary (these days it's <a href="http://linux.die.net/man/1/virt-viewer">remote-viewer</a>)<br />
oVirt also comes with an extensive <a href="http://wiki.ovirt.org/wiki/API_-_oVirt_workshop_November_2011_Notes">REST API</a> which lets you do programmatically the same thing as you can do from oVirt web UIs. Moreover, it has an <a href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Virtualization/3.0/html/REST_API_Guide/index.html">extensive documentation</a>.<br />
<br />
<h3 style="text-align: left;">
But what about GNOME? </h3>
And now we are finally coming as to why I'm talking about all of this :) Lately, I've been hacking on <a href="https://live.gnome.org/Design/Apps/Boxes">Boxes</a>, and since one of its goals is to view, access, and use shared connection / machine, I've decided it would be fun to make it support oVirt connections! This would make it easier for Boxes users to connect to oVirt virtual machines without having to go through their browser.<br />
<br />
<a href="http://git.gnome.org/browse/librest/">librest</a> already provides a good low-level GObject library to access REST services (though it was <a href="https://bugzilla.gnome.org/show_bug.cgi?id=658937">missing authentication support</a>), so I used it to build a higher level library which wraps the oVirt REST accesses: <a href="http://cgit.freedesktop.org/%7Eteuf/govirt/">libgovirt</a>. This library uses GObject and gobject-introspection, which gives bindings to several other languages for free (including vala which is needed for Boxes). It also provides asynchronous methods for all its remote operations.<br />
The library is still young and only implements the few REST operations I needed (list oVirt virtual machines, get VM connection details, generate temporary VM display password, ...), but this is enough for Boxes needs ;)<br />
<br />
Once this library was in good shape, using it in Boxes was quite easy as the existing code was modular enough. All I had to do was to add a new URI type (ovirt://), and add a new Machine subclass to handle oVirt VMs, but most of the work is done by the libgovirt library. <br />
<br />
This work is not yet merged upstream but can be seen in <a href="http://cgit.freedesktop.org/%7Eteuf/gnome-boxes/log/?h=ovirt">my personal git repository</a>. After some small cleanups and a libgovirt release, it should be in good shape for an upstream review and integration. As for libgovirt, there is a lot of API to bind (help welcome!), but binding <a href="https://bugzilla.redhat.com/show_bug.cgi?id=807384">this new 3.1 API</a> will be mandatory to be able to connect to all oVirt-managed VMs. One possible way forward for libgovirt would be to leverage the python oVirt REST binding generator from <a href="http://gerrit.ovirt.org/gitweb?p=ovirt-engine-sdk.git;a=tree;f=src/codegen">ovirt-engine-sdk</a>.<br />
<br />
And before ending this blog post, mandatory screenshots!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-xXNUSOUxvxU/UAmKo75CnOI/AAAAAAAAArE/GfqJ0QUo2mk/s1600/boxes-ovirt-auth.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="http://2.bp.blogspot.com/-xXNUSOUxvxU/UAmKo75CnOI/AAAAAAAAArE/GfqJ0QUo2mk/s320/boxes-ovirt-auth.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Authentication to an oVirt broker</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-TRSr4VzkWWA/UAmKqiW2DPI/AAAAAAAAArM/GMA1_Yj-ALA/s1600/boxes-ovirt-thumbs.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="http://4.bp.blogspot.com/-TRSr4VzkWWA/UAmKqiW2DPI/AAAAAAAAArM/GMA1_Yj-ALA/s320/boxes-ovirt-thumbs.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Boxes from the oVirt broker</td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
</div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-55848249330407119872012-01-31T10:24:00.000+01:002012-01-31T10:24:30.033+01:00Going to FOSDEM!<div dir="ltr" style="text-align: left;" trbidi="on">This is this time of the year again, <a href="http://fosdem.org/2012/">FOSDEM</a> will take place in Brussels next week-end. This is one of my favourite free software event, lots of interesting talks, lots of interesting people, and lots of energy everywhere. This year, it looks like it will be the best FOSDEM ever! More devrooms, more than 400 talks, more everything!<br />
<br />
I've helped again organizing the <a href="http://fosdem.org/2012/schedule/track/crossdesktop_devroom">crossdesktop devroom</a>. Among these talks, I can only recommend the <a href="http://fosdem.org/2012/schedule/event/gnomeboxes">gnome-boxes presentation</a> that Marc-André and <a href="http://zee-nix.blogspot.com/">Zeeshan</a> will be giving :) While I'm at it, here are a few more shameless plugs: <a href="http://hansdegoede.livejournal.com/">Hans de Goede</a> will be giving 2 <a href="http://spice-space.org/">SPICE</a> talks in the Virtualization devroom, one <a href="http://fosdem.org/2012/schedule/event/spice">general presentation of SPICE</a>, and one where he will describe the <a href="http://fosdem.org/2012/schedule/event/usb_network_redirect">USB redirection support in SPICE</a>. And <a href="http://blog.saymoo.org/">Alon Levy</a> will present his work to <a href="http://fosdem.org/2012/schedule/event/xorg_xspice">interact with an X server through SPICE</a> without using a virtual machine.<br />
<br />
Last but not least, there will also be a GNOME booth with some goodies...<br />
<br />
See you all there in a few days!</div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-46703219972843201662012-01-23T12:54:00.000+01:002012-01-23T12:54:37.653+01:00Unpacking Boxes...<div dir="ltr" style="text-align: left;" trbidi="on">For the impatient people running Fedora 16 but who still want to get an aperçu of <a href="https://live.gnome.org/Boxes">Boxes</a>, today's your lucky day! I set up a preview repository with all the needed package to install Boxes on Fedora 16.<br />
If you want to try it, download <a href="http://teuf.fedorapeople.org/boxes/gnome-boxes-preview.repo">this file</a> to<span style="font-family: "Courier New",Courier,monospace;"> /etc/yum.repos.d</span> and then run <span style="font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="font-family: "Courier New",Courier,monospace;">yum install gnome-boxes && yum update</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-MSs74JJntLA/Tx1I5JI4_VI/AAAAAAAAAqQ/ZSvcC0Fkbv4/s1600/boxes2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="http://3.bp.blogspot.com/-MSs74JJntLA/Tx1I5JI4_VI/AAAAAAAAAqQ/ZSvcC0Fkbv4/s320/boxes2.png" width="320" /></a></div><br />
<div style="font-family: inherit;"><br />
</div><span style="font-family: inherit;"><span style="font-family: inherit;">To go back to your previous setup, you can either use the convenient </span><span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: inherit;">yum history</span><span style="font-family: inherit;"><span style="font-family: inherit;">, or remove</span> </span></span></span><span style="font-family: "Courier New",Courier,monospace;">/etc/yum.repos.d/gnome-boxes-preview.repo</span><span style="font-family: inherit;"> and use</span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: inherit;"><span style="font-family: "Courier New",Courier,monospace;">yum remove libvirt-glib && yum distro-sync</span></span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: inherit;">Keep in mind that this is a new application still in heavy development, so you're likely to find bugs and missing features. But I'm sure you will enjoy it nonetheless :)</span></span><br />
<br />
<span style="font-family: inherit;">Feel free to join us in <span style="font-family: "Courier New",Courier,monospace;">#boxes</span> on <span style="font-family: "Courier New",Courier,monospace;">irc.gnome.org </span>if you have any issues, or if you just want to chat with us.</span><br />
<br />
<br />
</div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com6tag:blogger.com,1999:blog-8472120078842080683.post-19410464305555400842011-12-16T16:03:00.001+01:002011-12-17T20:42:00.545+01:00FOSDEM Crossdesktop devroom<div dir="ltr" style="text-align: left;" trbidi="on">GNOME, KDE, XFCE, ... will be present at <a href="http://fosdem.org/2012/">FOSDEM</a> this year in the crossdesktop devroom. The <a href="http://mail.gnome.org/archives/desktop-devel-list/2011-November/msg00076.html">call for talks</a> has been out for a few weeks now and the deadline (December 20th) is quickly approaching, it's next Tuesday! So don't delay your talk proposal any further, just email the<a href="https://lists.fosdem.org/listinfo/crossdesktop-devroom"> crossdesktop devroom mailing list</a> now :)<br />
<br />
Talks can be specific, such as <a href="http://archive.fosdem.org/2011/schedule/event/vala">developing GNOME application with Vala</a>; or as general as predictions for the <a href="http://archive.fosdem.org/2011/schedule/event/desktopbrowser">fusion of Desktop and web in 5 years time</a>. Topics that are of interest to the users and developers of all desktop environments are especially welcome. The <a href="http://www.fosdem.org/2011/">FOSDEM 2011</a> <a href="http://archive.fosdem.org/2011/schedule/track/crossdesktop_devroom">schedule</a> might give you some inspiration.</div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-15214636301073914822011-06-17T16:49:00.009+02:002011-06-17T17:42:45.662+02:00Spicy apples<div dir="ltr" style="text-align: left;" trbidi="on">It has been a few months since I've been hired by <a href="http://jobs.redhat.com/">Red Hat</a> to hack on <a href="http://spice-space.org/">Spice</a>, and I realized I haven't blogged as much as I should have :)<br />
<br />
<span style="font-size: large;">Introduction</span><br />
<br />
First, let me introduce Spice quickly. Spice is a <a href="http://www.spicespace.org/docs/spice_protocol.pdf">protocol</a> which then gets implemented in clients such as <a href="http://www.gnome.org/projects/vinagre/">Vinagre</a> (using the <a href="https://gitorious.org/spice-gtk">spice-gtk</a> widget) and in servers (<a href="http://wiki.qemu.org/Main_Page">QEMU</a> or the experimental <a href="http://cgit.freedesktop.org/%7Ealon/xspice/">X11 driver</a>). Using this protocol, the video, sound, keyboard, mouse inputs and ouputs can be abstracted away from a virtual machine. This means you can run a Spice client application on one box to get the display of a QEMU virtual machine running on another box. Or you can have a big server running dozens of virtual machines, and connect to the VM you're interested in from your laptop. Or you use it in a <a href="http://en.wikipedia.org/wiki/Desktop_virtualization">VDI</a> setup where you'll have N different PCs connecting to a single server running N virtual machines.<br />
<br />
One of the thing I've done during these few months at Red Hat is to look into building a Mac client for Spice. Indeed, so far we have a linux client (as well as a GTK widget if you want to embed Spice in your applications, a Windows client, but nothing on Mac OS X. Since I was the only one in the team with a functional OS X install, I was volunteered to look into this port ;)<br />
<br />
<span style="font-size: large;">The long way toward Vinagre on OS X</span><br />
<br />
I started by building the gtk+ OS X port. Using <a href="http://sourceforge.net/apps/trac/gtk-osx/wiki/Build">these build instructions</a>, it was quite straightforward even though it took some time since there were a few bugs to fix here and there in the stack. Then I realized I needed gtk3 and that I had only built gtk2, so I started again, and fixed some more bugs (the glib maintainers <a href="https://bugzilla.gnome.org/show_bug.cgi?id=651920">really</a> didn't <a href="https://bugzilla.gnome.org/show_bug.cgi?id=651959">want</a> me to <a href="https://bugzilla.gnome.org/show_bug.cgi?id=652148">succeed</a> :-) )<br />
<br />
Once I had gtk-demo running, it was time to start thinking about my real goal, getting spice-gtk and vinagre to compile. Luckily, I had made a <a href="http://cgit.freedesktop.org/%7Eteuf/spice-jhbuild/">jhbuild moduleset</a> for these, which I could reuse (after adapting it) for the OS X build since gtk-osx is using jhbuild too. This way, I could focus on the real porting work. The easy bits were tweaking spice-gtk build options to use gstreamer instead of pulse-audio, gthreads instead of coroutines, ... And then I finally had to do some actual porting work ;) This ranged from small fixes due to OS X BSD roots, or to older libraries on OS X, to new code to write because there was some linux/Windows specific code to handle screen detection/resolution changes. And after that, lo and behold, I could connect to my remote VM from my Mac!<br />
<br />
Then, with the help of <a href="http://blogs.gnome.org/elmarco/">Marc-André</a>, I could tackle Vinagre. This mainly meant making some Vinagre dependencies optional (namely gtk-vnc, gnome-keyring and GtkApplication) because I didn't want to compile/use dbus. After some confusion because of a regression in glib causing Vinagre to crash on startup, I was really thrilled to connect to finally connect to a virtual machine running on my work laptop from my Mac OS X laptop!<br />
<br />
While this was great, things were far from being over :) In order for this work to be usable by other people, I had to build an <a href="http://en.wikipedia.org/wiki/Application_bundle">application bundle</a>, this basically means making Vinagre relocatable at runtime. Thanksfully, the work from the people porting gtk+ to OS X came to the rescue once again! They provide an <a href="http://sourceforge.net/apps/trac/gtk-osx/wiki/Bundle">ige-mac-bundler</a> to help generate application bundles for gtk+ applications. I had to tweak it since it's not fully ready for gtk3 yet, and to figure out how to get it to change the location of libpeas plugins, typelibs, pango modules, gdk-pixbuf modules at runtime. The good new is that all these modules provide handy environment variables which help with that (PEAS_PLUGIN_LOADERS_DIR, GI_TYPELIB_PATH, PANGO_SYSCONFDIR and GDK_PIXBUF_MODULE_FILE), but it took quite a bit of trial and error to figure out all of these :) Last but not least, I wrote a few patches for Vinagre to add similar environment variables to locate its data files.<br />
<br />
<span style="font-size: large;">The reward</span><br />
<br />
And here is the <a href="http://people.freedesktop.org/%7Eteuf/spice-gtk-osx/Vinagre.zip">final result</a> (disclaimer: it's still a work in progress) :<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><br />
</div><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxFdXv-oSIiQqgDzSACcqatYxFiGSXGZXc8a38kquVjOujaiHHtWYO2VeGPDioG0pM2ycou5jHxTC-A22XgFg' class='b-hbp-video b-uploaded' frameborder='0'></iframe><br />
<br />
<br />
As you can see in the video above (bigger ogg version <a href="http://people.freedesktop.org/~teuf/spice-gtk-osx/vinagre.ogg">here</a>), it's already working pretty well, you can connect to a VM, go fullscreen, sound is working, ... But as always, there are still some improvements to be done...<br />
The most important one is to upstream the various changes I had to make in Vinagre, spice-gtk and ige-mac-bundler. For spice-gtk, this is mostly done, for Vinagre and ige-mac-bundler, I have to clean up the changes first. I also have to make building Vinagre on OS X much easier And then, there is more work to do to polish the OS X integration, like looking at <a href="http://sourceforge.net/apps/trac/gtk-osx/wiki/Integrate">GtkOSXApplication</a> to get the usual OS X top menu bar, finding a better looking theme, having a native <a href="http://developer.gnome.org/gtk3/3.0/GtkApplication.html">GtkApplication</a> backend, and developing native OS X code for things like monitor detection/resolution changes/... (which is currently not implemented/not working). And obviously, it also needs lots of testing :)<br />
<br />
All in all, I'm pleased with the result so far, it's a really good basis for a rocking Spice OS X client! Any takers for working on an iOS Spice client next ?</div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com16tag:blogger.com,1999:blog-8472120078842080683.post-33933962339813999992011-03-30T00:03:00.000+02:002011-03-30T00:03:35.169+02:00Public Announcements<div dir="ltr" style="text-align: left;" trbidi="on"><span class="Apple-style-span" style="font-size: large;">GNOME 3 in Paris</span><br />
<br />
<span class="Apple-style-span" style="font-size: large;"></span>Thanks to <a href="http://blog.yoboy.fr/">YoBoY</a>, there will be a <a href="http://gnome3.ubuntu-party.org/paris/">GNOME 3 release party</a> in Paris. It will happen on Friday, April 8th, registration is mandatory, and the number of available seats is limited, so register now for the party! There will be some GNOME 3 goodies ;)<br />
<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Summer of Code</span><br />
<br />
<span class="Apple-style-span" style="font-size: large;"></span>If you are a student, you can now <a href="http://www.google-melange.com/">apply</a> for this year Google Summer of Code! GNOME is a mentoring organization this year again, this means you can be paid to hack on GNOME for a whole summer. Just browse our <a href="https://live.gnome.org/SummerOfCode2011/Ideas">list of ideas</a> for potential projects, or you can just <a href="https://live.gnome.org/SummerOfCode2011/Students">write a proposal</a> for any idea that you care about and would make GNOME even cooler!<br />
<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Personal Life</span><br />
<br />
<span class="Apple-style-span" style="font-size: large;"></span>I'm really happy to announce that I've started working at <a href="http://www.redhat.com/">Red Hat</a> last week. I have joined the <a href="http://spice-space.org/">Spice</a> team and I'm looking forward to do great stuff (take over the world, this kind of things ;) with the people working there. Hopefully I'll get my own <a href="http://static.pcinpact.com/images/bd/news/48418-red-hat.jpg">red</a> <a href="http://bostonkayakguy.files.wordpress.com/2008/11/red-hat-lady.jpg">hat</a> soon!<br />
<span class="Apple-style-span" style="font-size: large;"><br />
</span></div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com2tag:blogger.com,1999:blog-8472120078842080683.post-77569902476811885602011-03-23T20:20:00.001+01:002011-03-23T20:34:05.782+01:00Transferring contacts to an iDevice<div dir="ltr" style="text-align: left;" trbidi="on">Recently, I wanted to transfer my addressbook from my good old but dying Sony Ericsson W910i phone to one of Apple iOS devices (aka iPhone 4).<br />
<div><br />
</div><div>Reading the contacts out of the old phone was a bit hackish but pretty straightforward using <a href="http://wammu.eu/">gammu/wammu</a> and a bit of hacking. I didn't manage to import 100% of the data in GMail/evolution-data-server (had to retype a few addresses/phone numbers by hand), but I decided I could live with that.</div><div><br />
</div><div>Then I looked at the computer to iDevice writing, thinking it would be a pretty similar process, ie grab an existing tool, do a bit of fiddling and be done with it. Alas not :) I quickly realized that there was no tool on linux to send contacts to an iDevice. The alternatives involved booting into OS X, or sending a vcf file by mail and opening it on the iDevice. I didn't want to do the former, and the latter didn't work for some reason (and it's cheating anyway ;)</div><div><br />
</div><div>After talking with the nice people on #libimobiledevice, I realized the low-level building blocks were there in <a href="http://www.libimobiledevice.org/">libimobiledevice</a>, so I decided to go ahead and write the missing code (which involved parsing and writing XML plists from the device after figuring out their format). After a few days of hacking, <a href="http://gitorious.org/eds-to-idevice/eds-to-idevice">eds-to-idevice</a> was born! This C program can read contacts from evolution-data-server and writes them to an iDevice.<br />
Be aware that this does not try to handle contact synchronization: when I use it, I tell it to erase all contacts from the iDevice and to unconditionnally write all contacts from evolution-data-server to the iDevice. If it's called multiple times, it will create duplicate contacts on the device.<br />
However, I tried to make the code as generic and reusable as possible, with the hope that someone would pick up the ball and improve it to write a synchronization plugin for one of the linux synchronization framework. Volunteers :) ?<br />
<br />
You can find the code on <a href="http://gitorious.org/eds-to-idevice/eds-to-idevice">gitorious</a> and I made a <a href="http://people.freedesktop.org/~teuf/eds-to-idevice/eds-to-idevice-0.5.tar.bz2">tarball</a>. Enjoy!</div></div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com3tag:blogger.com,1999:blog-8472120078842080683.post-2154236549131028962011-03-19T22:11:00.002+01:002011-03-19T22:35:01.770+01:00GNOME and GSoC 2011We just got the great news that GNOME got <a href="http://www.google-melange.com/gsoc/program/accepted_orgs/google/gsoc2011">accepted</a> to be part of <a href="http://www.google-melange.com/gsoc/program/home/google/gsoc2011">Google Summer of Code 2011</a>. This is a great opportunity for GNOME, thanks again to Google for organizing this!<div><br /></div><div>The bad news is that the work is just starting for everyone :) We are looking for cool ideas for students to work on during the summer, so if you are working on a GNOME project and have ideas that would make a nice 3 months coding project for a student, please add it to our <a href="http://live.gnome.org/SummerOfCode2011/Ideas">idea page</a>.</div><div><br /></div><div>We'll also need <a href="http://live.gnome.org/SummerOfCode2011">mentors</a> for all the students that will have fun hacking on GNOME during the summer, you can already register to be a mentor for GNOME on <a href="http://www.google-melange.com">melange</a>, don't wait, register now :)</div><div><br /></div><div>Last but not least, if you are a student, be sure to check our <a href="http://live.gnome.org/SummerOfCode2011/Ideas">ideas list</a> and <a href="http://live.gnome.org/SummerOfCode2011/Students">our information page for students</a>. For now it's preliminary, the ideas will be sorted in the coming week. And you don't have to limit yourself to these ideas, you can also come up with your own cool idea and describe it in your application on Google website. The application period for students hasn't opened yet, it will open in about 10 days for now. However, you can already start thinking about what project you'd like to work on, start playing with the code of the project you'd like to work on during the summer, start discussing about your idea and your application with people involved in the project, ... Remember that in the previous years, we required candidates to show us a patch they had written for a free software project, and it's really likely that we'll do the same this year. You can also drop by on #soc on irc.gnome.org if you have specific questions!</div><div><br /></div><div>All in all, it should be a fun summer! :)</div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-35554751839726304312010-09-08T17:23:00.002+02:002010-09-08T17:37:09.942+02:00GNOME devroom at FOSDEMThis is just a public notice to let people know that this year again, I'll be handling the GNOME devroom at <a href="http://fosdem.org/2011/">FOSDEM</a>. For now I have applied to get one, let's see if we'll be lucky enough to get accepted this year again. This should be <a href="http://fosdem.org/2011/call_for_mainspeakers_devrooms">announced</a> by the end of October.<br /><br />But if you are willing to help organize GNOME presence at FOSDEM, don't wait until it's cold and nearly winter to get in touch, just tell me now! And if you have any suggestions about things to improve or things that went well in the GNOME devroom handling in the last years, let me know too!Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-20102737375140980422010-04-10T18:10:00.002+02:002010-04-10T18:13:27.481+02:00GUADEC Paper Selection delayedGUADEC Paper Selection has been slightly delayed, speakers should have been notified today (April 10th), this announcement will be done on Friday April 16th instead. So don't worry if you sent a paper submission and haven't heard from it yet :)Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com1tag:blogger.com,1999:blog-8472120078842080683.post-45275716611721803212010-03-24T12:16:00.003+01:002010-03-24T14:04:11.884+01:00GNOME and GSoCGNOME was once again <a href="http://socghop.appspot.com/gsoc/program/accepted_orgs/google/gsoc2010">accepted</a> as a mentoring organization by Google for their <a href="http://code.google.com/soc/">Summer of Code</a>!<br /><br />The fun will begin later in the summer, but there are already a few things you can do to help:<br /><ul><li><a href="http://live.gnome.org/SummerOfCode2010/Ideas">add ideas</a> for cool things that could be done during the summer</li><li><a href="http://socghop.appspot.com/gsoc/mentor/request/google/gsoc2010/gnome">apply as mentor</a></li><li>or just hang around on #soc to guide students looking for help</li></ul>So you know what you have to do now to help GNOME have a rocking summer!Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-17830863963566415712010-03-21T14:27:00.002+01:002010-03-21T14:33:16.237+01:00For the late birds....For those of you that procrastinated for too long and missed the GUADEC paper submission deadline, I've got insider information... Something tells me the application interface on the <a href="http://guadec.org/index.php/guadec/2010">GUADEC website</a> will accept paper submissions until 23:59 UTC today (Sunday).<br />So this is really your last chance to propose a talk for GUADEC 2010 if you were really really late :)<br /><br />On your mark, get set, go!Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-31349427121907538832010-03-19T11:51:00.003+01:002010-03-19T14:27:15.170+01:00Only one day left!Time is ticking away, the deadline for talk submissions for GUADEC 2010 is <a href="http://mail.gnome.org/archives/guadec-list/2010-March/msg00023.html">tomorrow evening</a> (Saturday 20th 23:59 UTC). If you are planning go give a talk there and haven't applied yet, there's no more time for waiting, better to apply now before it's too late! :)Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-91966223773282695392010-03-15T15:55:00.003+01:002010-03-15T16:00:34.000+01:00GUADEC Call for Papers deadlineIt's nearly over us, it's coming fast!<br /><br />If you want to <a href="http://guadec.org/index.php/guadec/2010/presenter/submit/1">submit a talk proposal</a> for <a href="http://guadec.org/index.php/guadec/2010">GUADEC 2010</a> (July 24, 2010 – July 30, 2010 in The Hague, The Netherlands), make sure to make your submission real soon since the <a href="http://guadec.org/index.php/guadec/2010/schedConf/cfp">deadline is Saturday, March 20th</a> (aka "End of this week").<br /><br />That's all folks!Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-933631255493131772010-03-04T21:47:00.006+01:002010-03-04T23:16:37.457+01:00One way to help free software projectsFree software projects are always looking for new volunteers to help, new coders, new translators, new documentation writers, ... However, sometimes you want to contribute but can't become any of those, either because you lack time, because you are already involved in other projects, or because you feel you don't have time. For some projects, another way to help is through donations, here are 2 examples for projects I'm involved with.<br /><br /><h3>Rhythmbox</h3><br />Rhythmbox has had a plugin for <a href="http://magnatune.com">Magnatune</a> for quite a while now. In addition to not being evil (their website says so, it must be true! Joke aside, they give 50% of what they sell to the artist), <a href="http://blogs.magnatune.com/buckman/2008/04/giving-money-to.html">they give 10% back</a> to the Rhythmbox project for every purchase through its plugin.<br /><br />And since they are not evil, today <a href="http://blogs.magnatune.com/buckman/2010/03/magnatune-sends-check-to-gnome-foundation-thanks-to-rhythmbox.html">they sent a $600 check</a> to the GNOME Foundation (which we chose as the recipient for the money). So you can buy lots of cool music on Magnatune while giving money to the GNOME Foundation at the same time! <br /><br />Thanks a lot to John Buckman from Magnatune who was a really nice guy to interact with and to Adam Zimmerman for all his hard work on Rhythmbox Magnatune plugin.<br /><br /><h3>libgpod</h3><br />libgpod is the iPod handling library used by gtkpod, rhythmbox, amarok, songbird, ... It <a href="http://article.gmane.org/gmane.comp.ipod.gtkpod/4447">recently</a> gained support for most of the latest devices released by Apple (iPod Nano 5th generation, iPhone, iPod Touch) which were unsupported under Linux until now (thanks a lot to Marcan, Nikias and all the people who helped with that by the way :)<br /><br />However, this development was made harder by the lack of devices to test the code on, forcing us to look for testers with the right devices and going back and forth with bug reports and bug fixes until things work as expected. So <a href="http://sourceforge.net/project/project_donations.php?group_id=67873">donations to the project</a> (even small amounts) are really helpful so that we can buy these missing devices and move things forward. <br />This already let us fund an iPod Nano which was a tremendous help to polish support for it in libgpod, thanks to everyone that made that possible. Next on the list are an iPod Touch to make sure the iPhoneOS support is up to par, and a buttonless iPod Shuffle which is so far unsupported by libgpod.<br /><br />I've already mentioned it <a href="http://cfergeau.blogspot.com/2009/07/modern-begging.html">here</a>, but if you have old iPods you no longer use , please get in touch, they can also be helpful for testing (thanks Götz!)Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com4tag:blogger.com,1999:blog-8472120078842080683.post-88053336608276967552010-01-15T17:35:00.002+01:002010-01-15T17:49:30.027+01:00FOSDEM 2010GNOME will be present at <a href="http://fosdem.org">FOSDEM</a> and will have its own devroom on Saturday again. The <a href="http://live.gnome.org/Brussels2010/Devroom#Schedule">schedule</a> is now final (at least I hope so ;) ). Thanks to everyone who sent talk proposal to help make this room rock this year again!<br /><br />On a related note, if you're coming to FOSDEM, <a href="http://live.gnome.org/Brussels2010/Attendees">let us know!</a> This will allow us to print nice nametags (maybe!) for all gnomies around Brussels :)Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-50290672844775395672009-07-26T20:56:00.003+02:002009-07-26T21:05:48.768+02:00Modern BeggingThe more I hack on <a href="http://www.gtkpod.org/libgpod/">libgpod</a>, the more I realize that having iPod models from various generations would be really helpful. When implementing support for setting the iPod time, for parsing the iPod timezone, for figuring out which information is useful in SysInfoExtended, ... I always end up running after people with various iPod models to make sure the code works as expected both on new and old iPods.<br /><br />I'm sure some of you have old iPods they no longer use hidden somewhere in their room, if you are in this situation, a donation would be really welcome and helpful :) Even iPods with dead batteries or broken screens might be useful.<br /><br />And while I'm at it, it would also really really help if I could get my hands on an old iPod touch or iPhone. Because this is where most of the work is to be done today, and without one such device, I cannot test thoroughly and get into shape stuff like <a href="http://cgit.freedesktop.org/%7Eteuf/libgpod/log/?h=iphone30">that</a>.<br /><br />So if you're feeling generous today and want to help support iPods on linux, drop me an email or leave a comment below!Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com3tag:blogger.com,1999:blog-8472120078842080683.post-63847038735383938672009-05-27T20:58:00.003+02:002009-05-27T21:45:16.579+02:00Rhythmbox GSoCThe coding period for this year <a href="http://socghop.appspot.com/">Google Summer of Code </a>has just started. I haven't blogged yet about <a href="http://rhythmbox.org/">Rhythmbox</a> GSoCs, now is a good time to do it ;)<br /><br />This year, 2 students will be hacking on Rhythmbox. Paul Bellamy (who I am be mentoring) started hacking on synchronization between Rhythmbox and media players.<br /><br />And John Iacona (mentored by Jonathan Matthew) will spend the whole summer working on a contextual information pane for Rhythmbox. This information pane will display various information about the song being played (artist bio, similar artists, ...)Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com2tag:blogger.com,1999:blog-8472120078842080683.post-87106016694601175082009-05-19T20:13:00.012+02:002009-05-21T00:56:26.225+02:00Adventures in udev land<div style="text-align: justify;">I've mentionned <a href="http://cfergeau.blogspot.com/2008/07/libgpod-callout-improvements.html">a while ago</a> the work that has been done on libgpod hal callout. It's working nicely, but with <a href="http://lists.freedesktop.org/archives/devkit-devel/2009-April/000140.html">HAL being deprecated</a>, I thought now might be a good time at looking at how to do things in the future, and to check if udev already lets us do what we do in the HAL callout. The good news is that it's working now and is pretty straightforward. However, I got stuck on a few details, so I thought it might be useful to others if I documented my findings here.</div><br /><div style="text-align: justify;">Currently, libgpod installs a .fdi file with the iPod vendor ID/device ID and a binary name. When HAL detects that a device that matches these 2 IDs is plugged in, it runs the binary. The binary issues a <a href="http://www.ipodlinux.org/wiki/Device_Information">SCSI inquiry command</a> to the iPod to get various information, and set some HAL properties using libhal.<br /><br />My goal was to do something similar with udev, ie get udev to run a binary when an iPod is inserted and then associate some information with the iPod device in udev database so that other applications can access it.<br /><br /></div><br /><div style="font-weight: bold; text-align: justify;"><span style="font-size:130%;">iPod detection</span></div><div style="text-align: justify;"><br />Running a binary when the iPod is inserted wasn't too hard, it's done with a udev rule file (the format is documented in udev manpage, don't forget to read it if you have to write such a file! ) which goes to <span style="font-family:courier new;">/lib/udev/rules.d</span>. My first version was simple enough:<br /></div><div style="text-align: left;"><br /></div><div style="color: rgb(51, 204, 0); font-family: courier new; text-align: left;">ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem",</div><div style="color: rgb(51, 204, 0); font-family: courier new; text-align: left;">ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1204",</div><div style="color: rgb(51, 204, 0); font-family: courier new; text-align: left;">RUN+="/tmp/udev-test.sh"</div><br /><div style="text-align: justify;"><span style="font-family:courier new;">udev-test.sh</span> is a simple shell script wrapping the actual udev callout. It makes it easier to dump various information to a log file (for example the callout environment which udev uses to pass useful information to the callout). And, lo and behold, after plugging an iPod, my shell script was run!<br /></div><br /><br /><div style="font-weight: bold; text-align: justify;"><span style="font-size:130%;">Adding information to the udev database</span></div><br /><div style="text-align: justify;">The next logical step was to add some values read from the iPod to udev database so that other apps can get this additionnal information. And this is one of the steps that <a href="http://lists.freedesktop.org/archives/devkit-devel/2009-May/000176.html">gave me some troubles</a>. I was a bit ashamed of finding a <a href="http://www.spinics.net/lists/hotplug/msg01978.html">really informative post by Kay Sievers</a> answering my question right after having sent this email...<br /></div><br /><div style="text-align: justify;">In short, it's really easy to import new values in the udev database, all you have to do is to output key/value pairs on stdout. This is nice, since udev passes information through environment variables and adds information to its database by reading stdout, this means that your callout doesn't have to depend in anyway on libudev.<br /></div><br /><div style="text-align: justify;">I quickly modified my test program to print a few key/value pairs to add to the environment, triggered an unplug/replug of my ipod with udevadm, and watch the 'block' subsystem devices with the devkit binary. But I was really disappointed not to find my values associated with the iPod :(<br /><br />After double checking everything and fiddling a bit to try to figure out what was wrong, I read again Kay's email, and I saw there was another difference between his code and mine: he is using an <span style="font-family:courier new;">IMPORT</span> rule to run his binary while I was still using a <span style="font-family:courier new;">RUN</span> rule.<br /></div><br /><div style="text-align: justify;">I changed my udev rule to an <span style="font-family:courier new;">IMPORT</span> rule and.... it still didn't work :;)After staring at udevadm monitor output, I noticed that when the iPod was plugged in, there was first an "add" udev event for the iPod device shortly followed by a "change" event. Since my rule was only catching the "add" event, I hypothetized maybe my changes to the udev database were first properly added, and then overwritten by the "change" event. So I changed my rule file to catch "change" events in addition to "add" events, and it finally worked!<br /><br /></div><div style="color: rgb(51, 204, 0); font-family: courier new; text-align: left;">ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem",</div><div style="color: rgb(51, 204, 0); font-family: courier new; text-align: left;">ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1204",</div><div style="color: rgb(51, 204, 0); font-family: courier new; text-align: left;">IMPORT{program}="/tmp/udev-test.sh"</div><div style="text-align: left;"><one last=""></one></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">I was very happy with my udev callout, however I shortly realized that when going from a <span style="font-family:courier new;">RUN</span> rule to an <span style="font-family:courier new;">IMPORT</span> rule, udev no longer passed me the device name (<span style="font-family:courier new;">/dev/sd??</span>) in the <span style="font-family:courier new;">DEVNAME</span> environment variable. I went to <span style="font-family:courier new;">#udev</span> on freenode to check if this was the expected behaviour, and Kay confirmed this is normal because when <span style="font-family:courier new;">IMPORT</span> rules are run, the final device doesn't exist yet.<br /><br />However, <span style="font-family:courier new;"><span style="font-family:georgia;">the</span> $tempnode</span> variable can be used as an argument to the binary that is being run to give it access to a temporary device node which can be interacted with. And indeed, after adding this argument to my udev rule, I could do everything that I wanted to :)<br /><br /><br /></div><div></div><div></div><div><span style="font-size:130%;"><span style="font-weight: bold;">Final polish</span></span><br /><br /></div><div style="text-align: justify;">After this successful experiment, all that remained to be done was to make the udev callout as featureful as the HAL callout. This was pretty straightforward, I abstracted the information gathering part from the HAL callout. This generic code then uses some backend-specific code to set the values. The HAL backend does that by using libhal, the udev backend does that by just outputting values to stdout.<br /><br />David Zeuthen was (as always) really helpful by pointing me at the udev/devicekit <a href="http://cgit.freedesktop.org/DeviceKit/DeviceKit-disks/tree/doc/man/DeviceKit-disks.xml#n31">equivalent</a> for <span style="font-family:courier new;">info.desktop.icon</span> and info.desktop.name: <span style="font-family:courier new;">DKD_PRESENTATION_NAME</span> and <span style="font-family:courier new;">DKD_PRESENTATION_ICON_NAME</span>. I also cooked up some variable names in a <span style="font-family:courier new;">LIBGPOD</span> namespace to have an udev equivalent to the stuff provided by <a href="http://git.gnome.org/cgit/podsleuth/">podsleuth</a>, let me know if it could be useful in your projects, it can be changed to fit your needs :)</div><div><br /><br /></div><div></div><div style="font-weight: bold;"><span style="font-size:130%;">End result</span><span style="font-size:100%;"><br /><br /></span></div><div></div><div>And here is the end result after plugging in my iPod:<br /><br /><span style="color: rgb(153, 153, 153);font-family:courier new;font-size:85%;" ># udevadm info --query=env --name=sdb2<br /><br />DKD_PRESENTATION_ICON_NAME=multimedia-player-apple-ipod-color<br />LIBGPOD_VERSION=1<br />LIBGPOD_IS_UNKNOWN=0<br />LIBGPOD_FIREWIRE_ID=000A270002BAD546<br />LIBGPOD_SERIAL_NUMBER=JQ446FN4R5Q<br />LIBGPOD_FIRMWARE_VERSION=1.2.1<br />LIBGPOD_IMAGES_ALBUM_ART_SUPPORTED=1<br />LIBGPOD_IMAGES_PHOTOS_SUPPORTED=1<br />LIBGPOD_IMAGES_CHAPTER_IMAGES_SUPPORTED=1<br />LIBGPOD_DEVICE_CLASS=color<br />LIBGPOD_MODEL_GENERATION=4.000000<br />LIBGPOD_MODEL_SHELL_COLOR=white<br />LIBGPOD_PRODUCTION_FACTORY_ID=JQ<br />LIBGPOD_PRODUCTION_YEAR=2004<br />LIBGPOD_PRODUCTION_WEEK=46<br />LIBGPOD_PRODUCTION_INDEX=20272<br />LIBGPOD_MODEL_CONTROL_PATH=/iPod_Control</span><br /><br /><br />Et voilà! The code is available from the <a href="http://cgit.freedesktop.org/%7Eteuf/libgpod/log/?h=devicekit">devicekit branch</a> of my <a href="http://cgit.freedesktop.org/%7Eteuf/libgpod/">libgpod git repo</a><br />and will be committed to libgpod svn soon.<br /></div>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com2tag:blogger.com,1999:blog-8472120078842080683.post-44722443152206893882009-03-31T00:09:00.001+02:002009-03-31T00:10:28.776+02:00Solutions Linux 2009<span style="font-size:100%;">It's tomorrow. 9am. I'll be there. Waiting for you.</span>Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0tag:blogger.com,1999:blog-8472120078842080683.post-37005465792309805972009-03-29T21:44:00.008+02:002009-03-29T23:48:31.229+02:00Why is so hard to find a blog post title?<span style="font-size:130%;"><span style="font-weight: bold;">GSoC 2009</span></span><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xeBcjs5_03s/Sc_fsBxkhMI/AAAAAAAAAVU/2bOQF8HPcAg/s1600-h/summer-of-code-2009.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 129px;" src="http://2.bp.blogspot.com/_xeBcjs5_03s/Sc_fsBxkhMI/AAAAAAAAAVU/2bOQF8HPcAg/s400/summer-of-code-2009.png" alt="" id="BLOGGER_PHOTO_ID_5318715632431432898" border="0" /></a><br /><br />GNOME is a mentoring organization for the <a href="http://socghop.appspot.com/">Google Summer of Code 2009</a>. If you are a student who wants to get paid to hack all summer on free software, now is the time to apply, the deadline for application is on Friday, April 3rd.<br /><br />You can find a list of ideas that have been proposed by GNOME contributors <a href="http://live.gnome.org/SummerOfCode2009/Ideas">here</a> but this list is in no way exhaustive so you can apply for any idea you care about and you think would improve the GNOME desktop!<br /><br /><br /><span style="font-weight: bold;font-size:130%;" >Rhythmbox</span><br /><br />Rhythmbox 0.12 was finally released a few weeks ago, it contains a lot of bugfixes and new features compared to the aging Rhythmbox 0.11.6. And development and bugfixing is going on in svn contrary to the impression <a href="http://ubuntuforums.org/showthread.php?t=1078732">some people had </a><br /><br />There are 2 ideas proposed for the GSoC, one about media player synchronization (to keep Rhythmbox library and you favourite media player in sync), and one about getting information about the currently playing song (to know everything about your favourite group, get stats about the song that is playing, ...). You can find more details on the <a href="http://live.gnome.org/SummerOfCode2009/Ideas">GSoC idea</a> page on <a href="http://live.gnome.org">live.gnome.org</a><br /><br /><span style="font-weight: bold;font-size:130%;" >Solutions Linux</span><br /><a href="http://www.solutionslinux.fr/"><br />Solutions Linux</a> will take place in Paris on the 31st March, 1st and 2nd April (this is Tuesday, Wednesday, Thursday this week). This year it has moved from CNIT/La Défense to Paris Expo/Porte de Versailles so this will be an exciting new experience for exhibitors ;) Mandriva and GNOME-FR both have a booth, you should definitely come to visit us, entrance is free! And there will be tshirts and stickers on the GNOME booth, and plenty of good stuff on the Mandriva booth!Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com1tag:blogger.com,1999:blog-8472120078842080683.post-1820292654099020322009-02-06T00:00:00.003+01:002009-02-06T00:12:14.584+01:00FOSDEM!It's this week-end in Brussels, so make sure to go there if you don't already have plans for the week-end! I'll arrive in Brussels on Friday evening, not sure I'll be able to attend the beer party. Then I'll enjoy most of the great talks in the <a href="http://live.gnome.org/Brussels2009/Devroom">GNOME devroom </a>and spend some time on the <a href="http://blog.mandriva.com/2009/02/02/fosdem-09/">Mandriva booth</a> as well. And am not sure yet what I'll be doing on Saturday evening, I guess something with the GNOMErs. Or the Mandrivians, we'll see ;)<br /><br />If you are a GNOME contributor, don't forget the group photo on Saturday at 3.45pm. And there will be cool GNOME tshirts on sale as well.<br /><br />Well, that's it, I don't really have much to say, this is just some shameless advertising ;)Christophehttp://www.blogger.com/profile/17507942489639330482noreply@blogger.com0