GUADEC-ES

We are in the second day of the II GUADEC-ES. I think everybody is here now, even garnacho who lost the plane.

Corunia plane
A CoruΓ±a

Rodrigo has talked about how to write plugins for evolution, very interesting, everybody can write new features for evolution now, without patching the evolution code.

The organization of the event is simply perfect. Thanks to all of the people who are working on it

There is a problem with rss of the acs’ blog and it doesn’t work in planeta GNOME Hispano, you can get more updated information about the guadec-es in acs.barrapunto.com

acs blog
Acs posting about GUADEC-ES

A month without writing anything

I’ve been very busy the last days and lots of things have been happened.

GNOME

My paper for the II GUADEC Hispana was accepted. I’m going to talk about the desktop integration in GNOME, I hope the talk will be interesting for the people. The schedule is available in the GUADEC-ES website yet

Interesting discussion about GNOME and fun started by Edd Dumbill on Planet GNOME.

Evince is more and more fast and useful, and it’s the best rated application in gnomefiles right now. Jrb has added support for continuous and dual scrolling, one of the most requested features that in addition I think make the difference with other pdf/ps viewers.

University

Many works to do . . . It’s the moment to be focused only in uni stuff. There is only one month until the exams

No Software Patents: There were a protest in most of the spanish universities and of course in the URJC too. There are photos of the event in the ACM website. There are also photos and comments in the steve-o’s blog.

Basketball

Today, I’m going to play the last game of the 2004-2005 season for me. There is another one in two weeks, but I’ll be at GUADEC-ES then. I’m a little bit sad because the league is over, but in the other hand, I’m very happy remembering all of the games played.

The next Friday, there will be a 3 vs 3 championship in my uni (URJC). I already have a team πŸ™‚ with steve-o and gabi. I’m sure it will be very funny

Hello Remote World!

Some days ago, ross posted in his blog a very interesting example of how to do a RPC with DBus/GObject by using the DBus glib bindings. I’ve taken this example as base for playing with widgets embedded. Basically I’ve created a label to be embedded in a container. The container also will be able to change the text of the label by doing a method invocation.

The xml file that describes the object is as simple as:

 <?xml version="1.0" encoding="UTF-8" ?> <node name="/org/freedesktop/DBus/Tests/Label">   <interface name="org.freedesktop.DBus.Tests.Label">   <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="label"/>     <method name="GetXid">     <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="label_get_xid"/>     <arg type="u" name="xid" direction="out"/>    </method>     <method name="SetText">     <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="label_set_text"/>     <arg type="s" name="text" direction="in"/>    </method>   </interface> </node> 

The method SetText only changes the current text of the label and the implementation is:

 gboolean label_set_text (Label *label, char *text, GError **error) {         gtk_label_set_text (GTK_LABEL (label->label), text); 	gtk_widget_show (label->label);  	return TRUE; } 

The method GetXid is used by the container to obtain the window ID of the label, which is needed to be able to embed it. The code is also very simple:

 gboolean label_get_xid (Label *label, guint32 *xid, GError **error) {         *xid = label->xid;  	return TRUE; } 

The container is a window with an entry and a frame. The frame is the real container of the label, and the entry is used to input the text for changing the label. First of all the container invokes the GetXid method in order to obtain the window ID of the label:

 if (!org_freedesktop_DBus_Tests_Label_get_xid (proxy, &xid, &error)) { 	die ("Call to get_xid failed", error); } 

When the activate signal of the entry is emitted the callback invokes the SetText method of the label:

 static void on_entry_activate (GtkWidget *entry, gpointer gdata) {         DBusGProxy *proxy;         gchar      *text;         GError     *error = NULL;          proxy = (DBusGProxy *) gdata;          text = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));          if (!org_freedesktop_DBus_Tests_Label_set_text (proxy, text, &error)) {                 g_free (text);                 die ("Call to set_text failed", error);         }  	g_free (text); } 
Hello Remote World
Hello Remote World

I think it’s a first approach for using DBus instead of bonobo

Governor Selecting

I’ve just committed the changes which add support to change the governor with the frequency selector. I didn’t know how to exactly add it, so finally I’ve chosen what I think it’s the less bad option.

CPUFreq Applet Preferences dialog
CPUFreq Applet Preferences dialog

Frequencies menu Governors menu Frequencies and governors menu
Frequencies menu Governors menu Frequencies and governors menu

Maybe the names of the governors are technical and difficult to understand for the users

GNOME 2.12 Timeframe

GNOME 2.10 has been successfully released yet, so it’s time now to work on GNOME 2.12. I have some interesting bugs in CPUFreq Applet, lots of work in GNOME System Tools, and other features I’m really interested in.

