<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Anders Carlsson</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/" />
<modified>2006-03-31T14:02:46Z</modified>
<tagline></tagline>
<id>tag:people.imendio.com,2006:/andersca//3</id>
<generator url="http://www.movabletype.org/" version="3.2">Movable Type</generator>
<copyright>Copyright (c) 2005, Anders Carlsson</copyright>
<entry>
<title>Clipboard manager in gnome-settings-daemon</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2005/06/clipboard_manag_1.html" />
<modified>2006-03-31T14:02:46Z</modified>
<issued>2005-06-03T09:41:45Z</issued>
<id>tag:people.imendio.com,2005:/andersca//3.252</id>
<created>2005-06-03T09:41:45Z</created>
<summary type="text/plain">So I went ahead and committed code to add a clipboard manager into gnome-settings-daemon. To try it out, you need latest CVS. Then, just: Start gedit Type some text and copy it Quit gedit Start gedit again and marvel that...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p>So I went ahead and committed code to add a clipboard manager into gnome-settings-daemon. To try it out, you need latest CVS. Then, just:</p>

<ul>
<li>Start gedit</li>
<li>Type some text and copy it</li>
<li>Quit gedit</li>
<li>Start gedit again and marvel that the text is still available for pasting!</li>
</ul>

<p>The code should be relatively bug-free but if you encounter any problems, feel free to comment. (Also, note that this only works with applications that support it by calling gtk_clipboard_set_can_store, except for text copying which should work pretty much everywhere)</p>]]>

</content>
</entry>
<entry>
<title>Havoc</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2005/05/havoc.html" />
<modified>2006-03-31T14:00:09Z</modified>
<issued>2005-05-31T10:47:56Z</issued>
<id>tag:people.imendio.com,2005:/andersca//3.250</id>
<created>2005-05-31T10:47:56Z</created>
<summary type="text/plain">Congratulations Havoc!...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p>Congratulations Havoc!</p>]]>

</content>
</entry>
<entry>
<title>Clipboard manager</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2005/05/clipboard_manag.html" />
<modified>2006-03-31T13:55:54Z</modified>
<issued>2005-05-25T14:55:56Z</issued>
<id>tag:people.imendio.com,2005:/andersca//3.246</id>
<created>2005-05-25T14:55:56Z</created>
<summary type="text/plain">Philip, if you took the time to read the code you&apos;d see that it&apos;s only using the GTK+ mainloop, the other code is plain Xlib. I have a new version that we&apos;re gonna upload on The Imedio developer site that...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p><a href="http://pvanhoof.be/blog/index.php/2005/05/25/31-the-save_targets-atom">Philip</a>, if you took the time to read the code you'd see that it's only using the GTK+ mainloop, the other code is plain Xlib. I have a new version that we're gonna upload on <a href="http://developer.imendio.com">The Imedio developer site</a> that just uses Xlib for everything, is that desktop neutral enough for you? </p>

<p>The best thing here would be to build the clipboard saving feature into something like gnome-settings-daemon.</p>]]>

</content>
</entry>
<entry>
<title>Hardware Hunt</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2005/01/hardware_hunt.html" />
<modified>2006-03-31T13:58:39Z</modified>
<issued>2005-01-17T09:35:04Z</issued>
<id>tag:people.imendio.com,2005:/andersca//3.221</id>
<created>2005-01-17T09:35:04Z</created>
<summary type="text/plain">I&apos;m in search for a good USB Wireless Dongle that works under Linux 2.6 with the 12&quot; PowerBook G4. I got the Netgear MA111 one but it turned out to be a new version that used a totally different chipset...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p>I'm in search for a good USB Wireless Dongle that works under Linux 2.6 with the 12" PowerBook G4. I got the Netgear MA111 one but it turned out to be a new version that used a totally different chipset (which only has a binary x86 driver...)</p>

<p>Anyway, don't hesitate to comment if you know any good dongles!</p>

<p>That will be all...</p>]]>

</content>
</entry>
<entry>
<title>Hacking</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2004/12/for_the_last_co.html" />
<modified>2006-03-31T14:11:29Z</modified>
<issued>2004-12-09T23:00:14Z</issued>
<id>tag:people.imendio.com,2004:/andersca//3.208</id>
<created>2004-12-09T23:00:14Z</created>
<summary type="text/plain">For the last couple of days I&apos;ve been working on the Noodle project, integrating Evolution and OpenGroupware.org. The screenshot below shows a calendar entry stored on an OpenGroupware server. The calendar and addressbook backends have been really straightforward so far,...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p>For the last couple of days I've been working on the Noodle project, integrating Evolution and <a href="http://www.opengroupware.org">OpenGroupware.org</a>. </p>

