Phonon backends for all

Today Trolltech announced the development of Phonon backends for Mac (using QuickTime), Windows (using Direct Show 9) and Unix/Linux (using GStreamer 0.10). This means you can play audio on every platform supported by Qt using the same fancy-shmancy API we are used to (how about QTopia?). They also announced that Phonon will be part of Qt 4.4.

I am probably missing something. Does it mean that Qt4.4 will have it’s own browser engine, it’s own JavaScript engine (well … it will have 2…), a sound “engine”, OpenGL support… and all this cross platform with a single API? … and all is GPL? and you can write non GPL applications with it…? I think I soiled myself… that’s super cool for us geekz!

This does raise some questions for KDE 4.1:

1) Phonon will have to move from KDElibs lower to Qt4.4. I don’t think I have ever seen this kind of movement in KDE (GNome folks are doing this all the time). Technically, does it mean that Phonon will be removed from KDE/trunk next month or so?

2) What will happen with KHTML? I assume that Konqueror 4.1 will be using WebKit from Qt4.4 (real life knocked our doors, and WebKit/Qt4 is much more maintained then KHTML4.0). Will KHTML 4.0 be removed from KDE/trunk next month or so? Or will it be marked deprecated in 4.1 to be removed in 4.2? Do we really need to maintain KHTML for all the 4.X life…?

Still, this is a very exciting era to be a geek…

Share Button

QDevelop 0.25 is out

Three months since 0.24 has been released, it’ been decided that what we have now in SVN/trunk will be called 0.25. Many updates have been introduced to the code, and I personally am very pleased. This is the mandatory screen shot:

qdevelop 0.25

Here is a list of some the things that I have done in the last version (the changelog is much bigger, this is just the stuff I did… which are, obviously, my favorite changes between 0.24 and 0.25):

support is finished
. Under Windows you get this funky application with a win32 icon and no console running, a proper native application. Linux works as usual, as this is the way I build my versions. God knows what happens on Mac.

Added white space display to the editors. When you open a file, you will see small dots on spaces, and this funky icon in tabs. I must admit I “borrowed” the idea from kate4. (1)

Merged two nested QTabWidgets. In 0.24 we had 2 QTabWidgets nested in each other for the project and debug outputs, I moved the tab pages to the outer QTabWidet, and changed the decoration to trigangular. That saved us a few pixels. (yay!)

Minor GUI optimizations. Merged two toolbars, once more to save space. All menus have shortcuts.

Possible to remove the editors toobars. Each text editor has this banner, which lists the classes and methods list in this file. I always hated that, so now you have a small checkbox which removes this so you can have more real-estate – more editing area.

English corrections. The original code was written in french, and then translated to English (using Qt4 i18n classes). At some point JL translated it back to English, and and since then we are fixing the UI.

Panic “this GUI scares me, give’me a text editor” button. IDEs are fun, since they have all this funky functionality. Which always leads to the “omg, what the are all those dock windows” syndrome. To remedy this, a new feature (happily stolen from HaiQ) will hide all your dock windows and show you a plain text editor. Press “control+e” to enable it, and once more to disable it, and show all your previous dock-windows.(2)

The source can be downloaded as usual from

(1) A tip for the kate developers: when introduced this feature to the SVN, some user complained that the marks are not visible on some LCDs, and someone commited a fix, and made the colors more dark. In my original commit, I used colors darker then the ones used in kate, so you might need to make them much draker.
(2) My favorite button combination in QDevelop. I wish kdevelop had such magic button as well.

Share Button

Why people sux

I still remember those days when I would open GEdit and I saw C/C++ code right aligned. Then the gtk/pango guys decided to auto detect the text direction, and GtkSourceView was fixed to detect the direction of the text, and de-facto making GtkSourceView applications usable for Hebrew/Arabic/Farsi users.

Dear Alexander Larsson (don’t take it personally, your name just came up, really!), now we see 2 huge mess ups in what you describe:

1) The toolbars provided by GTK are so unusable, that MonoDevelop needed to write their own.

2) The MonoDevelop guys did not push those new toolbars down to GTK (something which is hapening in GNome for the last years).

Even tough, this was not the purpose of this “hate blog”. I am so sad you all missed the exact point: the loading of PO files. To sum things up, when an application loads, it loads (at least) 2 PO files: and (or in KDE and for example). Those 2 are merged to create the translation database for the running application.

What happens when is not available? The translation DB is still created, with 15 relevant strings to the application, causing the application to look weird, and have exactly 3 strings in Hebrew, and the rest in English. This looks bad in non Latin languages (Chinese, Greek etc), and even worst on the example I showed before.

The solution is pretty simple, when the file is not loaded, don’t load the language’s file, but revert to ‘C’. This is how KDE works, and it give the translators more freedom: this application has bad translation, instead of shiping with this crappy 30% translated GUI, lets remove the PO from this release, and let the user have it in English, we will get it to 90% next time, and 100% for the one after.

And the reason for the –reverse switch, is exactly because of self made widgets and graphics. Also, this is called education. When KDE 3.0.0 got out, this BiDi/RTL subject was so new, that many developers did not even thought of such things. Think about it, 6-10 million potential Hebrew users? 1.1 billion potential Arabic users? not that much, specially since those 2 populations do no contribute to the KDE community. Now that it’s changed (and you gnome falks took all those cool duds like Behdad and Joko) in KDE 4.0.0 most of the job is done for the developers, and they can get about 98% of the problems fixed for free without writing a single line of code. Today I can ask developers to fix it themselves instead of me hacking 2-zillion one liners around KDE.

Yesterday I learned that the toolbar implementation used in KDE is done the right way. It’s deep inside Qt or KDElibs and thus every KDE application inherits it, unlike gnome which has that “class” in some library which not all applications use, and some even forked to a static version inside the application. I remember that the GTK open dialog has also two versions (well… unlike in KDE that has the KDE version and Qt version, but that is another story). I also learned that the second you give developers a place to throw dirt at each other, they will. This is why this post is closed for you.

You people oviously missed something: when people rant, it’s not because “you stink, drop dead”. Generally it’s because: “dud, please fix it, it annoys me”.

Share Button

Running KDE4 over SSH

The techbase wiki, explains how to compile KDE4, and also instructs you to use SSH to obtain a usable terminal which is X11 aware. But still, you have to type a password, and remember to pass -X, to get X11 forwarded. Lets remove these obstacles.

Removing the password
From your normal user type:
ssh-keygen -t dsa [press enter twise or trice]
scp ~/.ssh/ kde@localhost:

Now ssh normally to the kde4 user, and type (as the kde4 user):
mkdir -p .ssh
cat > .ssh/authorized_keys

Easy acess
Still each time you want to login as KDE4, you have to write this ugly command “ssh kde4@localhost -X“. Lets simplify it: I want to write “ssh kde4“. The trick is simple, put this in your normal account’s ~/.ssh/config (not the kde4 user!):
Host kde4
HostName localhost
User kde4
ForwardX11 yes

From now on, to get a KDE4 shell type “ssh kde4“, now password is required. Wow… life is simpler now…

Share Button