Skip to content
June 22, 2012 / thebengaliheart

GSOC Progress Report

I am working under Ankur India for this GSoC, trying to bring easy localization support for programs which do not use gettext. In essence, this means, for Mozilla applications (like Thunderbird, Seamonkey, Firefox), all android applications, it will be easier to make them available to people who want to use it in some other language than English. Initially, the idea is to write a library that allows us to do this easily by performing queries for finding the localized string for a specific locale and making some simple calls to update the translation of a string. This library will then be integrated into Lokalize. The library needs to be written in a reusable way, so I am writing the library in GLib, so that other translation applications, which use C, like gtranslator, can also make use of it for providing localization support for non .po files. The idea is to make the library support file format plugins, or backends. There will be a backend for Mozilla DTD files, one for Mozilla properties files. Both of these are used by applications like Firefox for localization. There will also be backends for stuff like android app string resources, and apple .string files, but for now, the first two backends are the primary targets.

For integrating into Lokalize, I am probably going to create a Qt wrapper around my library (which is named bong), and then use that wrapper from within Lokalize. I have been able to implement .properties file read and write in my library, along with localization notes. Right now, I am working on the Mozilla DTD file format backend. As a side experiment, I have written a version of the library in C++ using Qt from scratch. It is an alternative port of the library in Qt, with the same functionality, just written in Qt. It already has both properties and DTD file format support. Also, I am working on  creating a backend in Lokalize that is able to use our library.
I am really looking forward to completion of my project, since the localization scenario in the free software community is going to vastly improve, with all kinds of applications which do not use gettext (among them, the thousands of android applications that are written every week) becoming easily localizable through Lokalize, the KDE translation tool. And along with the excellent features of Lokalize, it will be a much better and easier experience for translators.
Looking forward to your comments, suggestions, and encouraging words.
January 8, 2012 / thebengaliheart

KDE 4.8 Release Party in Durgapur, India

A very long time since my last blog post. This is to inform everyone that NIT Durgapur GLUG is organizing its FOSS festival, Mukti ’12 from February 3 to 5. The fest will be a good learning experience for those starting out with free software, and introduce them to a lot of areas in which they can make a difference. There are beginner as well as intermediate workshops on getting started with KDE development, Android development, internationalization and localization, and documentation. We have organized an overnight hackfest where we will produce lots of code and fix many bugs while having loads of fun and frolic.

And here comes the best part – we will celebrate the KDE 4.8 Release Party during Mukti. So people who will be in and around West Bengal are invited to come to the party and make it a wonderful experience with food, fun, jokes and code.
July 18, 2011 / thebengaliheart

Kpaste – a friend for the lazy

I often work on vi, and also do a lot of work through the konsole. At such times, selecting the entire code, copying it, and pasting it on seems like … uhm… too much work. The plasma pastebin applet offers a nice alternative, it has support for multiple backends(even image uploads). But even then, i have to select the text and drag-drop it on the applet. Most often, its a trouble to do this with text from konsole. Also, its too much work to use a mouse (I know there are people who are as lazy as me, and find typing letters at the keyboard easier than playing with the mouse 🙂 ).

Without further ado, I present KPaste, a simple command-line tool to paste to It supports both GET and POST, clipboard input and output, automatic retries, and a little syntax detection (if you are pasting files).
Use it like
$ git diff | kpaste
this pipes the output of git diff to kpaste
$ kpaste abc.cpp -x
this pastes abc.cpp (while correctly detecting syntax from filename), and prompts for a password for the paste(-x does it).
$ kpaste -i -o
this will paste your clipboard, and give the url back to your clipboard.

you may paste text directly like this …

$ kpaste -l python

I just started with it, so I am sure it has many bugs. Would be great if everyone tests it out and helps with the code. I also plan support for multiple paste backends, but at the moment, is hardcoded into it. I also need translations and documentation (a man page), so anyone offering to help is most welcome. Not to forget, a large part of the functionality and code is influenced by the fpaste tool by FedoraUnity used for posting to
Thanks in advance for help with coding, testing, documentation and translations, or just rendering it useful by assimilating it as a tool for your work routine. Just let me know if it made your day 🙂

