<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5662148629346975559</id><updated>2012-02-02T14:48:33.038+01:00</updated><category term='awn 0.4'/><category term='linux'/><category term='zeitgeist'/><category term='javascript'/><category term='gdk'/><category term='opencl'/><category term='synapse'/><category term='hierarchy'/><category term='gtk'/><category term='migration'/><category term='applets'/><category term='chrome'/><category term='c#'/><category term='nlp'/><category term='hackfest'/><category term='panel'/><category term='dbus api'/><category term='libwnck'/><category term='totem'/><category term='python'/><category term='gnome-panel'/><category term='vala'/><category term='inspect'/><category term='sezen'/><category term='ubuntu'/><category term='mono'/><category term='libzeitgeist'/><category term='widget'/><category term='helpers'/><category term='awn'/><title type='text'>~mhr3</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-1027753180585013967</id><published>2011-11-03T16:57:00.000+01:00</published><updated>2011-11-03T17:30:10.496+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>News from the Zeitgeist land</title><content type='html'>Hey everyone,&lt;br /&gt;&lt;br /&gt;on behalf of the Zeitgeist team I'd like to announce that today we're releasing the latest version of Zeitgeist (0.8.99-alpha1). It's quite unusual for Zeitgeist to do alpha releases, but this one is special - the entire daemon was rewritten from Python to Vala, which most likely brings a couple of new bugs, but also fixes another bunch of old bugs. Therefore we'd need people to test the release to see if there are some outstanding issues we missed.&lt;br /&gt;&lt;br /&gt;As usual, the &lt;a href="http://launchpad.net/zeitgeist/0.9/0.9.0/+download/zeitgeist-0.8.99%7Ealpha1.tar.bz2"&gt;tarball is available on Launchpad&lt;/a&gt;. Of course we'll be also pushing the package into &lt;a href="https://launchpad.net/%7Ezeitgeist/+archive/ppa"&gt;our PPA&lt;/a&gt; soon (although the alpha release may be only available for Oneiric users). Please report any bugs you encounter to either&amp;nbsp;&lt;a href="https://bugs.freedesktop.org/describecomponents.cgi?product=Zeitgeist"&gt;Zeitgeist's freedesktop.org bugzilla&lt;/a&gt; or to &lt;a href="https://bugs.launchpad.net/zeitgeist/+filebug"&gt;our Launchpad bug page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The biggest difference you'll be able to see at this point is much faster startup time, other than that the changes will be minimal - we're still using the same database, as well as the same DBus API, so everything should be working as before. One thing we did break is the API for the Activity Journal extension, so if you want to continue using it with this and further releases, you need to update also Activity Journal.&lt;br /&gt;&lt;br /&gt;What's still missing is rewrite of our FTS extension (which provides search capabilities), so for the time being we're still using the old one written in python which is included in the tarball.&lt;br /&gt;&lt;br /&gt;Before I wrap up, I'd like to say huge thank you to Collabora and Canonical, who sponsored the development, and of course to the whole team: &lt;a href="http://seilo.geekyogre.com/"&gt;Seif&lt;/a&gt; (seiflotfy), &lt;a href="http://bloc.eurion.net/"&gt;Siegfried&lt;/a&gt; (RainCT), &lt;a href="http://grillbar.org/"&gt;Mikkel&lt;/a&gt; (kamstrup) and &lt;a href="http://milky.manishsinha.net/"&gt;Manish&lt;/a&gt; (m4n1sh).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.collabora.co.uk/logos/collabora-logo-small.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="116" src="http://www.collabora.co.uk/logos/collabora-logo-small.png" style="border: 0;" width="354" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://aruiz.synaptia.net/.a/6a00d8341fa10a53ef014e8c4fc502970d-pi" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="42" src="http://aruiz.synaptia.net/.a/6a00d8341fa10a53ef014e8c4fc502970d-pi" style="border: 0;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-1027753180585013967?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/1027753180585013967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2011/11/news-from-zeitgeist-land.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/1027753180585013967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/1027753180585013967'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2011/11/news-from-zeitgeist-land.html' title='News from the Zeitgeist land'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-5837268553902745460</id><published>2011-08-03T16:08:00.000+02:00</published><updated>2011-08-03T16:08:55.906+02:00</updated><title type='text'>Desktop Summit 2011</title><content type='html'>To make sure I don't forget: I'll be also at this year's &lt;a href="https://www.desktopsummit.org/"&gt;Desktop Summit&lt;/a&gt; in Berlin, and it'll be my first time on such huge conference, so I'm quite excited. If you have any &lt;a href="https://launchpad.net/synapse-project"&gt;Synapse&lt;/a&gt; / &lt;a href="http://zeitgeist-project.com/"&gt;Zeitgeist&lt;/a&gt; questions feel free to ask. :) Last, but not least, we'll also have a &lt;a href="http://wiki.desktopsummit.org/Workshops_%26_BoFs/2011/GtkRecent_and_Zeitgeist"&gt;BOF about GtkRecent&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See you there!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bmP-1LQbinU/TjlV9R3wCWI/AAAAAAAAAGQ/yL_lyGJRCpU/s1600/DS2011banner.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" style="border: 0;" height="105" src="http://3.bp.blogspot.com/-bmP-1LQbinU/TjlV9R3wCWI/AAAAAAAAAGQ/yL_lyGJRCpU/s320/DS2011banner.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-b0IMNZXd5QQ/TjlV_PlaF3I/AAAAAAAAAGU/sdRsEOVzirI/s1600/sponsored-badge-shadow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" style="border: 0;" src="http://2.bp.blogspot.com/-b0IMNZXd5QQ/TjlV_PlaF3I/AAAAAAAAAGU/sdRsEOVzirI/s1600/sponsored-badge-shadow.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-5837268553902745460?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/5837268553902745460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2011/08/desktop-summit-2011.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/5837268553902745460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/5837268553902745460'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2011/08/desktop-summit-2011.html' title='Desktop Summit 2011'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-bmP-1LQbinU/TjlV9R3wCWI/AAAAAAAAAGQ/yL_lyGJRCpU/s72-c/DS2011banner.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-2588039295736613301</id><published>2011-05-17T14:44:00.000+02:00</published><updated>2011-05-17T14:44:50.677+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='opencl'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>OpenCL on Ubuntu</title><content type='html'>Since I work with OpenCL a lot and yesterday I found out that Intel's OpenCL is now finally available for Linux, I thought I'd share a few words of how to get it to work on Ubuntu (even though Intel currently provides only a rpm package for RHEL and Suse).&lt;br /&gt;&lt;br /&gt;First of all, I'm testing all of this on Lucid 64bit, but I suppose it'd work also on newer Ubuntu releases (though you need to be using 64bit version, cause the Intel package is for 64).&lt;br /&gt;&lt;br /&gt;So let's get to it.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;First of all grab the rpm package from&amp;nbsp;&lt;a href="http://software.intel.com/en-us/articles/download-intel-opencl-sdk/"&gt;http://software.intel.com/en-us/articles/download-intel-opencl-sdk/&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Install the rpm and alien packages (`sudo apt-get install rpm alien`).&lt;/li&gt;&lt;li&gt;Convert the rpm package to deb using alien - `fakeroot alien --to-deb &amp;lt;intel's rpm package filename&amp;gt;`. The conversion spits some warnings, I wouldn't pay any attention to them.&lt;/li&gt;&lt;li&gt;Install the newly created deb package. `sudo dpkg -i&amp;nbsp;intel-ocl-sdk-suse+11.1_1.1-2_amd64.deb`&lt;/li&gt;&lt;li&gt;One extra package you need to install for the library to work is libnuma. `sudo apt-get install libnuma1`&lt;/li&gt;&lt;li&gt;Make sure the ICD is installed. `sudo echo "libintelocl.so" &amp;gt; /etc/OpenCL/vendors/intelocl64.icd`&lt;/li&gt;&lt;li&gt;The package is nice and also installs OpenCL headers in /usr/include/CL. Also the main binary (libOpenCL.so) is installed in /usr/lib64 - if you don't have any other OpenCL platform installed on your system, I suggest moving it to /usr/lib (run `sudo ldconfig` afterwards), if you do have this library already (for example nvidia driver also contains it) just leave it there.&lt;/li&gt;&lt;li&gt;Since the libraries are installed in non-standard location for Ubuntu (/usr/lib64/OpenCL/vendors/intel), you'll need to adjust your LD_LIBRARY_PATH. I usually do this using a script, but you can just run:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export LD_LIBRARY_PATH=/usr/lib64/OpenCL/vendors/intel:$LD_LIBRARY_PATH&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Running a OpenCL program that just lists available platforms should return now at least one platform. Or if you have multiple platforms including their ICDs installed you'd get something like:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;There are 3 platforms available&lt;br /&gt;PLATFORM_NAME: Intel(R) OpenCL&lt;br /&gt;  VERSION: OpenCL 1.1 LINUX&lt;br /&gt;  VENDOR: Intel(R) Corporation&lt;br /&gt;  PROFILE: FULL_PROFILE&lt;br /&gt;    DEVICE: Intel(R) Core(TM)2 Duo CPU     P7370  @ 2.00GHz&lt;br /&gt;    MAX COMPUTE UNITS: 2&lt;br /&gt;    DEVICE VERSION: OpenCL 1.1 &lt;br /&gt;    DRIVER VERSION: 1.1&lt;br /&gt;PLATFORM_NAME: ATI Stream&lt;br /&gt;  VERSION: OpenCL 1.1 ATI-Stream-v2.3 (451)&lt;br /&gt;  VENDOR: Advanced Micro Devices, Inc.&lt;br /&gt;  PROFILE: FULL_PROFILE&lt;br /&gt;    DEVICE: Intel(R) Core(TM)2 Duo CPU     P7370  @ 2.00GHz&lt;br /&gt;    MAX COMPUTE UNITS: 2&lt;br /&gt;    DEVICE VERSION: OpenCL 1.1 ATI-Stream-v2.3 (451)&lt;br /&gt;    DRIVER VERSION: 2.0&lt;br /&gt;PLATFORM_NAME: NVIDIA CUDA&lt;br /&gt;  VERSION: OpenCL 1.0 CUDA 3.2.1&lt;br /&gt;  VENDOR: NVIDIA Corporation&lt;br /&gt;  PROFILE: FULL_PROFILE&lt;br /&gt;    DEVICE: GeForce 9300M GS&lt;br /&gt;    MAX COMPUTE UNITS: 1&lt;br /&gt;    DEVICE VERSION: OpenCL 1.0 CUDA&lt;br /&gt;    DRIVER VERSION: 260.19.29&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Good luck implementing your OpenCL kernels. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-2588039295736613301?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/2588039295736613301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2011/05/opencl-on-ubuntu.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2588039295736613301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2588039295736613301'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2011/05/opencl-on-ubuntu.html' title='OpenCL on Ubuntu'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-4437732703451806213</id><published>2011-04-07T18:43:00.000+02:00</published><updated>2011-04-07T18:43:54.951+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><title type='text'>New Synapse again!</title><content type='html'>In the release-often spirit, we prepared Synapse 0.2.6, which, as opposed to last release, contains lots of user interface tweaks, changes and additions (drag and drop, new theme, improved focus grabbing). This time you can read all about it&amp;nbsp;&lt;a href="http://codingyourdreams.net/2011/04/07/synapse-aspartate-0-2-6/"&gt;at Alberto's blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://codingyourdreams.net/wp-content/uploads/2011/04/synapse-0.2.6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://codingyourdreams.net/wp-content/uploads/2011/04/synapse-0.2.6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-4437732703451806213?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/4437732703451806213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2011/04/new-synapse-again.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4437732703451806213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4437732703451806213'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2011/04/new-synapse-again.html' title='New Synapse again!'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-6779349946613781026</id><published>2011-02-23T00:41:00.003+01:00</published><updated>2011-11-03T17:30:41.280+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><title type='text'>Synapse: Anandamide</title><content type='html'>Just a quick shout about new release of Synapse - 0.2.4! There aren't too many user visible changes in this release, besides a few new plugins. Mostly polishing and more polishing.&lt;br /&gt;&lt;br /&gt;Anyhow here's the changelog:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; added Calculator plugin&lt;/li&gt;&lt;li&gt;multiple fixes to Zeitgeist searches&lt;/li&gt;&lt;li&gt;add plugin descriptions (links to wiki)&lt;/li&gt;&lt;li&gt;added simple Launchpad plugin&lt;/li&gt;&lt;li&gt;added Pastebin plugin&lt;/li&gt;&lt;li&gt;added Copy to clipboard action&lt;/li&gt;&lt;li&gt;added Imgur plugin (uploads images to imgur)&lt;/li&gt;&lt;li&gt;added Selection plugin (execute actions on currently selected text)&lt;/li&gt;&lt;li&gt;small UI fixes and speedups&lt;/li&gt;&lt;li&gt;multiple smaller bug fixes&lt;/li&gt;&lt;/ul&gt;If you like Synapse, you can help out by writing plugin descriptions on our &lt;a href="http://synapse.zeitgeist-project.com/wiki/index.php?title=Main_Page"&gt;wiki&lt;/a&gt;, just click the help button in Synapse's preferences window (in the plugin tab) and you'll be taken to a wiki page (most likely empty right now) where all other users will then be able to read this.&lt;br /&gt;&lt;br /&gt;Tarballs are at the usual&amp;nbsp;&lt;a href="http://launchpad.net/synapse-project/0.2/0.2.4.2/+download/synapse-0.2.4.2.tar.gz"&gt;place&lt;/a&gt;. Ubuntu users using our bleeding edge PPA (ppa:synapse-core/testing) could have been enjoying most of these improvements for quite some time, but the new packages have now been built also on our stable PPA (&lt;b&gt;ppa:synapse-core/ppa&lt;/b&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-6779349946613781026?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/6779349946613781026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2011/02/synapse-anandamide.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6779349946613781026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6779349946613781026'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2011/02/synapse-anandamide.html' title='Synapse: Anandamide'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-4430320359092988548</id><published>2011-02-14T19:39:00.000+01:00</published><updated>2011-02-14T19:39:57.277+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hackfest'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>My work @ Zeitgeist hackfest 2011</title><content type='html'>As many of you probably noticed, last week there was Zeitgeist hackfest happening at Aarhus, and here's a short summary of what I've done (you probably already read &lt;a href="http://www.grillbar.org/wordpress/?p=536"&gt;Mikkel's&lt;/a&gt; and &lt;a href="http://seilo.geekyogre.com/2011/02/zeitgeist-hackfest-day-1-3/"&gt;Seif's posts&lt;/a&gt; about it).&lt;br /&gt;&lt;br /&gt;My overall mantra was to get the necessary bits for proper Zeitgeist integration upstream, and I dare to say that this worked out quite well:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the Gio patch which provides us with extra information about application launches is now part of official GLib 2.28 (https://bugzilla.gnome.org/show_bug.cgi?id=641395)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;this allowed us to remove the non-standard Gio module from libzeitgeist, and its job will be now done by zeitgeist-datahub&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;zeitgeist-datahub received a couple of updates - I ported it to use GDBus (which was a nice experience in Vala) and added the module that listens for application launches&lt;/li&gt;&lt;li&gt;for quite some time we have had plugins for many applications in &lt;a href="https://launchpad.net/zeitgeist-dataproviders"&gt;Zeitgeist Data Sources project&lt;/a&gt;, but to make it easier for users to get these, I ported a few of them to use libpeas and requested merging them to their upstream projects, therefore in the next GNOME release the Zeitgeist integration plugins for Totem, gedit, and Rhythmbox will be just a click away.&lt;/li&gt;&lt;li&gt;libzeitgeist also received many bug fixes, and I hope the new GDBus series will now be as stable as the older dbus-glib powered one (and maybe even more), now the only thing that's missing there is GObject introspection annotations and making the API a bit more friendly for non-C uses.&lt;/li&gt;&lt;li&gt;Seif also implemented the grid plugin based on my idea :) and hopefully this work will continue in some form, preferably something usable by multiple applications - a zeitgeist-gtk library comes to mind :)&lt;/li&gt;&lt;/ul&gt;I also feel obliged to thank the #gedit guys, who have been very helpful, and let me tell you that they have a very nice plugin architecture now ;)&lt;br /&gt;&lt;br /&gt;Ultimately a thank you goes also to our sponsors:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://live.gnome.org/Travel/Policy?action=AttachFile&amp;amp;do=get&amp;amp;target=sponsored-badge-shadow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://live.gnome.org/Travel/Policy?action=AttachFile&amp;amp;do=get&amp;amp;target=sponsored-badge-shadow.png" style="border: 0px none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.collabora.co.uk/logos/collabora-logo-small.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="104" src="http://www.collabora.co.uk/logos/collabora-logo-small.png" style="border: 0px none;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://enhed.au.dk/5150/png/en" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="56" src="http://enhed.au.dk/5150/png/en" style="border: 0px none;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.incuba-sp.dk/ajrgfx/gfx/incuba_logo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.incuba-sp.dk/ajrgfx/gfx/incuba_logo.gif" style="border: 0px none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-4430320359092988548?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/4430320359092988548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2011/02/my-work-zeitgeist-hackfest-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4430320359092988548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4430320359092988548'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2011/02/my-work-zeitgeist-hackfest-2011.html' title='My work @ Zeitgeist hackfest 2011'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-6371259254385135898</id><published>2010-12-13T19:42:00.002+01:00</published><updated>2010-12-16T01:32:09.286+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>More Synapse news</title><content type='html'>Two weeks passed since the first official Synapse release, and we've prepared another one! As common with first releases, there were quite a few issues which we worked on and fixed in 0.2.2. But besides fixed bugs we also added a bunch of stuff... So what's new?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;implemented relevancy service, which makes sure that applications you use often end up among the first results of a search - this is done using Zeitgeist, so you can also track the popularity also in other Zeitgeist clients&lt;/li&gt;&lt;li&gt;support for basic transliteration when searching for applications - therefore you shouldn't need to type accents (if your language has them)&lt;/li&gt;&lt;li&gt;three new plugins: OpenSearch (used to start a web search from Synapse, currently comes with Google and Google Maps plugins), Locate (runs locate to find files on your filesystem), Gnome screensaver (adds lock screen action)&lt;/li&gt;&lt;li&gt;pressing Shift+Enter on an item now executes the action without closing Synapse (unless you run an application which takes focus)&lt;/li&gt;&lt;li&gt;ability to override gtk theme using custom gtkrc file (see screenshot)&lt;/li&gt;&lt;li&gt;added notification-area icon (which can be disabled)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_eXLL3mWKz5U/TQZfS8aHNzI/AAAAAAAAAFk/QUMPC4Y3n9A/s1600/dark-default.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/TQZfS8aHNzI/AAAAAAAAAFk/QUMPC4Y3n9A/s320/dark-default.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_eXLL3mWKz5U/TQZfTS3uMTI/AAAAAAAAAFo/oVCUnJQQo2o/s1600/dark-virgilio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="199" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/TQZfTS3uMTI/AAAAAAAAAFo/oVCUnJQQo2o/s320/dark-virgilio.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you're using a light Gtk theme and would like Synapse dark, just copy &lt;a href="https://bugs.launchpad.net/synapse-project/+bug/688813/+attachment/1764962/+files/gtkrc"&gt;https://bugs.launchpad.net/synapse-project/+bug/688813/+attachment/1764962/+files/gtkrc&lt;/a&gt; to your "~/.config/synapse".&lt;br /&gt;&lt;br /&gt;We also set up a wiki @ &lt;a href="http://synapse.zeitgeist-project.com/wiki/"&gt;http://synapse.zeitgeist-project.com/wiki/&lt;/a&gt;, feel free to head over there to learn about advanced/hidden configuration options and hopefully soon there'll be even some content on plugin creation.&lt;br /&gt;&lt;br /&gt;You can find the release tarball of &lt;i&gt;Adenosine triphosphate&lt;/i&gt; here: &lt;a href="http://launchpad.net/synapse-project/0.2/0.2.2/+download/synapse-0.2.2.2.tar.gz"&gt;http://launchpad.net/synapse-project/0.2/0.2.2/+download/synapse-0.2.2.2.tar.gz&lt;/a&gt; (you'll need valac 0.10 to compile it, and zeitgeist 0.6 is highly recommended to run it), Ubuntu users will find an update in &lt;b&gt;ppa:synapse-core/ppa&lt;/b&gt;. (please note that the maverick package says that it's 0.2.1, but it's in fact 0.2.2, sorry about that).&lt;br /&gt;&lt;br /&gt;What's next? By now we're pretty happy with the core functionality (except maybe the missing ability to configure plugins using some kind of UI), so further releases will see this fixed, and besides that there'll be mostly new and updated plugins.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-6371259254385135898?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/6371259254385135898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/12/more-synapse-news.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6371259254385135898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6371259254385135898'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/12/more-synapse-news.html' title='More Synapse news'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eXLL3mWKz5U/TQZfS8aHNzI/AAAAAAAAAFk/QUMPC4Y3n9A/s72-c/dark-default.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-251808081958242249</id><published>2010-11-30T19:53:00.001+01:00</published><updated>2010-12-02T18:32:59.173+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='sezen'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>Introducing Synapse: Acetylcholine</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_eXLL3mWKz5U/TPUb5d5a8JI/AAAAAAAAAFU/ixIYOhXU0SQ/s1600/synapse-128.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_eXLL3mWKz5U/TPUb5d5a8JI/AAAAAAAAAFU/ixIYOhXU0SQ/s1600/synapse-128.png" style="border: 0px none;" /&gt;&lt;/a&gt;&lt;/div&gt;As some of you know, during the summer I was working on a few Zeitgeist-related projects, one of them was Sezen and the panel-applet inspired by Sezen which allowed you to search Zeitgeist log conveniently from your panel. But I was never particularly happy with these solutions, and as a Gnome Do user, I was always disappointed that it is unable to find files the same way Sezen can, while the interface is pretty much a perfect fit for it. And that's when Synapse was born...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;So what does Synapse do?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;It well... searches stuff... If you ever used Gnome Do / Quicksilver / Gnome Launch Box, you'll feel right at home with Synapse, if not, the only thing you need to do is run Synapse (or press Ctrl+Space to summon it), type what you're looking for, and Synapse will present you a list of items that match your query. Once you found the item you were looking for, you can perform an action on it (and these are defined by the plugins you're using). If you don't like the default action, just press Tab and search appropriate action.&lt;br /&gt;And besides this primary use-case, you can also browse recent items which were logged by Zeitgeist, in case you close a document by mistake or just want to hear again the music track that played a few minutes ago.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_eXLL3mWKz5U/TPUyX3r1-RI/AAAAAAAAAFY/f9Ginzdvd_I/s1600/Screenshot-synapse-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/TPUyX3r1-RI/AAAAAAAAAFY/f9Ginzdvd_I/s320/Screenshot-synapse-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Acetyl... what?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;I'm glad you agree that the release codename is just awesome, and besides that it's also a name of a neurotransmitter which transmits signals across synapse. But other than that it's an alias for Synapse 0.2.0.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_eXLL3mWKz5U/TPU07eCHgJI/AAAAAAAAAFg/s4DAuO6G96Q/s1600/Screenshot-synapse.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/TPU07eCHgJI/AAAAAAAAAFg/s4DAuO6G96Q/s320/Screenshot-synapse.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;How does it find stuff?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Using plugins of course - currently the development was focused primarily around using Zeitgeist for the searches, and there are even plugins that process the output from the Zeitgeist plugin and either try to improve the results, or find similar files on the filesystem (for example the Hybrid search plugin).&lt;br /&gt;Still, all of the functionality is based on plugins, so further development can lead anywhere.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_eXLL3mWKz5U/TPUywyAPNVI/AAAAAAAAAFc/7lvyo67zWmA/s1600/Screenshot-Synapse+-+Settings.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/TPUywyAPNVI/AAAAAAAAAFc/7lvyo67zWmA/s320/Screenshot-Synapse+-+Settings.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;What plugins are available in &lt;/i&gt;&lt;/b&gt;&lt;i&gt;Acetylcholine&lt;/i&gt;&lt;b&gt;&lt;i&gt;?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Current version ships with these plugins:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Applications - searches your desktop files&lt;/li&gt;&lt;li&gt;Banshee - allows you to play/enqueue music files in Banshee&lt;/li&gt;&lt;li&gt;Commands - runs any command (ie. "sudo apt-get update")&lt;/li&gt;&lt;li&gt;Devhelp - search documentation using Devhelp&lt;/li&gt;&lt;li&gt;Dictionary - find definitions of words&lt;/li&gt;&lt;li&gt;Directory search - allows opening of commonly used directories&lt;/li&gt;&lt;li&gt;Gnome session - log out, shut down, restart&lt;/li&gt;&lt;li&gt;Hybrid search - complete Zeitgeist results by searching for similar files&lt;/li&gt;&lt;li&gt;Rhytmbox - play/enqueue music files in Rhythmbox&lt;/li&gt;&lt;li&gt;UPower - suspend &amp;amp; hibernate your computer&lt;/li&gt;&lt;li&gt;Zeitgeist - search anything logged by Zeitgeist&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;b&gt;How to get it?&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;You can either download &lt;a href="http://launchpad.net/synapse-project/0.2/0.2.0/+download/synapse-0.2.0.tar.gz"&gt;the tarball&lt;/a&gt; from Launchpad. Or if using Ubuntu (Lucid/Maverick) add &lt;b&gt;ppa:synapse-core/ppa&lt;/b&gt; to your sources and install "synapse" via the package manager. Please note that you need "zeitgeist-fts-extension" (and of course zeitgeist itself - preferably with as many dataproviders as possible) to experience it the way it was meant to be. :)&lt;br /&gt;&lt;br /&gt;Please feel free to &lt;a href="https://bugs.launchpad.net/synapse-project/+filebug"&gt;report bugs&lt;/a&gt;, &lt;a href="https://answers.launchpad.net/synapse-project"&gt;ask questions&lt;/a&gt;, or talk to us in #synapse on freenode.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;I want my app to provide results for Synapse!&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;The easiest way to do that would be to push data to Zeitgeist (or at least to recently-used) and you've got Synapse integration for free. If you need something more complex, we'll welcome your plugin. ;)&lt;br /&gt;&lt;br /&gt;And before I wrap this post up, I want to thank everyone involved in the development - especially &lt;a href="https://launchpad.net/%7Ealbyrock87"&gt;Alberto&lt;/a&gt;, who implemented the beautiful UI and designed most of the themes; then &lt;a href="http://seilo.geekyogre.com/"&gt;Seif&lt;/a&gt;, who (after finding out about the project, despite me trying to keep it a secret from him) helped a lot to steer it in the right direction and also came up with this great name; &lt;a href="http://www.design-by-izo.com/"&gt;Izo&lt;/a&gt; who contributed us the icon and logo; and also all of our early beta testers (especially &lt;a href="http://www.grillbar.org/wordpress/"&gt;Mikkel&lt;/a&gt;, who had multiple good points and &lt;a href="http://anotherugly.wordpress.com/"&gt;Ketilwaa&lt;/a&gt;, great idea with the codenames).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-251808081958242249?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/251808081958242249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/11/introducing-synapse-acetylcholine.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/251808081958242249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/251808081958242249'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/11/introducing-synapse-acetylcholine.html' title='Introducing Synapse: Acetylcholine'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eXLL3mWKz5U/TPUb5d5a8JI/AAAAAAAAAFU/ixIYOhXU0SQ/s72-c/synapse-128.png' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-3740273822185443042</id><published>2010-11-16T17:53:00.001+01:00</published><updated>2010-11-16T18:10:35.781+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gtk'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchy'/><category scheme='http://www.blogger.com/atom/ns#' term='widget'/><category scheme='http://www.blogger.com/atom/ns#' term='inspect'/><title type='text'>Did you ever wonder...?</title><content type='html'>how does a certain application do it's widget hierarchy in Gtk? Well lately I did, and therefore I wrote a little class that visualizes the allocation of the widget under your mouse (plus it's container). Add a little hacking with the dynamic linker and you get a small utility to inspect the widgets in (almost) any application. Take a look:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/16891813" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/16891813"&gt;Gtk+ Inspector&lt;/a&gt; from &lt;a href="http://vimeo.com/user3758959"&gt;Michal Hruby&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;Unfortunately it's not perfect - atm it doesn't handle inner GdkWindows very well (as you can see in the video when I hover the GtkScrolledWindow), but maybe it could be easily fixed, I didn't really try as I didn't need that.&lt;br /&gt;Also it doesn't work on just any application, I hooked the instantiation of my highlighting class to gtk_init(), so if your application doesn't call gtk_init(), it won't work (I'm afraid that also applies to all pygtk apps). Still, you can just compile your app with the Inspector class and instantiate it yourself.&lt;br /&gt;&lt;br /&gt;Hopefully this will be useful for more people, so to see/grab the code, go to &lt;a href="https://code.launchpad.net/%7Emhr3/+junk/inspector"&gt;https://code.launchpad.net/~mhr3/+junk/inspector&lt;/a&gt;. And once you compile the .so file, run your favourite app using "LD_PRELOAD=./inspector.so [your_app]".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-3740273822185443042?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/3740273822185443042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/11/did-you-ever-wonder.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/3740273822185443042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/3740273822185443042'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/11/did-you-ever-wonder.html' title='Did you ever wonder...?'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-6028011849381416416</id><published>2010-08-01T22:34:00.002+02:00</published><updated>2010-08-01T23:02:54.513+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='nlp'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='sezen'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>Experimenting NL-style...</title><content type='html'>For the past few days I was (besides watching GUADEC talks) experimenting a little with Zeitgeist and natural language processing... or sort of anyway. Having no real prior knowledge in NL field and not using any of the existing NLP libraries (as I couldn't find anything in C), definitely made it interesting, but also made me realize that NLP is really hard (even though I only wanted to get a very specific app to work) and taking this path most likely isn't a way to get somewhere.&lt;br /&gt;&lt;br /&gt;But anyway, the original idea was to make an algorithm which would take a natural language query and "compile" a Zeitgeist event template from it. This would make it possible to basically ask questions about stuff you did on your computer (not necessarily in a question-form) and get results back from Zeitgeist. The way I did the algorithm was very easily pluggable into any ZG application, so of course I tried it with our lovely Sezen search applet, and on the following screenshots you can see it in action:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_eXLL3mWKz5U/TFXV8ZHapVI/AAAAAAAAAE0/BNc8quncOeU/s1600/sezen-modified-week-ago.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/TFXV8ZHapVI/AAAAAAAAAE0/BNc8quncOeU/s320/sezen-modified-week-ago.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_eXLL3mWKz5U/TFXWAOJ-bnI/AAAAAAAAAFE/gFacRFq_qTQ/s1600/sezen-web-wednesday.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/TFXWAOJ-bnI/AAAAAAAAAFE/gFacRFq_qTQ/s320/sezen-web-wednesday.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_eXLL3mWKz5U/TFXV-IGPGyI/AAAAAAAAAE8/vbCSAoC_wWg/s1600/sezen-music-today.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/TFXV-IGPGyI/AAAAAAAAAE8/vbCSAoC_wWg/s320/sezen-music-today.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If you for some reason don't see the images, there are queries like "music played today", "web pages accessed on wednesday" and "files modified 1 week ago". Those are basically types of strings that my simple engine is able to process right now (besides simple queries like "movies", "vector images", etc.)&lt;br /&gt;&lt;br /&gt;I won't deny that all this work got inspired by seeing screenshots for the "Storage" project which Siegfried dug out from somewhere. And even though it seems to be long abandoned and dead, I'd still love to see its sources, but unfortunately I couldn't find them anywhere... But if you know about an URL where it still lives, please give me a shout. ;)&lt;br /&gt;&lt;br /&gt;Also, if nothing else, this work led to a patch for Vala which fixes up bindings for N-ary trees, so soon one will be able to finally use the N-ary trees' datatypes present in glib, without having to reimplement it in Vala.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-6028011849381416416?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/6028011849381416416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/08/experimenting-nl-style.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6028011849381416416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6028011849381416416'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/08/experimenting-nl-style.html' title='Experimenting NL-style...'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eXLL3mWKz5U/TFXV8ZHapVI/AAAAAAAAAE0/BNc8quncOeU/s72-c/sezen-modified-week-ago.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-7370252344691122524</id><published>2010-07-18T17:05:00.000+02:00</published><updated>2010-07-19T10:44:32.190+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome-panel'/><category scheme='http://www.blogger.com/atom/ns#' term='sezen'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>More on Sezen panel applet</title><content type='html'>There has been quite some work on both Sezen and the panel applet since my last post, and here's what's new on that front:&lt;br /&gt;&lt;br /&gt;We went through quite a few design iterations of the applet, here is the evolution:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMDzQNI1UI/AAAAAAAAAD8/00OKwOIGJbc/s1600/Screenshot-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMDzQNI1UI/AAAAAAAAAD8/00OKwOIGJbc/s320/Screenshot-3.png" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_eXLL3mWKz5U/TEMD9xL_w7I/AAAAAAAAAEE/bSjk6R0kWIU/s1600/Screenshot-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/TEMD9xL_w7I/AAAAAAAAAEE/bSjk6R0kWIU/s320/Screenshot-4.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_eXLL3mWKz5U/TEMEHt3SDGI/AAAAAAAAAEM/qQs6eE_iPJg/s1600/Screenshot-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/TEMEHt3SDGI/AAAAAAAAAEM/qQs6eE_iPJg/s320/Screenshot-6.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMEQYl8c-I/AAAAAAAAAEU/Bfx1FOwaV6Y/s1600/Screenshot-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMEQYl8c-I/AAAAAAAAAEU/Bfx1FOwaV6Y/s320/Screenshot-8.png" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_eXLL3mWKz5U/TEMEWaQFeMI/AAAAAAAAAEc/iT7b12XIGYc/s1600/Screenshot-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/TEMEWaQFeMI/AAAAAAAAAEc/iT7b12XIGYc/s320/Screenshot-9.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMEYqw_QSI/AAAAAAAAAEk/LHjbH2L0iI4/s1600/Screenshot-11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMEYqw_QSI/AAAAAAAAAEk/LHjbH2L0iI4/s320/Screenshot-11.png" /&gt;&lt;/a&gt;&lt;/div&gt;At first, we had the main Sezen widget which was stuffed in a menu, but as I mentioned in my previous post, I found this sub-optimal, as navigating in menu is not the same as doing so in a standalone window, and therefore I wanted the browser-like menu, which came to life in the third iteration, but the problem with it was that even though we had thumbnails (though not in the image), they were totally unhelpful, as they were too small. So the fourth iteration introduced three rows of text per each item, which allowed a big thumbnail on the right, but then some items had only one icon on the left, some had one on left and one on the right, and this just felt weird, so I tried to remove the icons from the left and have all of them on the right, but as you can see in the fifth image, this also doesn't look right, so the idea of thumbnails on the right was abandonded, and we ended up with medium-sized thumbnails on the left as you can see in the last image.&lt;br /&gt;&lt;br /&gt;There are still a few loose ends in the applet (clicking on the scroll bar doesn't work most of the time, since scrollbar was never meant to be inside menu, and therefore isn't trivial to fix), and it could also use a global hotkey to popup the search. But even now I find it very usable if one has enough stuff logged by Zeitgeist.&lt;br /&gt;&lt;br /&gt;Since Seif still thought that standard Sezen window is the way to go (with which I obviously don't agree), there's also another version of the applet, which just opens undecorated Sezen under the menu item position:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMJSje3mLI/AAAAAAAAAEs/NtSbAT96yHo/s1600/4ax.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMJSje3mLI/AAAAAAAAAEs/NtSbAT96yHo/s320/4ax.png" /&gt;&lt;/a&gt;&lt;/div&gt;And yea, I agree that it looks nice (especially with elementary theme), but is practically unusable only with keyboard, which I find a deal breaker (also it doesn't close if you click some other window... though this could be implemented, standard menu does it automatically).&lt;br /&gt;&lt;br /&gt;Now I wonder about the future of the applet, should we try to fix the issues it has and push it upstream, or turn it into a widget which any app can use (it'd just tell us which mimetypes it's interested in and it would augment the "Open file" function). Also which version is really better? (but please judge by using them, not by looking at the screenshots)&lt;br /&gt;&lt;br /&gt;Links to get the code:&lt;br /&gt;&lt;a href="https://code.launchpad.net/%7Eelementaryart/gnome-applets/sezen"&gt;https://code.launchpad.net/~elementaryart/gnome-applets/sezen&lt;/a&gt;&lt;br /&gt;&lt;a href="https://code.launchpad.net/%7Eelementaryart/gnome-applets/sezen2"&gt;https://code.launchpad.net/~elementaryart/gnome-applets/sezen2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To install you need to get the branch, its dependencies and run:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="status-body"&gt;&lt;span class="status-content"&gt;&lt;span class="entry-content"&gt;./autogen --prefix=/usr &amp;amp;&amp;amp; cd sezen  &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Of course you should substitute the "sudo make install" with your distro's equivalent.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;PS. For those interested here's my GSoC report for this week: &lt;a href="http://mail.gnome.org/archives/gnome-soc-list/2010-July/msg00050.html"&gt;http://mail.gnome.org/archives/gnome-soc-list/2010-July/msg00050.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-7370252344691122524?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/7370252344691122524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/07/more-on-sezen-panel-applet.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/7370252344691122524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/7370252344691122524'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/07/more-on-sezen-panel-applet.html' title='More on Sezen panel applet'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eXLL3mWKz5U/TEMDzQNI1UI/AAAAAAAAAD8/00OKwOIGJbc/s72-c/Screenshot-3.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-2677931381832223956</id><published>2010-07-04T03:00:00.001+02:00</published><updated>2010-07-04T03:41:29.686+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome-panel'/><category scheme='http://www.blogger.com/atom/ns#' term='sezen'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>Sezen in your panel aka GSoC report #6</title><content type='html'>As the reports themselves are quite boring for many people, I'll  try to post on the blog more interesting stuff, so it will no longer be a direct copy of the message sent to gnome-soc-list. So let's give it a try...&lt;br /&gt;&lt;br /&gt;People who read my reports know that lately I've been working on Sezen (if you haven't heard about this awesome piece of software using Zeitgeist go see a couple of videos at &lt;a href="http://seilo.geekyogre.com/"&gt;Seif's blog&lt;/a&gt;), where both Seif's python version and mine Vala version is receiving lots of love - Seif started to use Mikkel's FTS extension for the search, I didn't do this yet (as the FTS extension might not be installed), but I improved the search we had and now it's no longer that stupid (ie doesn't treat everything as exact phrase search, instead supports "quoted phrase search").&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_eXLL3mWKz5U/TC_XJ-25jzI/AAAAAAAAADk/xpw9Q5F16dM/s1600/sezen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/TC_XJ-25jzI/AAAAAAAAADk/xpw9Q5F16dM/s320/sezen2.png" style="border: 0px none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;But as you could notice from the title of this post, we went further and tried to integrate sezen into gnome-panel via an applet, and this is how far I got:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_eXLL3mWKz5U/TC_YaQIPVVI/AAAAAAAAADs/xKIduCvopfY/s1600/sezen-panel-applet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/TC_YaQIPVVI/AAAAAAAAADs/xKIduCvopfY/s320/sezen-panel-applet.png" /&gt;&lt;/a&gt;&lt;/div&gt;At first Seif wanted to show the full sezen window also in the panel applet, but I wanted to try more "panely" look and feel and therefore went this way. Not to mention the challenge it was to get the Entry and the scrollable IconView widgets to work inside a menu (thank you Gtk for this unforgettable experience, you won a few battles, but I gotcha anyway).&lt;br /&gt;If you're thinking now that it doesn't look as blingy as standalone Sezen I have to agree, but I still think that it has more integrated look with the rest of the panel and is already quite usable. I've been thinking where we could take this and I keep looking at this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_eXLL3mWKz5U/TC_bQmkJ2HI/AAAAAAAAAD0/FuFH3mrW3U8/s1600/omnibar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_eXLL3mWKz5U/TC_bQmkJ2HI/AAAAAAAAAD0/FuFH3mrW3U8/s320/omnibar.png" style="border: 0px none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Wouldn't it be cool to have this kind of widget on your panel allowing you to start working with anything ZG knows about? What do you think?&lt;br /&gt;&lt;br /&gt;For those who are interested, you can also read &lt;a href="http://mail.gnome.org/archives/gnome-soc-list/2010-July/msg00007.html"&gt;my official GSoC report #6&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-2677931381832223956?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/2677931381832223956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/07/sezen-in-your-panel-aka-gsoc-report-6.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2677931381832223956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2677931381832223956'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/07/sezen-in-your-panel-aka-gsoc-report-6.html' title='Sezen in your panel aka GSoC report #6'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eXLL3mWKz5U/TC_XJ-25jzI/AAAAAAAAADk/xpw9Q5F16dM/s72-c/sezen2.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-2768975263740401225</id><published>2010-06-27T18:22:00.000+02:00</published><updated>2010-06-27T18:23:33.447+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='totem'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>GSoC: Zeitgeist weekly report #5</title><content type='html'>Hey there!&lt;br /&gt;&lt;br /&gt;Another report here with a look-back at what I did this week and what is planned for the next week, so here we go:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I started to write a Totem plugin which allows searching for recent media logged in Zeitgeist, so far it's very similar to the Youtube plugin (probably because I borrowed the UI from there), but it indeed does search Zeitgeist. There were a few pecularities with the plugin, so I'll rant here a bit about the documentation - if TotemVideoList requires a reference to TotemObject, it'd be nice to mention this in the documentation - it's far from obvious that one needs to call g_object_set (video_list, "totem", totem_obj, NULL) for it to not crash when one clicks on an item in the widget. Then there were some other crashes when I didn't set "tooltip-column" property, but ok, that one wasn't that hard to figure out.&lt;br /&gt;The plugin was pushed to zeitgeist-dataproviders[1], but as Seif said, it's not a dataprovider, so he removed it from there, and so far I do not know where we'll push these non-logging plugins. Anyway it's there but you have to revert to revision 78.&lt;/li&gt;&lt;li&gt;I helped Seif with Sezen, cause I got quite different data and it was loading very slowly for me - so I tried to use everywhere async gio calls, and after some tweaking it was working much better. &lt;span class="fn"&gt;Btw. Siegfried just pushed Sezen to Zeitgeist PPA [2], so feel free to check it out.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fn"&gt;I was still quite unhappy with the responsiveness of Sezen, so I ported it to Vala [3], but to my surprise the thumbnail fetching in the Vala version is *much* slower than in the python version and I don't really know why. In both python and Vala, I'm trying to load all the thumbnails at once, and while in python this works fine, I was getting "too many open files" error in Vala, so I introduced an async method which limits how many thumbnails can be being fetched at one time (while the others are waiting) and that seems to work quite well, but I still have a feeling that the python version is faster.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="fn"&gt;For next week the plan is to implement also "related media" into the new Totem plugin, take a look on the vim logger, which I noticed is sitting on LP without being "official" part of zeitgeist-dataproviders. And talk to Seif what to do about Sezen / Sezen-vala.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="fn"&gt;[1] https://code.launchpad.net/~zeitgeist-dataproviders/zeitgeist-dataproviders/trunk&lt;/span&gt;&lt;br /&gt;&lt;span class="fn"&gt;[2] https://launchpad.net/~zeitgeist/+archive/ppa&lt;/span&gt;&lt;br /&gt;&lt;span class="fn"&gt;[3] https://code.launchpad.net/~mhr3/sezen/sezen-vala&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-2768975263740401225?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/2768975263740401225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-5.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2768975263740401225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2768975263740401225'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-5.html' title='GSoC: Zeitgeist weekly report #5'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-6653037298903755882</id><published>2010-06-19T11:15:00.000+02:00</published><updated>2010-06-20T23:53:52.910+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='totem'/><title type='text'>GSoC: Zeitgeist weekly report #4</title><content type='html'>Hey everyone, this week the report will be very short, cause as I mentioned in last week's report I was&amp;nbsp;(and still am)&amp;nbsp;travelling, and in the little spare time I had, the internet connection was very flaky, so unfortunatelly I wasn't able to do much.&lt;br /&gt;&lt;br /&gt;I updated the existing plugins to work with libzg 0.2 (as there were some API breaks) and I started to write a totem plugin which will show media grabbed from Zeitgeist, but in the process I encountered a very strange bug in&amp;nbsp;(by that time latest)&amp;nbsp;libzeitgeist, where the timestamps were truncated to 32 bits even though everything was correctly declared as gint64. This of course caused that no results were fetched from Zeitgeist - as the timestamp limited the results till the end of 1970s, and of course I don't have any such events in my DB. Anyway I wrote Mikkel about this bug with a gdb trace and he was able to hunt it down&amp;nbsp;and fix it (fixed in libzg 0.2.1).&lt;br /&gt;&lt;br /&gt;For next week I plan to finish the totem plugin and as planned for this week, I'll stop by in #rhythmbox and try to polish and fix the strange bugs in our new Rhythmbox plugin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-6653037298903755882?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/6653037298903755882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6653037298903755882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/6653037298903755882'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-4.html' title='GSoC: Zeitgeist weekly report #4'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-7492126127689577519</id><published>2010-06-11T00:41:00.000+02:00</published><updated>2010-06-17T17:08:25.039+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><title type='text'>GSoC: Zeitgeist weekly report #3</title><content type='html'>Hello,&lt;br /&gt;&lt;br /&gt;I'll be also a bit early this week, as I'll be traveling starting tomorrow, so here we go:&lt;br /&gt;&lt;br /&gt;This week I finished moving the build system in zeitgeist-dataproviders[1] to autotools, and even though it's not perfect yet (can't install properly firefox and chrome extensions, mostly because I don't know where to put them in the filesystem for it to just work), it's good enough to build all dataproviders. Also if anyone wants to make a package of the dataproviders, please contact me, I think it's time to do it.&lt;br /&gt;&lt;br /&gt;Further I had planned to write a totem extension, which would add some Zeitgeist goodness into it, but in the end this was postponed and instead I wrote a Rhythmbox plugin that adds a few smart playlists to Rhythmbox. This effort was slightly hindered by incomplete Rhythmbox bindings for Vala, but I decided to fix this and auto-generated the Vala bindings for pretty much the entire Rhythmbox, which really wasn't as easy as I expected, but it's now available on bugzilla[2].&lt;br /&gt;Unfortunately I'm seeing some issues with the plugin - for example first time it's loaded it doesn't show anything, even though I am getting the data from Zeitgeist and calling RB's method to add them. I'll have to ask someone who knows the internals of RB why is that...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_eXLL3mWKz5U/TBFpCES-cWI/AAAAAAAAADc/o_zJ7WEsw9Y/s1600/Screenshot-Rhythmbox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/TBFpCES-cWI/AAAAAAAAADc/o_zJ7WEsw9Y/s320/Screenshot-Rhythmbox.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Also today Mikkel pushed some changes to libzeitgeist[3], so while looking at it, I discovered a little patch which was forgotten in my tree, and besides that I was trying to push some Vala goodness for the new API (foreach support), but I wasn't successful at convincing Mikkel that he needs to change the API a bit... yet :)&lt;br /&gt;&lt;br /&gt;So that's about it, for the next week I don't plan much, as I'll be still traveling, but I hope to find some time to polish the new RB plugin, and if I find more time I'll take a stab at the Totem plugin.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="https://code.launchpad.net/zeitgeist-dataproviders"&gt;https://code.launchpad.net/zeitgeist-dataproviders&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=621246"&gt;https://bugzilla.gnome.org/show_bug.cgi?id=621246&lt;/a&gt;&lt;br /&gt;[3] &lt;a href="https://code.launchpad.net/libzeitgeist"&gt;https://code.launchpad.net/libzeitgeist&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-7492126127689577519?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/7492126127689577519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/7492126127689577519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/7492126127689577519'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-3.html' title='GSoC: Zeitgeist weekly report #3'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eXLL3mWKz5U/TBFpCES-cWI/AAAAAAAAADc/o_zJ7WEsw9Y/s72-c/Screenshot-Rhythmbox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-552783656770516146</id><published>2010-06-05T12:58:00.002+02:00</published><updated>2010-06-06T21:03:18.645+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='totem'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>GSoC: Zeitgeist weekly report #2</title><content type='html'>Hey!&lt;br /&gt;&lt;br /&gt;As planned, this week I finished our new Chrome extension together with the NPAPI plugin. In the end the javascript part of the extension didn't turn out to be as straightforward as I expected, but using some not-so-nice hacks&amp;nbsp; it does what it's supposed to do. After I finished the Chrome extension I tried to make our new totem plugin using libzeitgeist build out of totem's tree, and fortunately this was easier than I thought it would, so it's done now and I also got some time to start to revamp the build system in zeitgeist-dataproviders [1], and even though now it's a strange mix of autotools in the top source directory and our own Makefiles in the plugin dirs, it works and currently provides the ability to detect which plugins can be build and it builds only those (note that it's incomplete, but the framework is there).&lt;br /&gt;&lt;br /&gt;Plan for the next week is to move the whole build system to autotools, with the ultimate goal of making it possible to build packages of the dataproviders. Once that is done, I'll start to write another totem plugin, this time one which will pull data from ZG and therefore will add some UI elements to totem. Stay tuned ;)&lt;br /&gt;&lt;br /&gt;Note to self: maybe I'm too spoiled by python, but this just doesn't work in JS (at least not when writing Chrome extension), even though there's no warning/error:&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;if (condition) {&lt;br /&gt;    function callback () {&lt;br /&gt;        console.log("You'll never see this");&lt;br /&gt;    }&lt;br /&gt;    document.addEventListener("event", callback, false);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;[1] &lt;a href="https://code.launchpad.net/zeitgeist-dataproviders"&gt;https://code.launchpad.net/zeitgeist-dataproviders&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-552783656770516146?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/552783656770516146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-2.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/552783656770516146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/552783656770516146'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/06/gsoc-zeitgeist-weekly-report-2.html' title='GSoC: Zeitgeist weekly report #2'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-851142147239869425</id><published>2010-05-28T22:41:00.001+02:00</published><updated>2010-05-29T13:18:23.259+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>GSoC: Zeitgeist weekly report #1</title><content type='html'>Hey everyone!&lt;br /&gt;&lt;br /&gt;This week I've been busy with traveling and moving, but during the past few days I finally managed to work, so here's what I did:&lt;br /&gt;&lt;br /&gt;I started implementing Zeitgeist dataprovider for Chrome (using NPAPI), but this turned out to be quite hard, as after the initial implementation the plugin was working fine in Firefox, but didn't want to show up in Chrome, there weren't any error messages and strace didn't even show Chrome trying to open the dynamic library (and strace -f was hanging)... So it was quite "fun"! Anyway today I managed to make it work and now we have a first version of Chrome extension!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_eXLL3mWKz5U/TAAk3RLdxwI/AAAAAAAAADU/GvKW-0PeANI/s1600/Screenshot-Extension.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_eXLL3mWKz5U/TAAk3RLdxwI/AAAAAAAAADU/GvKW-0PeANI/s320/Screenshot-Extension.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Plan for next week is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;finish the Chrome extension, so it doesn't send multiple events for one website visit as it does now... Also does anyone know how to get document mime-type in Chrome?&lt;/li&gt;&lt;li&gt;if time allows, I'll try to make our new Totem extension to build out of totem tree, which might not be that easy to do (actually I'm not sure it's even possible)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-851142147239869425?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/851142147239869425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/05/gsoc-zeitgeist-weekly-report-1.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/851142147239869425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/851142147239869425'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/05/gsoc-zeitgeist-weekly-report-1.html' title='GSoC: Zeitgeist weekly report #1'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eXLL3mWKz5U/TAAk3RLdxwI/AAAAAAAAADU/GvKW-0PeANI/s72-c/Screenshot-Extension.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-8968748892524292246</id><published>2010-05-24T00:06:00.001+02:00</published><updated>2010-05-24T00:08:35.949+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libwnck'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='gdk'/><title type='text'>Let's make users' lives easier!</title><content type='html'>Zeitgeist can already make users lives really easy (see my last Awn + Zeitgeist post), but we don't have to stop there, one of things I'd really like to see would be if applications helped us with this - if the apps expose which URI they are currently working with (which file is currently open / web page currently viewed / ...) we can make very precise queries as to which other files (or contacts, web pages, applications etc.) are related to this URI.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_eXLL3mWKz5U/S_mmXdYcOhI/AAAAAAAAADM/9MfYPRKWcmM/s1600/zeitgeist-logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" style="border: 0px none" src="http://1.bp.blogspot.com/_eXLL3mWKz5U/S_mmXdYcOhI/AAAAAAAAADM/9MfYPRKWcmM/s320/zeitgeist-logo.png" /&gt;&lt;/a&gt;As everyone likes examples imagine that you're working with a spreadsheet and zeitgeist knows that the last time you were working with it you were checking &lt;i&gt;www.sitewithstats.com&lt;/i&gt;, had &lt;i&gt;last_years_report.pdf&lt;/i&gt; open and were talking to &lt;i&gt;xyz&lt;/i&gt;. Therefore it will provide you these options in some kind of menu (or dock / indicator / windicator). Wouldn't it be great?&lt;br /&gt;&lt;br /&gt;To make this possible I suggest new X property for windows (let's say it'd be "&lt;i&gt;_NET_WM_CURRENT_URI&lt;/i&gt;") and the only thing required by the apps is to set this property when a file is opened and update it when appropriate. If people like this idea I can prepare a patch for gdk (adding &lt;i&gt;gdk_window_set_current_uri_hint&lt;/i&gt;) and libwnck (which would expose the property for pagers). Or perhaps there is already something similar what I missed?&lt;br /&gt;&lt;br /&gt;Comments?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-8968748892524292246?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/8968748892524292246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/05/lets-make-users-lives-easier.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/8968748892524292246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/8968748892524292246'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/05/lets-make-users-lives-easier.html' title='Let&apos;s make users&apos; lives easier!'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eXLL3mWKz5U/S_mmXdYcOhI/AAAAAAAAADM/9MfYPRKWcmM/s72-c/zeitgeist-logo.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-9061718281892546985</id><published>2010-05-06T23:09:00.005+02:00</published><updated>2010-05-07T09:41:57.240+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='applets'/><category scheme='http://www.blogger.com/atom/ns#' term='awn'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>Awn + Zeitgeist = enhance your workflow</title><content type='html'>People say that image is worth thousand words, so take a look at this video instead of me saying all those words:&lt;br /&gt;&lt;br /&gt;&lt;object height="300" width="400"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11534414&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=11534414&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Under the hood there's Awn's window to desktop file matching backed by &lt;a href="https://launchpad.net/wncksync"&gt;wncksync&lt;/a&gt; (if available). And of course Zeitgeist with a couple of extensions which I'm currently working on.&lt;br /&gt;&lt;br /&gt;Before anyone asks, this &lt;strike&gt;isn't yet pushed anywhere&lt;/strike&gt; is now available in a separate awn-extras branch (&lt;a href="https://code.launchpad.net/%7Emhr3/awn-extras/zeitgeist-applet"&gt;https://code.launchpad.net/~mhr3/awn-extras/zeitgeist-applet&lt;/a&gt;), and will be merged to awn-extras trunk once there's an official release of libzeitgeist and everyone (read awn-testing PPA users) will be able to play with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-9061718281892546985?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/9061718281892546985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/05/awn-zeitgeist-enhance-your-workflow.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/9061718281892546985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/9061718281892546985'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/05/awn-zeitgeist-enhance-your-workflow.html' title='Awn + Zeitgeist = enhance your workflow'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-3522590300207880204</id><published>2010-04-27T23:28:00.002+02:00</published><updated>2010-04-27T23:53:43.453+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libzeitgeist'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='zeitgeist'/><title type='text'>Accepted to GSoC!</title><content type='html'>I was looking at interesting projects where I could participate in Google Summer of Code, and the project that caught my attention was libzeitgeist - a C-based library (with Vala bindings!) wrapping the quite complex DBus interface of Zeitgeist, so I wrote a proposal and even though there were some complications and modifications, it was accepted!&lt;br /&gt;Therefore this summer I'll be spending lots of time making sure that the apps that you regularly use in GNOME will have plugins which talk to Zeitgeist, so it can gather as much context of your activities as possible.&lt;br /&gt;&lt;br /&gt;Thanks to Mikkel and Seif for loads of help already, but be aware guys that it was just the beginning :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-3522590300207880204?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/3522590300207880204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/04/accepted-to-gsoc.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/3522590300207880204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/3522590300207880204'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/04/accepted-to-gsoc.html' title='Accepted to GSoC!'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-2756835981344337763</id><published>2010-04-11T14:35:00.020+02:00</published><updated>2010-04-12T12:58:19.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awn 0.4'/><title type='text'>Awn &amp; Awn-Extras 0.4.0 are out!</title><content type='html'>It's been over 14 months the Awn and Awn Extras teams had interesting news, but the time has come to introduce our latest and so far greatest release. For the past year we've been busy with rewriting our precious dock and making it even more awesome, and today you can see the results of this work. Take a look at this screencast of various Awn settings done by moonbeam - one of our developers:&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mHDL4dIH10I&amp;amp;hl=cs_CZ&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/mHDL4dIH10I&amp;amp;hl=cs_CZ&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Avant Window Navigator is a dock for the Free Desktop which shows your launchers and open applications. It also contains support for extensions, via plugins for third-party applications, which communicate with the dock with DBus, and via applets, which allows for workspace switchers, system trays, clocks, etc., to be embedded in the dock. These applets can be written in Vala, Python or C.&lt;br /&gt;&lt;br /&gt;Awn Extras is a catch-all project which houses mainly third-party applets for use with Avant Window Navigator.&lt;br /&gt;&lt;br /&gt;I'm sure you're curious about what's new in this version, so here we go:&lt;ul&gt;&lt;li&gt;Awn can be finally positioned on any edge of the screen.&lt;/li&gt;&lt;li&gt;You can now pick among these background styles: Flat, Edgy, 3D, Curved, Floaty.&lt;/li&gt;&lt;li&gt;Expanded mode (Awn will cover whole screen width).&lt;/li&gt;&lt;li&gt;Autohide was completely revamped and Awn now supports Intellihide and Window Dodge modes.&lt;/li&gt;&lt;li&gt;Loading and crash indicators - no more white lines!&lt;br /&gt;&lt;object width="600" height="155" class="BLOG_video_class" id="BLOG_video-b954acfe0b632851" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v14.nonxt2.googlevideo.com/videoplayback?id%3Db954acfe0b632851%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330394795%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3B5EC8264CF9DC1F8B102DCF720504AFFBF7F0B0.5FC78E1EB0024A2435F74C9F029EACCFF3F77B11%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Db954acfe0b632851%26offsetms%3D5000%26itag%3Dw160%26sigh%3D139jpxOJfhHcCyOc1E4lIl1jjdY&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="600" height="155" bgcolor="#FFFFFF"flashvars="flvurl=http://v14.nonxt2.googlevideo.com/videoplayback?id%3Db954acfe0b632851%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330394795%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3B5EC8264CF9DC1F8B102DCF720504AFFBF7F0B0.5FC78E1EB0024A2435F74C9F029EACCFF3F77B11%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Db954acfe0b632851%26offsetms%3D5000%26itag%3Dw160%26sigh%3D139jpxOJfhHcCyOc1E4lIl1jjdY&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added possibility to change Awn's alignment - you don't have to have it centered.&lt;/li&gt;&lt;li&gt;Awn tries to blend in with your theme colors by default.&lt;/li&gt;&lt;li&gt;Added four beautiful themes.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eXLL3mWKz5U/S8I21KU2-JI/AAAAAAAAAC8/F8Dm7dKZ3v4/s1600/awn-themes.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 182px;" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/S8I21KU2-JI/AAAAAAAAAC8/F8Dm7dKZ3v4/s320/awn-themes.png" alt="" id="BLOGGER_PHOTO_ID_5458985985259272338" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Most of the icons can be changed by simply dragging an icon file onto them.&lt;/li&gt;&lt;li&gt;Basic support for environments without compositing (desktop-effects).&lt;/li&gt;&lt;li&gt;Added simple Preferences applet (drag it to screen edges / different monitors to quickly change Awn orientation).&lt;/li&gt;&lt;li&gt;Task manager applet now supports grouping of windows.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;For developers we have the following news:&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Awn deprecated its old DBus interface (com.google.&lt;wbr&gt;code.Awn) and uses now new DBus interface (org.freedeskto&lt;wbr&gt;p.DockManager)&lt;wbr&gt;. This new interface should be soon supported by other dock applications and therefore you no longer need to worry that you're writing your plugin for a specific dock.&lt;/li&gt;&lt;li&gt;For applet developers we have new API, check out the documentation to see what's available (usually libawn-doc package).&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;News for packagers:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Awn now depends on the new &lt;a href="https://launchpad.net/libdesktop-agnostic"&gt;libdesktop-anostic&lt;/a&gt; library, which provides extensible configuration API, a unified virtual file system API, and a desktop item editor (all with pluggable backends).&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-style: italic;"&gt; Known issues:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Location of user settings were changed, therefore you'll need to set-up all your preferences again if you're upgrading.&lt;/li&gt;&lt;li&gt;Themes which were made for previous Awn versions are not compatible.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Notable changes in Awn Extras:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;New applets:&lt;/span&gt;&lt;ul&gt;&lt;li&gt;YAMA: Yet Another Menu Applet that uses a Gtk+ menu for applications and preferences, has support for places, recent documents, and can lock the screen, logout or shutdown &lt;/li&gt;&lt;li&gt; Garbage - replaces old Trash applet &lt;/li&gt;&lt;li&gt; Hardware Sensors &lt;/li&gt;&lt;li&gt; System Monitor&lt;/li&gt;&lt;li&gt; Dialect Applet - Keyboard indicator &lt;/li&gt;&lt;li&gt; SlickSwitcher - a compiz-oriented workspace switcher&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Feeds - fetches data from RSS/Atom / Google reader / Google Wave / Reedit Inbox / Twitter&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Significant changes to existing applets:&lt;/span&gt;&lt;ul&gt;&lt;li&gt; Cairo Clock: loads locations search window much faster &lt;/li&gt;&lt;li&gt; Mount Applet: rewritten &lt;/li&gt;&lt;li&gt; Quit Applet: clicking can now either lock the screen, log you out, or shut down the system. You can configure the applet to display a docklet, presenting the 3 actions (lock screen, log out, shut down)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8IqgNkVgxI/AAAAAAAAAB0/1hxhjyvnmeI/s1600/quit-docklet.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 50px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8IqgNkVgxI/AAAAAAAAAB0/1hxhjyvnmeI/s320/quit-docklet.png" alt="" id="BLOGGER_PHOTO_ID_5458972431212708626" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;File-browser-launcher: can display multiple icons&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8Iq0Uec4FI/AAAAAAAAAB8/51IQ-8MxRMs/s1600/fbl-docklet.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 46px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8Iq0Uec4FI/AAAAAAAAAB8/51IQ-8MxRMs/s320/fbl-docklet.png" alt="" id="BLOGGER_PHOTO_ID_5458972776664457298" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Volume Control: uses GStreamer instead of pyalsaaudio &lt;/li&gt;&lt;li&gt; Weather: support for more icon themes, improvement of the preferences window, and reworked network code (improving the responsiveness of the applet)&lt;/li&gt;&lt;li&gt;ThinkHDAPS, Volume Control, Weather now use system theme by default and automatically respond to system theme change. &lt;/li&gt;&lt;li&gt;Cairo menu: rewritten, now allows adding icons for arbitrary menus.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Media Control: displays album art if available (can be set to use docklet mode)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8IrMjsDMJI/AAAAAAAAACE/Gq0ZtFWyZck/s1600/media-control-docklet.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 54px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8IrMjsDMJI/AAAAAAAAACE/Gq0ZtFWyZck/s320/media-control-docklet.png" alt="" id="BLOGGER_PHOTO_ID_5458973193064886418" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to get these goodies?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you're running Ubuntu Lucid, you can just use the software center to get it (search for "avant window navigator"). Packages for older Ubuntu versions should appear within a day or so in &lt;a href="https://launchpad.net/%7Eawn-core/+archive/ppa"&gt;awn-core PPA&lt;/a&gt;. Packages for other distros will likely appear in a couple of days. Of course you can also &lt;a href="https://launchpad.net/awn/+download"&gt;download the release tarballs&lt;/a&gt; (&lt;a href="https://launchpad.net/awn-extras/+download"&gt;awn-extras&lt;/a&gt;, &lt;a href="https://launchpad.net/libdesktop-agnostic/+download"&gt;libdesktop-agnostic&lt;/a&gt;) and try to &lt;a href="http://wiki.awn-project.org/InstallingFromSource"&gt;install from source&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And now some screenshots from Awn users:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eXLL3mWKz5U/S8I0BL7UxRI/AAAAAAAAACM/bcnFi__tCmE/s1600/EspressoPreivew.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 30px;" src="http://1.bp.blogspot.com/_eXLL3mWKz5U/S8I0BL7UxRI/AAAAAAAAACM/bcnFi__tCmE/s320/EspressoPreivew.png" alt="" id="BLOGGER_PHOTO_ID_5458982893312591122" title="Espresso theme (available on our forums)" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8I0IJXV7nI/AAAAAAAAACU/34kY-OrfQFE/s1600/h4writer.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 215px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8I0IJXV7nI/AAAAAAAAACU/34kY-OrfQFE/s320/h4writer.png" alt="" id="BLOGGER_PHOTO_ID_5458983012883885682" title="Dust theme with customized launcher icons" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eXLL3mWKz5U/S8JJ7SkavvI/AAAAAAAAADE/9EgZFKk3PY8/s1600/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/S8JJ7SkavvI/AAAAAAAAADE/9EgZFKk3PY8/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5459006981272157938" title="Right-oriented Edgy panel" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8I0PsK7cyI/AAAAAAAAACc/P0Ego_hvmnc/s1600/kylehuff.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8I0PsK7cyI/AAAAAAAAACc/P0Ego_hvmnc/s320/kylehuff.png" alt="" id="BLOGGER_PHOTO_ID_5458983142486143778" title="Using Awn on top of standard panel" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eXLL3mWKz5U/S8I0X7pH5mI/AAAAAAAAACk/u9h813hpefI/s1600/metal.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 33px;" src="http://3.bp.blogspot.com/_eXLL3mWKz5U/S8I0X7pH5mI/AAAAAAAAACk/u9h813hpefI/s320/metal.png" alt="" id="BLOGGER_PHOTO_ID_5458983284078274146" title="Metal theme available on our forums" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eXLL3mWKz5U/S8I0gzSonyI/AAAAAAAAACs/UF9BnT7gvsA/s1600/moonbeam-apr11-2010.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/S8I0gzSonyI/AAAAAAAAACs/UF9BnT7gvsA/s320/moonbeam-apr11-2010.png" alt="" id="BLOGGER_PHOTO_ID_5458983436455288610" title="Expanded floaty panel" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8I0n5FadhI/AAAAAAAAAC0/pIr8RTiXdos/s1600/screenshot_awn_cropped.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 42px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/S8I0n5FadhI/AAAAAAAAAC0/pIr8RTiXdos/s320/screenshot_awn_cropped.png" alt="" id="BLOGGER_PHOTO_ID_5458983558269531666" title="Obscura theme available on our forums" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-2756835981344337763?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/2756835981344337763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/04/awn-awn-extras-040-are-out.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2756835981344337763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/2756835981344337763'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/04/awn-awn-extras-040-are-out.html' title='Awn &amp; Awn-Extras 0.4.0 are out!'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eXLL3mWKz5U/S8I21KU2-JI/AAAAAAAAAC8/F8Dm7dKZ3v4/s72-c/awn-themes.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-5224731244024240578</id><published>2010-03-09T14:43:00.000+01:00</published><updated>2010-03-10T01:09:55.286+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='helpers'/><category scheme='http://www.blogger.com/atom/ns#' term='awn 0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='dbus api'/><title type='text'>Dock-agnostic helpers?</title><content type='html'>As I mentioned in my last post, there has been work to create a dock-agnostic DBus API for manipulating items displayed on a dock. We now have an API draft which is implemented by latest Awn and a word from Docky's lead developer to implement the API once they have some time to do so.&lt;br /&gt;&lt;br /&gt;As I was testing our implementation of the API, I took some of Docky's python helper scripts and converted them to use the new methods - results can be found @ &lt;a href="https://code.launchpad.net/%7Emhr3/+junk/dock_scripts"&gt;https://code.launchpad.net/~mhr3/+junk/dock_scripts&lt;/a&gt;. So far I played with pidgin, rhythmbox, but mostly with transmission helper which now seems to me really useful. Have a look yourself:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/S5bgFp7vz5I/AAAAAAAAABk/Dfri-9mexyg/s1600-h/transmission-awn.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 283px; height: 78px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/S5bgFp7vz5I/AAAAAAAAABk/Dfri-9mexyg/s320/transmission-awn.png" alt="" id="BLOGGER_PHOTO_ID_5446787187111612306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eXLL3mWKz5U/S5biWGw_kkI/AAAAAAAAABs/uGMM_utZsVA/s1600-h/pidgin-helper.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 236px; height: 275px;" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/S5biWGw_kkI/AAAAAAAAABs/uGMM_utZsVA/s320/pidgin-helper.png" alt="" id="BLOGGER_PHOTO_ID_5446789668752298562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What's next? The best thing would be to create a separate project for the dock helper scripts with some kind of configuration UI and rewrite the base python API, so it can work better (usable as both standalone scripts, but also provide a helper class for easy integration as plugins for other applications - obviously rhythmbox's helper script should be a plugin for rhythmbox to keep the memory usage down for one). And now I wonder if there are any volunteers for this... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-5224731244024240578?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/5224731244024240578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/02/dock-agnostic-helpers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/5224731244024240578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/5224731244024240578'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/02/dock-agnostic-helpers.html' title='Dock-agnostic helpers?'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eXLL3mWKz5U/S5bgFp7vz5I/AAAAAAAAABk/Dfri-9mexyg/s72-c/transmission-awn.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-4195663522222247452</id><published>2010-01-19T15:21:00.004+01:00</published><updated>2010-01-19T17:39:05.923+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awn 0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='dbus api'/><category scheme='http://www.blogger.com/atom/ns#' term='applets'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Recent developments</title><content type='html'>It's been a while since there were some interesting Awn news from me, but fortunately &lt;a href="http://moon-shiny.blogspot.com/"&gt;moonbeam&lt;/a&gt; has been filing the gap with his posts on the &lt;a href="http://moon-shiny.blogspot.com/2010/01/context-menus-can-be-fun.html"&gt;task-manager popup menu customization&lt;/a&gt; and also his work on &lt;a href="http://moon-shiny.blogspot.com/2009/12/so-you-like-network-manager.html"&gt;network-manager adaptation for use in Awn&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've been mostly looking over the core bugs reported at Launchpad, trying to fix them. Luckily there aren't many, which I suppose either means that we don't have enough bug-filing testers or that this release will be one of the best so far - of course I hope that the second one is the case. :) On the other hand there are quite a few bugs reported for awn-extras project (where most of our applets live) and it isn't always easy to fix bugs there, as some applets are without maintainer (for example Stacks), some maintainers are busy doing other stuff, and of course some applets would need major rewrites and people don't have time for that (Mail applet, Digital Clock, ...). Otherwise said, if you'd like to do some Awn applet development, now is the time. ;)&lt;br /&gt;&lt;br /&gt;One of the things that I like is that there were some great updates for a few of our applets - the Weather applet is now finally doing it's networking in a separate thread, which means no more hanging mid-animation during an update and it also started to use one of our new features in Awn 0.4 - overlays - now you can clearly see when there's a network error or the actual network fetch is happening. Kudos to danni for a &lt;a href="http://dannipenguin.livejournal.com/288663.html"&gt;nice threaded processing queue for python&lt;/a&gt; and to &lt;a href="http://denkpadje.blogspot.com/"&gt;onox&lt;/a&gt; for implementing this in Weather. Still, Weather is not the only applet using the threaded queue, and &lt;a href="http://sharkbaitbobby.blogspot.com/"&gt;sharkbait's&lt;/a&gt; Feeds applet is now better than ever with this, not to mention looking great. I only hope that more python applets will try to use this (yes I'm looking at Mail applet).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eXLL3mWKz5U/S1XbhhN_gMI/AAAAAAAAABc/HUEm6wfPEiw/s1600-h/feeds.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 226px; height: 86px;" src="http://1.bp.blogspot.com/_eXLL3mWKz5U/S1XbhhN_gMI/AAAAAAAAABc/HUEm6wfPEiw/s320/feeds.png" alt="" id="BLOGGER_PHOTO_ID_5428486294764224706" title="Feeds applet showing there's a new tweet" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What I'm personally excited about (and pushed hard to make it happen) is the agreement with Docky's lead developer &lt;a href="http://jassmith.wordpress.com/"&gt;DBO&lt;/a&gt; on a common dock item management DBus API, where various applications can add menu items to things on the dock, change the icon used (for example media-players with album arts) add some text, etc. This has been present in Awn for years, but isn't overly used and moreover the API was crappy, and seeing how everyone is excited about "helpers" in Docky (which do this exact thing) I thought having a common API for this will only benefit all dock users. Though so far the API isn't implemented by us, nor Docky, I believe this will soon change (at least on our side). Of course other dock apps are welcome to join us here.&lt;br /&gt;&lt;br /&gt;A few days ago I started to gut our core library (libawn) and the &lt;a href="https://code.launchpad.net/%7Eawn-core/awn/core-icons"&gt;current result&lt;/a&gt; is a mix of &lt;a href="http://live.gnome.org/Vala"&gt;Vala&lt;/a&gt; and C code in there (I rewrote our core AwnApplet class using Vala) and I'm actually running this code and it works as great as the C original (even though compiling it is all kinds of weird - a special shell script instead of proper makefile rule). Ideally this branch will be base for our new major version (probably Awn 0.6) and I'd be happy if more code was rewritten to Vala, though it's not that important (the C code works fine, right? on the other hand being able to easily extend it is very good justification for using Vala). However, I also want to introduce some &lt;a href="https://blueprints.launchpad.net/awn/+spec/core-icons"&gt;architectural changes&lt;/a&gt; and it'd be nice if some of the API that will be added made it's way also to Awn 0.4, so applet devs could play with it before 0.6 release (though stability-wise it most likely isn't a good idea). Then again, if it will be clear that the release of 0.4 will slip further into the future, I will push to merge this code. All in all, cool stuff is over the horizon!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-4195663522222247452?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/4195663522222247452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2010/01/recent-developments.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4195663522222247452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4195663522222247452'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2010/01/recent-developments.html' title='Recent developments'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eXLL3mWKz5U/S1XbhhN_gMI/AAAAAAAAABc/HUEm6wfPEiw/s72-c/feeds.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-8912005588406585057</id><published>2009-10-07T10:25:00.005+02:00</published><updated>2009-10-10T15:55:29.576+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awn 0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='applets'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>How about C# applets in Awn?</title><content type='html'>Recently I've been trying to make mono bindings for libawn, and I can say that this effort was successful and we have now experimental mono bindings. But since the bindings are very new, and there aren't any "real" applets written in C#, only a very limited subset of the functionality was tested, the bindings won't be part of the 0.4 release (though even the official Awn will support executing mono applets), but this should change for the next release (0.6).&lt;br /&gt;&lt;br /&gt;Also one major issue is properly integrating the binding generation into our build system, so if there's any autotools guru, who'd like to help out, please feel free to take a look at it ;)&lt;br /&gt;&lt;br /&gt;Of course you can find the mono-bindings branch on Launchpad &gt; &lt;a href="https://code.launchpad.net/%7Eawn-core/awn/0.4-mono-bindings"&gt;https://code.launchpad.net/~awn-core/awn/0.4-mono-bindings&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is how you can build the bindings:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;get the above mentioned branch&lt;/li&gt;&lt;li&gt;if you don't have Awn 0.4 installed run `&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;./autogen.sh &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install&lt;/span&gt;&lt;/span&gt;`, otherwise you can skip this&lt;br /&gt;&lt;/li&gt;&lt;li&gt;`&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;cd bindings/mono&lt;/span&gt;&lt;/span&gt;` and...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;since the mono bindings have their own build system run `&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;./autogen.sh&lt;/span&gt;&lt;/span&gt;`&lt;/li&gt;&lt;li&gt;if autogen spits any errors, you'll need to make it happy - install gapi stuff (gtk-sharp2-gapi package) etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;now you need to `&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;make -C sources api&lt;/span&gt;&lt;/span&gt;`&lt;/li&gt;&lt;li&gt;once the API xml files are generated (courtesy of previous step) you can just run `&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;make &amp;amp;&amp;amp; sudo make install&lt;/span&gt;&lt;/span&gt;`&lt;/li&gt;&lt;/ul&gt;If you get "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Cannot open assembly '/usr/lib/mono/1.0/mcs.exe': No such file or directory.&lt;/span&gt;&lt;/span&gt;" during the last make (as I do on Ubuntu 9.04) run `&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;./configure CSC=/usr/bin/gmcs&lt;/span&gt;&lt;/span&gt;` (in the bindings/mono directory) and then repeat the last step.&lt;br /&gt;&lt;br /&gt;Depending on what install prefix you used you might need to tell mono where to look for the &lt;span style="font-style: italic;"&gt;libawn-sharp.dll&lt;/span&gt; file - if you used &lt;span style="font-style: italic;"&gt;/usr/local&lt;/span&gt; as install prefix (which is the default) you will need to run Awn with `&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;MONO_GAC_PREFIX=/usr/local/ avant-window-navigator&lt;/span&gt;&lt;/span&gt;`, otherwise you'll get an error like this when a mono applet is executed:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;WARNING **: Could not load file or assembly 'libawn-sharp, Version=0.3.9.0, Culture=neutral, PublicKeyToken=c58bb20247732067' or one of its dependencies.&lt;br /&gt;&lt;br /&gt;Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'libawn-sharp, Version=0.3.9.0, Culture=neutral, PublicKeyToken=c58bb20247732067' or one of its dependencies.&lt;br /&gt;File name: 'libawn-sharp, Version=0.3.9.0, Culture=neutral, PublicKeyToken=c58bb20247732067'&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Now you're ready to hack Awn applets in C# (be sure to take a look at applets/unmaintained/mono-test in awn-extras branch for a small inspiration how to start). And now I have to show you this cool screenshot, which just shows Awn running 1 C applet, 4 python applets, 1 Vala applet and a mono applet:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/Ssxaob_C3nI/AAAAAAAAABQ/Rmk6q_M8gqE/s1600-h/Screenshot-3.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 303px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/Ssxaob_C3nI/AAAAAAAAABQ/Rmk6q_M8gqE/s320/Screenshot-3.png" alt="Doesn't it look cool?" id="BLOGGER_PHOTO_ID_5389782504809094770" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-8912005588406585057?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/8912005588406585057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2009/10/how-about-c-applets-in-awn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/8912005588406585057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/8912005588406585057'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2009/10/how-about-c-applets-in-awn.html' title='How about C# applets in Awn?'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eXLL3mWKz5U/Ssxaob_C3nI/AAAAAAAAABQ/Rmk6q_M8gqE/s72-c/Screenshot-3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-4641692982249741945</id><published>2009-09-20T14:13:00.007+02:00</published><updated>2009-10-10T15:55:00.066+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awn 0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='panel'/><title type='text'>New Awn background: Floaty!</title><content type='html'>Today I decided to take a stab at implementing new background style for Awn, it's pretty similar to "flat" background - code- and also look-wise, so it was pretty easy to do it.&lt;br /&gt;Hopefully this will make more people happy, as &lt;a href="https://bugs.launchpad.net/awn/+bug/410850"&gt;this feature was requested&lt;/a&gt; a couple of times on &lt;a href="https://bugs.launchpad.net/awn/"&gt;our bug tracker&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway kudos to wbar quys, cause it seems they had a background like this in their dock first.&lt;br /&gt;&lt;br /&gt;And of course an obligatory screenshot:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eXLL3mWKz5U/SrYeD3zAcnI/AAAAAAAAAAU/2hSmzbg5SnM/s1600-h/Screenshot-2.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 57px;" src="http://4.bp.blogspot.com/_eXLL3mWKz5U/SrYeD3zAcnI/AAAAAAAAAAU/2hSmzbg5SnM/s400/Screenshot-2.png" alt="" id="BLOGGER_PHOTO_ID_5383523456434336370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here's another screenshot of how it looks on the desktop:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eXLL3mWKz5U/SrYdELT5VxI/AAAAAAAAAAM/99OhmBM9E6o/s1600-h/Screenshot-1.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_eXLL3mWKz5U/SrYdELT5VxI/AAAAAAAAAAM/99OhmBM9E6o/s320/Screenshot-1.png" alt="" id="BLOGGER_PHOTO_ID_5383522362160928530" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-4641692982249741945?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/4641692982249741945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2009/09/new-awn-background-floaty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4641692982249741945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/4641692982249741945'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2009/09/new-awn-background-floaty.html' title='New Awn background: Floaty!'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eXLL3mWKz5U/SrYeD3zAcnI/AAAAAAAAAAU/2hSmzbg5SnM/s72-c/Screenshot-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-5757696539116700501</id><published>2009-07-25T15:10:00.006+02:00</published><updated>2009-10-10T15:54:44.803+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awn 0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='applets'/><title type='text'>Recommended changes for 0.4 applets</title><content type='html'>As you may and may not have noticed, a couple of signals were recently added to both AwnIcon and AwnAppletSimple. These are &lt;a href="http://www.stud.fit.vutbr.cz/%7Exhruby16/libawn/AwnAppletSimple.html#AwnAppletSimple-clicked"&gt;"&lt;span style="font-style: italic;"&gt;clicked&lt;/span&gt;"&lt;/a&gt;, &lt;a href="http://www.stud.fit.vutbr.cz/%7Exhruby16/libawn/AwnAppletSimple.html#AwnAppletSimple-long-press"&gt;"&lt;span style="font-style: italic;"&gt;long-press&lt;/span&gt;"&lt;/a&gt; and &lt;a href="http://www.stud.fit.vutbr.cz/%7Exhruby16/libawn/AwnAppletSimple.html#AwnAppletSimple-context-menu-popup"&gt;"&lt;span style="font-style: italic;"&gt;context-menu-popup&lt;/span&gt;"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I think it's pretty clear what these do - you no longer need to connect to "button-press-event" (though you can), and switch through &lt;span style="font-style: italic;"&gt;event.button&lt;/span&gt;, but that's not all. As h4writer (one of our core devs) mentioned some time ago, there are inconsistencies in clicking on the icons. Basically, in the past all applets did an action on the button press - as opposed to button release, which is common for button-type widgets. The &lt;span style="font-style: italic;"&gt;clicked&lt;/span&gt; signal sorts out this inconsistency and fires when the icon gets the actual button-release event (meanwhile checking if it also got the button-press).&lt;br /&gt;But that's still not all, if you use the &lt;span style="font-style: italic;"&gt;clicked&lt;/span&gt; signal, you'll actually see that there's a subtle animation - the icon glows slightly while it's depressed - yay for eye-candy!&lt;br /&gt;&lt;br /&gt;This way I'd like to appeal to you to make this simple transition in your applets, so that all 0.4 applets use the &lt;span style="font-style: italic;"&gt;clicked&lt;/span&gt; signal instead of &lt;span style="font-style: italic;"&gt;button-press-event&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;As for the "&lt;span style="font-style: italic;"&gt;context-menu-popup&lt;/span&gt;" signal, applets were doing this correctly - because popup menu is supposed to popup on the actual button-press, but it was added anyway for your convenience.&lt;br /&gt;&lt;br /&gt;The last of the new signals &lt;span style="font-style: italic;"&gt;long-press&lt;/span&gt; was added primarily because of taskmanager needs and gets emitted a second after button-press event (if there was no button-release meanwhile). Please don't use this forcefully, it is far from obvious that there can be an action on long-press.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-5757696539116700501?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/5757696539116700501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2009/07/recommended-changes-for-04-applets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/5757696539116700501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/5757696539116700501'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2009/07/recommended-changes-for-04-applets.html' title='Recommended changes for 0.4 applets'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-8008533799085102517</id><published>2009-06-28T00:05:00.006+02:00</published><updated>2009-10-10T15:54:18.281+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awn 0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='applets'/><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><title type='text'>Migrating applets to Awn 0.4</title><content type='html'>Since we're trying really hard to get Awn 0.4 into a usable state with all the glory and most of the applets we had in the previous releases, I'll try to describe the important changes that happened in the API, so it's easier to convert existing applets to work in 0.4. Please note that if you were using &lt;a href="http://denkpadje.blogspot.com/"&gt;onox&lt;/a&gt;'s awnlib, the conversion should be painless, because it wraps libawn API and therefore applets did not need to be modified (but I might be wrong, onox will know better).&lt;br /&gt;&lt;br /&gt;If you're interested in an article about how to write an actual applet from the beggining, I do plan to write that too, so check back later.&lt;br /&gt;I also plan to write an article about the completely new functions/methods/classes, so you'll have to wait for that a bit as well.&lt;br /&gt;&lt;br /&gt;Note that for the sake of simplicity I'll be using pythonish syntax, even though I mostly write C code, so here and there the class names etc. might more resemble C.&lt;br /&gt;&lt;br /&gt;So here is a quick list of the most important changes:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;AwnApplet&lt;/span&gt; was completely revamped - now its base class is &lt;span style="font-style: italic;"&gt;GtkPlug&lt;/span&gt; (as opposed to &lt;span style="font-style: italic;"&gt;GtkEventBox&lt;/span&gt;) and it handles connecting to main Awn process, sending signals to whoever is interested, etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;therefore &lt;span style="font-style: italic;"&gt;AwnPlug&lt;/span&gt; died.&lt;/li&gt;&lt;li&gt;many (if not all) of &lt;span style="font-style: italic;"&gt;AwnAppletSimple&lt;/span&gt;'s methods were renamed.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;AwnAppletDialog&lt;/span&gt; is now &lt;span style="font-style: italic;"&gt;AwnDialog&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;AwnTitle&lt;/span&gt; got also renamed to &lt;span style="font-style: italic;"&gt;AwnTooltip&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the job of &lt;span style="font-style: italic;"&gt;AwnIcons&lt;/span&gt; now handles &lt;span style="font-style: italic;"&gt;AwnThemedIcon&lt;/span&gt; (which is part of &lt;span style="font-style: italic;"&gt;AppletSimple&lt;/span&gt;).&lt;/li&gt;&lt;/ol&gt;And now to show you some actual code, I'll help myself by looking at the modifications that were needed to get media-control applet to work in 0.4 (thank you `bzr diff` for making this easy):&lt;br /&gt;&lt;br /&gt;I'll start with the &lt;span style="font-style: italic;"&gt;AwnApplet&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;Simple&lt;/span&gt;) constructor. In 0.2 (note that I use 0.2 for Awn versions 0.2.x and 0.3.x, since the API was pretty much the same) you'd have:&lt;br /&gt;&lt;pre name="code" class="python"&gt;class MyApplet(awn.AppletSimple):&lt;br /&gt;def __init__(self, uid, orient, height):&lt;br /&gt; awn.AppletSimple.__init__(self, uid, orient, height)&lt;br /&gt; # do stuff&lt;br /&gt;&lt;br /&gt;# creating an instance looked like this&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;awn.init (sys.argv[1:])&lt;br /&gt;applet = MyApplet(awn.uid, awn.orient, awn.height)&lt;br /&gt;# ...&lt;br /&gt;&lt;/pre&gt;This will now be:&lt;br /&gt;&lt;pre name="code" class="python"&gt;class MyApplet(awn.AppletSimple):&lt;br /&gt;def __init__(self, uid, panel_id):&lt;br /&gt; # of course you can pass also the "applet-name", that's up to you&lt;br /&gt; awn.AppletSimple(self, "applet-name", uid, panel_id)&lt;br /&gt; # do stuff&lt;br /&gt; # to get the former "height" ie. size of the applet, you can now do:&lt;br /&gt; size = self.get_size()&lt;br /&gt;&lt;br /&gt;# creating an instance is now:&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;awn.init (sys.argv[1:])&lt;br /&gt;applet = MyApplet(awn.uid, awn.panel_id)&lt;br /&gt;# ...&lt;br /&gt;&lt;/pre&gt;Now let's talk about the methods of AppletSimple, these methods no longer exist:&lt;br /&gt;&lt;pre name="code" class="python"&gt;# imagine we have "self" an instance of awn.AppletSimple&lt;br /&gt;self.set_title(text)&lt;br /&gt;self.set_title_visibility(bool)&lt;br /&gt;self.set_icon(pixbuf)&lt;br /&gt;self.set_icon_context(cairo_context)&lt;br /&gt;self.set_awn_icon(applet_name, icon_name)&lt;br /&gt;self.get_awn_icons()&lt;br /&gt;&lt;br /&gt;# and now the commonly used methods of AwnIcons:&lt;br /&gt;self.get_awn_icons().get_icon_simple_at_height(height)&lt;br /&gt;self.get_awn_icons().get_icon_simple() # returned icon with size equal to 48&lt;br /&gt;&lt;/pre&gt;But you can use these instead:&lt;br /&gt;&lt;pre name="code" class="python"&gt;self.set_tooltip_text(text)&lt;br /&gt;# if you want to show tooltip on mouse-over and hide it on mouse-out you DON'T&lt;br /&gt;# need to call these, there are properties of AwnTooltip which handle it.&lt;br /&gt;# this means you probably no longer need to connect to enter/leave-notify-events&lt;br /&gt;# and show/hide the tooltip manually&lt;br /&gt;# (for more info see "smart-behavior" property on libawn API pages)&lt;br /&gt;self.get_tooltip().show() or self.get_tooltip().hide()&lt;br /&gt;self.set_icon_pixbuf(pixbuf)&lt;br /&gt;self.set_icon_context(cairo_context)&lt;br /&gt;self.set_icon_name(icon_name) # applet_name is taken from what you passed to the constructor&lt;br /&gt;self.get_icon()          # returns awn.ThemedIcon&lt;br /&gt;&lt;br /&gt;# you can get former AwnIcons functionality with:&lt;br /&gt;self.get_icon().get_icon_at_size(size)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As for "&lt;span style="font-style: italic;"&gt;awn.AppletDialog&lt;/span&gt;", the only thing you need to do is to substitute it for "&lt;span style="font-style: italic;"&gt;awn.Dialog&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;And that's it, these are all the changes that had to be done for media-control applet and it should hopefully help you convert your applet.&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;Our API is still not officially "frozen", so there could be some more changes, but we will try to minimize them, for me the only unknown is &lt;a href="http://blogger.malept.com/"&gt;malept&lt;/a&gt;'s config client (&lt;span style="font-style: italic;"&gt;awn.Config&lt;/span&gt;) which probably will need to be renamed, since it will be now part of &lt;a href="https://launchpad.net/libdesktop-agnostic/"&gt;libdesktop-agnostic&lt;/a&gt;, but other than that its API should be more or less compatible.&lt;br /&gt;&lt;br /&gt;Also current version of libawn API can be currently found at &lt;a href="http://www.stud.fit.vutbr.cz/%7Exhruby16/libawn/"&gt;http://www.stud.fit.vutbr.cz/~xhruby16/libawn/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit:&lt;/b&gt; There was one more change to the AwnApplet constructor, now you need to pass canonical-name for the applet as first parameter. The code above was updated to reflect this change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-8008533799085102517?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/8008533799085102517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2009/06/migrating-applets-to-awn-04.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/8008533799085102517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/8008533799085102517'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2009/06/migrating-applets-to-awn-04.html' title='Migrating applets to Awn 0.4'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5662148629346975559.post-3652043441207370526</id><published>2009-06-27T01:53:00.000+02:00</published><updated>2009-06-27T09:47:35.548+02:00</updated><title type='text'>Hello world!</title><content type='html'>Hi there, and thanks for stopping by at my blog.&lt;br /&gt;&lt;br /&gt;So, I'll start by introducing myself - I'm a computer science student, who participates in a couple of open source projects. Currently I'm spending most of my open source development time working on &lt;a href="http://launchpad.net/awn"&gt;Awn&lt;/a&gt; (avant-window-navigator), which is a shiny dock/panel for *nix platforms.&lt;br /&gt;&lt;br /&gt;As one of Awn's core developers, I noticed that we don't have many tutorials on how to write Awn applets and such, and people usually have to turn to existing code. This might not always be the best source of tips, so I'll try to fill in the gap... There are also many interesting ideas flowing in the Awn-land, so I'll try to share some of them from time to time. Other than that... well who knows what will come to mind and what I'll have desperate need to share with the world. :)&lt;br /&gt;&lt;br /&gt;And that's about it for the start, expect a real Awn-related tutorial soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5662148629346975559-3652043441207370526?l=mhr3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mhr3.blogspot.com/feeds/3652043441207370526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mhr3.blogspot.com/2009/06/hello-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/3652043441207370526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5662148629346975559/posts/default/3652043441207370526'/><link rel='alternate' type='text/html' href='http://mhr3.blogspot.com/2009/06/hello-world.html' title='Hello world!'/><author><name>mhr3</name><uri>http://www.blogger.com/profile/05059602092762087621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