CPUFreq Applet

  • #168356: A patch for adding FreeBSD support. I have to review it carefully because it’s a long patch.
  • #168550: I can’t reproduce this bug because I haven’t got a HT processor. I’ll try to fix it by using text files simulating two processors.
  • #160031: It’s a zioma bug in fact. He is going to convert the icons to SVG format. I know he is working on a new application icon too :-))
  • #170492: I disagree with this bug, anyway I would like to know other opinions
  • #164581: I think it’s very important to be able to select governors. However I still don’t know how I’m going to do it. The cpufreq-selector drop down menu could become too big with the frequencies and governors.

GNOME System Tools

There are good news here, the GST backends have been accepted in FreeDesktop!.

There is lots of work to do, because they are going to be important changes in the GST architecture.

Garnacho has started coding, but he hasn’t published anything yet, because he is waiting for the migration of the GST backends from the GNOME CVS to the FreeDesktop CVS. Then, he’ll do a special branch for these changes and I’ll be able to start coding too.

Other interesting features

Evince Sidebar Widget

I was working on evince again. This time I’ve improved the sidebar widget to be nicer, similar to the galeon or nautilus sidebar. It looks pretty good now, at least better than with the combobox

I already have another patch pending to be reviewed by Marco πŸ™‚

Bryan has posted in his blog several bugs that can be fixed soon, some of them are really easy to fix, so if you are interested, take a look at them and enjoy!

Snow in Madrid

Snow in Madrid Snow in Madrid

Exams

I’ve just finished the exams. There have been the first exams in the URJC. Although I’ve been very busy studying in the last days, I’ve had a little time for hacking.

Evince

I love this app. I think it will be the definitive document viewer for GNOME. I’ve added support for DND files

Buoh

Buoh is a comics reader for GNOME Desktop. The project has been started by zioma and steve-o and they are also maintaining it. I’m very happy because the project is going on!.

Planeta Linups

Finally we have a planet in Linups!!. There are many “linupseros” who have a blog, and it’s very difficult to visit all of them. With the planet I’m sure I will be able to read them. Thanks to zioma and ice-boy, great work!!

GNOME World Wide

Based on the idea of the Debian developers location map, jdub has done the GNOME equivalent.

GNOME World Wide
GNOME developers location map

The future of GST

I was talking with garnacho about the future of GST. The problem of the unidirectional communication between backend and frontend is more and more annoying. Garnacho thinks that it’s the moment to modernize GST. I totally agree.

There are two main goals:

  • Use D-BUS for the communication backend – frontend
  • Make a GObject wrapper for a libgst library

Our first task will be to do the perl bindings for D-BUS, because it seems that there are no bindings yet. Then we’ll be able to start working on the backends for providing a D-BUS service.

We’ll be able to do many things that we can’t with the current architecture, like send notifications from the backend to the frontend (for example when a removable network card is detached).

More information: http://live.gnome.org/SystemToolsBackends

I’m desiring to begin! πŸ™‚

I needed a free day

In the last weeks I’ve been very busy doing some uni exercises that we have to do before doing the exams. I already have work to do, but today I’ve decided to take me the day as a free (in fact, I took me only the afternoon, because in the morning I was in class). What better way to spend a free day than hacking? Hehe, here is the result of my small free day

CPUFreq Applet

The new icons proposed by zioma have been accepted!!. I’ve uploaded them to CVS.

GST: The disks Tool

Because of the little time that I have, the disks tool development is going slowly. But I haven’t abandoned it. I’ve fixed an important bug in the scsi bus scanning. The scsi devices in which lun was greater than 0, were not detected.

I’m very happy to see Davyd talks about the disks tool in his GNOME 2.10 article.

I will continue with the uni exercises tomorrow. πŸ™‚

A new CPUFreq Applet

Yes, I’ve just rewritten the cpufreq applet. There were some things that I wanted for the applet and I hadn’t done yet because it was necessary to change the current code design.

Some of them are:

  • The applet should be independent of the data access method. The applet should behave as a simple viewer, and it shouldn’t know the data access details. My solution is a monitor that will do the data access work and will give these data to the applet
  • The current applet is updated every second, even when there aren’t changes. I think it’s an error because most of the time, the cpu keeps the same frequency. With the new monitor it’s not the applet who is running every second, but the monitor. The monitor will get the data every second and will emit a signal when there are changes. The applet only has to listen for the signal for doing the update

I think that the advantages are evident . . .

I thought that the best way to do these things, it was an object oriented design. The monitor is an abstract class (CPUFreqMonitor) that has a child class for every possible monitor (CPUFreqMonitorProcs, CPUFreqMonitorSysfs, . . .). The applet only knows the CPUFreqMonitor class, so the methods for getting the data are virtual methods, polymorphic entities. In this way, we can add new monitors in the future (based on libcpufreq, HAL or whatever) by only writing a new class and without changing any line of code in the applet. We can even decide which monitor will be used at run time.

CPUFreq Applet UML
CPUFreq Applet new code design in UML

We have now an applet more efficient and extensible.

While I rewrote the code I also migrated from gnome_about to gtk_about and I did some code cleanups.

I haven’t committed yet, because I want to test it a little more. I think I will commit with the new icons, since nobody has said anything bad of them.