Feeds:
Posts
Comments

Annot8

Have you ever felt frustrated trying to describe a problem you see on your screen over IRC? Or ever needed to quickly highlight a part of a screenshot to attach to a bug report? I have… These last weeks I have been hacking on and off on a little tool to help with this. It’s called Annot8 and make it easy to load an image, take a screenshot (not yet), add a few text annotations and share it.

Annotating Dolphin main window

Annotating Dolphin main window

Here is a screenshot… still very basic so far, but as you can see it can add text bubbles and lines. Of particular interest is the “Drag Me” rounded rectangle in the toolbar: drag this rectangle to the wonderful Pastebin applet to upload your annotated image! Ideally I would like to just have to press a key to invoke Annot8 with a screenshot of the current window, add a few annotations and drag the image to the Pastebin applet. I can’t think of anything simpler.

I just uploaded the source to github. If you want to give it a try, you can grab it with:

git clone git://github.com/agateau/annot8.git

Oh and by the way:
I am going to Gran Canaria Desktop Summit
But note that I fly back in the early morning of the 9th, so if you want to talk with me about Gwenview, notifications, or anything else, be sure to catch me before I leave.

Except for some (now considered) minor issue, All-hands and UDS Karmic were both amazing!

I came back exhausted, but I feel like I really know the company much better now. I am also very happy with the progress we made concerning the cooperation between Canonical Desktop Experience Team and the Kubuntu community. More on this soon hopefully…

Social events were great as well… my favorite moment is probably sebas, rgreening and me performing an interpretation of Barbie Girl at the karaoke… hopefully this was not recorded (I do not dare visiting youtube anymore)

I hacked a bit on some cool stuff too… First, I experimented with Solid to create a picture importer for Gwenview. You can find a proof of concept of this on github.

It’s very simple: it asks you for an event name, and then proceed to import all pictures to ~/photos/<year>/<event>/, renaming them according to the exif shoot date. When done it asks you whether you want to remove the pictures from the device. The final version will probably also give you the choice between importing all pictures or only a selection. This will be useful when you have pictures from multiple events.

It’s written with PyKDE right now, but I will probably have to rewrite it in C++ before integrating it in KDE.

I also hacked on another tool, but I’ll blog about this later…

(Sorry this is a rant)

I am in an amazing hotel 40 km near Barcelona right now. I arrived on tuesday evening to attend “All Hands”, a Canonical event just before UDS Karmic. The weather is really nice, the tracks are challenging and stimulating, and I get to meet coworkers coming from 26 different countries.

So why I am pissed off? Because apparently, stupid Air France/Roissy Charles de Gaulle employees were not clever enough to put my luggage in my plane. They announced it would be in Barcelona at 12:30 on Wednesday, then delivered to the hotel in the afternoon, but this turned out to be too complicated for them and my luggage did not arrive. It was then scheduled to arrive in the evening, then maybe by night. At 2am I got to bed, tired of waiting for it. This morning it was still not there. Apparently it arrived in Barcelona at midnight, and they still need to bring it to the hotel. Right now it’s 11:30, it’s still not there and I feel more frustrated than ever.
In fact, it would have been more efficient for me to rent a car, drive to Paris, grab my luggage and then drive back here.

I wear contact lenses and my eye drops are in my luggage… if I didn’t took the precaution of bringing a pair of glasses with me in the cabin, I would be essentially blind right now. Since the hotel is quite isolated, it takes quite long to get to town and buy essential stuff like toothpaste and toothbrush, underwear and clothes… and of course since they keep promising me it should arrive soon, I have not taken the time to go shopping yet. If it was not for Ken Wimer, I would be without fresh socks and tshirt at the moment. Thanks Ken!

So, lesson I learnt from this fiasco: try to pack as much as possible in the cabin. In particular:

  • Minimalist toilet bag
  • Some underwear to live one day or two
  • Daily doses of contact lens eyedrops
  • Anything else?

And I probably need to study this site: onebag.com

Update: Got my luggage at lunch time! Hurrah!

One of the most requested features for Gwenview 2 is bringing back the folder view. As I stated earlier, I worked on this feature for Gwenview 2.3.

It’s done now, I hesitated quite a bit on the way to integrate this view in the application, but I think it’s now ready to be presented.

I decided to split the sidebar in three tabs: “Folders”, “Information”, “Operations”. Doing it this way gives more space for information and operations. This means less scrolling to reach operations on a small screen, more space to show image information and the ability to enter Nepomuk description in a multi-line widget, rather than the single-line version from Gwenview 2.2.

Sidebar settings (which tab is current, whether the sidebar visible) depend on the mode: By default the sidebar is always visible. In browse mode the default tab is “Folder”, while in view mode it is “Information”. This is nice because the casual user gets access to decent navigation in browse mode and more information when viewing his images, while the power user is free to use whatever combination of sidebars configuration he prefers. Since the tabs are at the bottom of the sidebar, I believe they are less likely to be noticed by the casual user, so it shouldn’t be too surprising to have them “magically” switch when changing modes.