Edit: As pointed out by estan, I forgot to mention where the code is 😉
July 6, 2011 / thebengaliheart

A post to test my hackergotchi

I created a hackergotchi for myself in Krita yesterday using the particle brush, and I’m posting this to see how it looks on the planet 😉

June 13, 2011 / thebengaliheart

GSOC Rekonq – A Screenshot

As some of you may know, I am working to implement tab grouping in Rekonq using a Panorama view. After so many days of not blogging, I thought I should post an update. I have a screenshot to show. Not very attractive though, looks very very blank, but its still something. At this stage, Rekonq just shows the sessions and thumbnails of the tab – including the deactivated ones. I haven’t been able to find a nice way to show the deactivated sessions – i know it looks clumsy 🙂 Right now I am working on beautifying the UI, using QGraphicsView for it. Any cool UI ideas are welcome. Here’s the screenshot

And here’s how the session file for the same is stored internally

<!DOCTYPE sessionFile>
  <session title="" active="true">
    <tab title="Maths 'N' Tech Club | NIT Durgapur" url="http://localhost/mntc/"/>
    <tab title="Fedora Project Homepage" url=""/>
    <tab title="Downloads" current="true" url="about:downloads"/>
    <tab title="Test Page for the Apache HTTP Server on Fedora" url="http://localhost/"/>
  <session title="" current="true">
    <tab title="Twitter / Home" url=""/>
    <tab title="Bookmarks" current="true" url="about:bookmarks"/>
  <session title="" active="true">
    <tab title="Planet KDE" current="true" url=""/>

Do send in your awesome ideas/criticism that might help me improve 🙂

June 2, 2011 / thebengaliheart

GSOC – Tab grouping in Rekonq

I’m writing this to blog about my progress, though there is nothing much spectacular to blog about. One great thing is, a first version of the backend code for session management is in place now. Sadly, there is no UI yet to access it. Now I am working on the UI written using QGraphicsView. Hope I’ll be able to come out with something usable in a week. Also, I and my mentor Pierre Rossi were discussing about storing the session data inside Nepomuk instead of storing them locally. We decided to mark this as a TODO for after the initial commit.

Bye Planet folks! Hope to blog again soon.

May 14, 2011 / thebengaliheart

Live and Dead sessions

I have come up with this model as the solution to the problem of persistent session storage and tab grouping –

Sessions in Rekonq will be of two types – dead sessions and live sessions. Sessions of both kinds will be showed in a unified panorama-view

a sketch of the panorama view

Let me describe each kind of session in detail –

  1. Dead sessions – These are displayed as grayed-out in the panorama view. Basically, the dead session views are read-only, so that one can have a look at the tabs in it. These sessions are not yet loaded. When we click on the load button, the session gets loaded in Rekonq and opens up in a new window. Now the dead session becomes a live session.
  2. Live sessions – These sessions correspond to open windows. When a new window opens, a live session starts. Dead sessions can be loaded to live sessions, whilst creating a window and opening all the tabs of that session in it. Tabs can be closed or drag-dropped in the panorama view between live sessions. Since live sessions can be mapped to windows, any changes in the window affects the live session, and vice-versa. When a window is closed, its live session becomes a dead session. This can also be done through a panorama view. We can also add new live sessions from the panorama view. The sessions that were live when Rekonq was closed are loaded as live sessions automatically when Rekonq starts the next time.

This hybrid system of managing sessions has quite a few advantages over traditional session management like in Kate or Konqueror –

  1. Tab grouping is made easy. When the tab clutter increases, one can go to the panorama view, create a new session, and drag-drop tabs into it.
  2. The division of tabs into activities like ‘work’, ‘study’, ‘games’ can take place using sessions, while loading only the ones relevant at a time. Thus memory and bandwidth is saved by not needing to have all tabs open at once.