<p>The screenshot below shows a calendar entry stored on an OpenGroupware server.  <a href="http://people.imendio.com/andersca/archives/evolution-ogo.html" onclick="window.open('http://people.imendio.com/andersca/archives/evolution-ogo.html','popup','width=943,height=827,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://people.imendio.com/andersca/archives/evolution-ogo-thumb.png"  border="0" /></a></p>

<p>The calendar and addressbook backends have been really straightforward so far, and there are always people to answer my questions in #evolution. Thanks a lot! :)</p>]]>

</content>
</entry>
<entry>
<title>Answers to some questions</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2004/11/answers_to_some.html" />
<modified>2006-03-31T14:08:32Z</modified>
<issued>2004-11-14T23:13:00Z</issued>
<id>tag:people.imendio.com,2004:/andersca//3.201</id>
<created>2004-11-14T23:13:00Z</created>
<summary type="text/plain">Since my last blog entry I&apos;ve gotten some questions; here&apos;s an attempt to try to answer them: Why is GnomeProgram horrible? There are a number of reasons why this is true:The API. The API is not language binding friendly, it&apos;s...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p>Since my last blog entry I've gotten some questions; here's an attempt to try to answer them:</p>

<p><em>Why is GnomeProgram horrible?</em><br />
There are a number of reasons why this is true:<ul><li>The API. The API is not language binding friendly, it's not even C friendly; it has lots of confusing functions and is plain weird.<br />
<li>The argument parsing. GnomeProgram uses popt, but in a way that is both hard for the application programmer to use, and makes the end result look like something that would make Seth Nickell scream in horror. (Try "nautilus --help" to see for yourself for example)<br />
<li>The implementation. Although this isn't really a problem for the users of the API, it gives the maintainer (me) a really bad headache. There are bugs in GnomeProgram that I've given up on, simply because they are impossible to fix. The GnomeProgram code also contains accessibility initialization code that should be in libgnomeui, but that's impossible because of the design. Ugh!<br />
</ul>So how will we do argument parsing in the future? Well, a call to <br />
<tt>gtk_init_with_args</tt> should be enough, thanks to GOption. (I was going to link to the API documentation here, but gtk.org doesn't seem to be healthy)</p>

<p><em>Isn't making a flat dependency chain against the idea of code reuse?</em><br />
No. I am definitely not arguing against code reuse. What I am against is libraries that depend on other libraries for no good reason. For example, libgnome has a config: moniker that was written in order to be able to use GConf as a Bonobo interface. No-one uses this moniker, and no-one ever have. Still, it makes libgnome depend on libbonobo. Is that a good example of code reuse? Not really...<br />
What it all boils down to here is that if I want to use a basic widget such as an about dialog or icon list, I shouldn't be forced to depend on a dozen libraries for <em>no good reason</em>.</p>

<p><em>When will the gnome libraries be removed for real?</em><br />
This can't happen before the next binary incompatible release of GNOME, which should be 3.0 or so. As no one knows what GNOME 3.0 will contain or when it will be out, the answer to that question is hard to give.</p>

<p><em>But isn't GTK+ starting to enforce policy? The file chooser uses the XDG MIME spec for example!</em><br />
That is true, but just about all of those policies are well-defined XDG standards. There is however not XDG standards for everything yet. If you run KDE  and click on an URL, you most likely want it to be opened in Konqueror, not Epiphany. Thus, until we have a good specification for launching default url handlers, GTK+ can't really do anything itself.</p>

<p>I hope this clears some things up.</p>]]>

</content>
</entry>
<entry>
<title>Handling desktop integration</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2004/11/handling_deskto.html" />
<modified>2006-03-31T14:31:21Z</modified>
<issued>2004-11-14T11:36:38Z</issued>
<id>tag:people.imendio.com,2004:/andersca//3.200</id>
<created>2004-11-14T11:36:38Z</created>
<summary type="text/plain">Motivation As many of you already know, Jonathan and I are trying to deprecate more and more of the gnome libraries with every new major release of GNOME. Why is that?: Lack of library goals- Pretty much all of the...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p><strong>Motivation</strong></p>

<p>As many of you already know, <a href="http://jrb.webwynk.net">Jonathan</a> and I are trying to deprecate more and more of the gnome libraries with every new major release of GNOME. Why is that?:</p>

<ul>
<li><em>Lack of library goals</em>- Pretty much all of the libraries in the platform have a defined goal. GTK+ is for the user interface, libxml is for XML processing, GConf is for handling configuration. But what is libgnome and libgnomeui for? Right now they're a mix of broken widgets and code that wont' fit elsewhere</li>

<p><li><em>Dependencies</em> - The GNOME libraries are pretty high in the dependency chain. If you want to use GnomeIconList, you need to pull in (at least) GConf, libxml, ORBit, libbonobo, libgnome, libbonoboui. We would like a dependency chain that is more flat, especially now that less and less program are using Bonobo at all.</p>