Here are screenshots of the sidebar, showing the different tabs:

Sidebar - Folders tab Sidebar - Information tab Sidebar - Operations tab

Apart from the fact that Clara loves Mario Kart :) , you may have noticed the folder view shows quite a few root items: it uses your “Places” list as root items, so you can easily start browsing from your prefered folders.

You may also have noticed the little arrow on the top of the sidebar splitter. I was never happy about the “Show/Hide SideBar” toolbar button because I felt it was wasting space. The common alternative to this button is to add a close button on the sidebar, but then it is difficult to find out how to bring the sidebar back. This arrow, which I call the “Splitter Collapser”, is an attempt to solve this problem. When clicked it collapses the sidebar and then looks like this:

Collapsed sidebar

Since it is still here, it is easy to bring back the sidebar by clicking it again.

I choose a landscape picture and reduced the window on purpose to show the collapser can overlap the image. I hope you won’t find this too annoying. Rest assured it is not shown when you go fullscreen.

Update: The collapser now fades away when the mouse cursor moves out of the sidebar. Hope you like it!

Following a quite heated discussion on #kde-devel about minimum versions of libraries required to build KDE trunk, I decided to describe how I install up-to-date libraries without messing with my distribution packages.

Installing a library by hand can usually be done in three places:

  1. Install in /usr: this is a sure way to annoy the packaging system of your distribution…
  2. Install in /usr/local: this is the traditional way to install libraries by hand, but it is a bit difficult to uninstall things because files are scattered in the traditional lib, share, bin… folders.
  3. Install in /opt/library_name: this makes libraries easy to install and uninstall, but it needs a bit more work to make the library available to the rest of the system.

I personally like to use option #3. Installing a library this way requires specifying the prefix at configuration time. For libraries using autotools, this is done with ./configure --prefix=/opt/library_name. For libraries using CMake, use cmake -DCMAKE_INSTALL_PREFIX=/opt/library_name.

As I said, when you are done, you need to make the library available to the system. To do so, I use a simple shell script like this one:

pkgs="xine poppler qca exiv2"

for pkg in $pkgs ; do
    prefix=/opt/$pkg
    export PKG_CONFIG_PATH=$prefix/lib/pkgconfig:$PKG_CONFIG_PATH
    export CMAKE_PREFIX_PATH=$prefix:$CMAKE_PREFIX_PATH
    export PATH=$prefix/bin:$PATH
    export LD_LIBRARY_PATH=$prefix/lib:$LD_LIBRARY_PATH
done

Replace the contente of the $pkgs variable with your package list and put this in a file sourced by your environment at startup. This can be your shell profile file or a file in the $HOME/.kde/env/ dir.

This script takes care of $PKG_CONFIG_PATH and $CMAKE_PREFIX_PATH, which should cover most library detection systems. Adding $prefix/bin to $PATH can also be useful if the library provide binaries. Adding libraries to $LD_LIBRARY_PATH is necessary to start programs using these libraries.

The nice thing about this setup is that it’s easy to enable/disable libraries. For example, after a distribution update you may find that you no longer need a hand-made version of a library: just remove its dir and its name from the shell script and you are done.

It is also possible to keep multiple versions of libraries installed on the same machine. You can then switch between them by adjusting the library name in the shell script or using symlinks.

Finally, if you replace /opt with say $HOME/opt, then you can easily install additional libraries without administrator privileges.

I hope this can help you to track KDE svn or other projects without too much pain.

History

It’s been a long time since I last posted news about Gwenview development. I am going to resume posting about latest changes. Let’s begin with history.

In Gwenview 2.2, history was a list which appeared on the right of the start page:

Start page for Gwenview 2.2

As you can see this could result in a lot of information crammed into the page. For Gwenview 2.3, I decided to introduce tabs on the start page, keeping places and tags in the first tab, and moving history to a separate tab:

"Places" tab of Gwenview 2.3 start page "History" tab of Gwenview 2.3 start page

As you can see, history also gained a new feature: the “url bag” (suggestions for a better name are welcome). Whenever Gwenview is started with a web url as a parameter, it keeps this url in the url bag. This is quite handy when used together with a chat program: let’s say your contact sends you an url of a photo, screenshot, mock-up, whatever. Once you click on it, Gwenview is started to show you this image. If later you want to get back to it, you can easily find the image address in the url bag. It’s much faster than browsing the history of your chat program.
Admittedly, it’s a quite geeky feature, hopefully it won’t disturb beginners as it’s not prominently visible.

You may also have noticed privacy has been taken into account: the history tab screenshot shows you can now right click on an history entry to remove it, or wipe the history clean. I will probably add configuration options to permanently disable history, as this seems to be a concern for some users.

From the 31th of march to the 2nd of april, the yearly Solutions Linux trade show held in Paris. Of course, KDE was here.

Day 1

Sébastien Renard (KDE French translation coordinator) and I installed the KDE booth. It was a bit minimalist: one A2-sized KDE logo, two chairs, one table and two laptops, but at least we had a booth this year (last year we failed to book a booth in time and had to ask a friend booth for some area to hold our laptops…) We even had 150 Kubuntu 8.10 CDs to give (Sorry Markey, maybe I got all of them?).

Sébastien is a power user of the Kontact suite, so it is always impressive when he demonstrates Korganizer because he can show visitors an agenda packed with several years of real meetings. He can also demonstrate a KMail setup with 6 different mailboxes, some of them using ssh tunnels to fetch their content, all graphically configured from within KMail.

This year though, his Kontact presentation was a bit different when it comes to TODO lists. He often ended up demonstrating… Yokadi :) . Not surprising, given that Sébastien is Yokadi most active contributor these days (I need to catch up, otherwise he will soon have more commits than me :) ). One of his tasks for the show was in fact “Convert as much people as possible to Yokadi”!

In the afternoon we received reinforcements as Gaël Beaudoin joined us to manage the KDE booth, helping us handling the crowd of curious users, charming them with KWin goodness and other 4.2 niceties.

On the bad side, I was supposed to spend half of my time on the Canonical booth, but completely failed at it and spent all day on the KDE booth…

Day 2

Kubuntu stickers were delivered for the KDE booth, yay for goodies!

Equiped with my brand new Canonical shirt, I managed to work on both booths this day (and the day after), spending 2 hours on each one. It was great to get to know some of my new colleagues. I had a nice chat with one of the sale managers, and discovered he is actually a KDE user. It seems KDE is popular among Canonical employees too!

I also had the occasion to try various netbooks running different versions of UNR, Ubuntu Netbook Remix. There is quite a few interesting things in it, I especially like how the title bar of maximized windows moves inside the GNOME menu, leaving more vertical space available for the application.

An interesting thing I realized while demonstrating UNR is that people are more opened to new user experiences on a netbook because they expect it to behave differently than a regular laptop or desktop. This means netbooks are really a platform where Plasma could be used to its full potential and provide attractive and innovative interfaces.

In the afternoon I joined the crowd following the crazy GCU guys (fr) demonstrating against HADOPI law (fr). Lots of fun!

Videos: http://ghantoos.org/misctuff/boucherie-2009/

Day 3

Everybody felt a bit tired on day three, except visitors :)

While chatting a bit with C., Canonical booth responsible, our conversation went on GCU and I started to explain the subtleties of HADOPI as well as narrate the most memorable GCU actions from last years. When I told one year they visited all professional booths, hit alt-tab on exposed machines, and boo-ed the booth if they were running Windows, C. was surprised and asked me “But it’s an open source trade-show, how comes they were running Windows?”. This is coming from someone who is not from a technical service. If only everyone on the show had the same way of thinking…

Since our GNOME friends took advantage of a few minutes where we left the KDE booth empty to cover our table with GNOME stickers, we had to strike back today. Sebastien thus proceeded to stick Kubuntu stickers at various places of the booth including under the mouse… Yes, we are supposed to be grown-ups :) . In the end we had fun trolling discussing both project release announcements, comparing GNOME Shell with Plasma and all kind of constructive dialogs you can expect from tired geeks…

ILightPainter

Two friends of mine recently started to experiment with iPhone development, and just published their first application: ILightPainter. It’s a light painting application, which makes it possible to create beautiful pictures such as this one:

ILightPainter example

This is not computer generated imagery: it was produced by moving an iPhone running ILightPainter in front of a standing still digital camera with low shutter speed. Be sure to check the Wikipedia page to learn more about light painting, then if you are an iPhone/iPod owner, why not  give ILightPainter a try!

Exciting change!

My professional career is about to change one more time… In two weeks I leave Open Wide for Canonical, joining the Desktop Experience team as a KDE developer.

I spent some good time in the OS4I business unit of Open Wide. In the jungle of consulting companies, Open Wide is a human-sized company and a nice place to work (especially if you like Japanese food!)

Nevertheless, I just could not ignore the opportunity of getting paid to work on what has become an important part of my life for quite some time now: KDE. And now that I live one hour from Paris, the possibility of working from home made the position even more enticing.

So, that’s it, yet another job change. I am looking forward for the new challenges! (hmm… who said “Notifications”?)

I am preparing for an upcoming party, where I will be in charge of the music. I managed to borrow a amplifier and a set of loudspeakers, and decided I would mix the music with my laptop. While I would not call me a DJ, I played with DJ mixers in the past for other parties, so I am familiar with the process.

I plan to use Mixxx to play music, but I need to buy the latest missing piece: an usb soundcard. It will be used to output the sound to the amplifier, while my headphones will be plugged to the internal soundcard for preview purposes. This means I do not need fancy 5:1 output, just a reliable, Linux friendly, usb soundcard.

Dear lazyweb, can you recommend models which would suit my needs?

Older Posts »