<p><li><em>API</em> - A lot of the API in libgnomeui is at least 5(!) years old. We've learned a lot about API design since then. <br />
</ul><br />
<strong>Desktop integration</strong></p>

<p>One of the most horrible parts of libgnome is GnomeProgram; the code that handles start-up and argument parsing for GNOME programs. This code also sets up the program to be more "integrated" with the rest of GNOME. For example, when your application segfaults you get this nice dialog allowing you to report a bug. When you have accessibility enabled, GnomeProgram calls the necessary hooks for that. All that is done by GnomeProgram.</p>

<p>Also, in GTK+ 2.6 there are more hooks that need to be filled by someone, for example</p>

<p><tt>gtk_about_dialog_set_url_hook</tt></p>

<p>which lets you set a callback function that will be called when an URL is clicked in the new GTK+ about dialog. In GNOME, this would open your default web browser with that link. Remember that GTK+ shouldn't enforce policy about what desktop the user is running. Since we're getting more high-level widgets in GTK+, expect more hooks of this type.</p>

<p>So how would all this be taken care of in a world without GnomeProgram? First of all, what is the difference between a GNOME program and a GTK+ program running in the GNOME desktop environment? Why shouldn't all GTK+ applications get a segfault dialog or be accessible? And how should all this be done?  </p>

<p>I'll cover what I think is the answer in my next post. Stay tuned!</p>]]>

</content>
</entry>
<entry>
<title>For I am the clipboard master</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2004/10/for_i_am_the_cl.html" />
<modified>2006-03-31T13:57:32Z</modified>
<issued>2004-10-08T12:34:22Z</issued>
<id>tag:people.imendio.com,2004:/andersca//3.185</id>
<created>2004-10-08T12:34:22Z</created>
<summary type="text/plain">Those of you using emacs might have gotten very frustrated because its clipboard handling sucks. Instead of cutting and pasting using the CLIPBOARD selection, it uses the PRIMARY selection. So very broken... Anyway, there&apos;s an easy way to fix this,...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p>Those of you using emacs might have gotten very frustrated because its clipboard handling sucks. Instead of cutting and pasting using the CLIPBOARD selection, it uses the PRIMARY selection. So very broken...</p>

<p>Anyway, there's an easy way to fix this, just add:<br />
<tt><br />
(menu-bar-enable-clipboard)<br />
(setq x-select-enable-clipboard t)<br />
</tt></p>

<p>to your .emacs and you're set!</p>

<p>In other news, I've been working for Imendio for over a month now. It's been a pleasure; interesting projects and nice co-workers. Thanks <a href="http://people.imendio.com/richard">Richard</a> and <a href="http://people.imendio.com/micke">Micke</a>!</p>]]>

</content>
</entry>
<entry>
<title>Still Alive!</title>
<link rel="alternate" type="text/html" href="http://people.imendio.com/andersca/archives/2004/09/still_alive.html" />
<modified>2006-03-31T14:31:14Z</modified>
<issued>2004-09-09T22:01:26Z</issued>
<id>tag:people.imendio.com,2004:/andersca//3.174</id>
<created>2004-09-09T22:01:26Z</created>
<summary type="text/plain">Work As some of you already know, I joined the Imendians and became one of them. Work starts for real on Monday; I will be working part-time since I&apos;m still in school (for about another year) Doesn&apos;t he look good...</summary>
<author>
<name>Anders Carlsson</name>
<url>http://people.imendio.com/andersca/</url>
<email>andersca@imendio.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://people.imendio.com/andersca/">
<![CDATA[<p><strong>Work</strong><br />
As some of you already know, I joined the Imendians and became one of <a href="http://www.imendio.com/">them</a>. Work starts for real on Monday; I will be working part-time since I'm still in school (for about another year)<br />
<a href="http://people.imendio.com/andersca/archives/images/deal.jpg"><img alt="deal.jpg" src="http://people.imendio.com/andersca/archives/images/deal-thumb.jpg" width="400" height="300" /></a><br />
<em>Doesn't he look good in a suit?</em></p>

<p><strong>Hacking</strong><br />
<a href="http://cvs.gnome.org/viewcvs/glib/glib/goption.h?rev=1.4&view=auto">Goption</a> is in glib, and I've added the necessary support for gtk. The trick is to call <a href="http://cvs.gnome.org/viewcvs/gtk%2B/gtk/gtkmain.h?rev=1.56&view=auto">gtk_init_with_args</a> instead of the old regular gtk_init. gtk_init_with_args takes an array of option entries and will parse them automatically for you. Just like popt! Except that it's not popt (Which is good!)</p>

<p><strong>Life</strong><br />
This weekend I'll go visit my parents at home, since it's the annual market in Torsby. My sister will go there too. I will try to buy a sausage or two.</p>]]>

</content>
</entry>

</feed>