generic, factual
  • ralesk


I bet the readers of this are wondering what’s going on.

I’m sorry about the total lack of updates and releases… I’ve been totally swamped with work and school, more than ever before, and I didn’t have any kind of free time and willpower to work on the client.  I might have time and energy now, but I’m not all that sure.  I do intend to continue and fix the things that annoy us all (please do report bugs and wishes here), but I just couldn’t get around to it yet.  There’s a few things in the latest 0.2 snapshot that I think are actually terrible (for example the sidebar friendlist, I thought it was a nice idea, now I see it’s just stupid).  And I should really focus on Qt4…

So yeah… sorry about this, I’ll try harder.

kde, ljklient, python, qt
  • ralesk

0.2.0 Preview Release 1

Today marks another milestone in the development of ljKlient — as the first preview of the 0.2 series is released.  Please go to the project website to download the package.

New features include:

  • Macros — press a key, and have ljKlient type in your favourite HTML code without hassle!  Even better, if you define it right (more on that later), it’ll even include the selected text wherever you want, and position the cursor similarly too.
  • A completely reworked music data formatting system (which, admittedly is still very much in the works) — if you now query for music, it will drop the parts which weren’t available.  So if there’s no information about the Album in the currently played track, no worries: you’ll only have one “—” there, and likely won’t have to edit the input.
  • A sidebar with a quickly accessible Friendlist, to accommodate the Drag&Drop feature of said list.  It still needs some cleanup and I’ll have to make it refresh if the big list (which (and only which) will be used — eventually — for friend adding, editing and removal) happens to get updated.  In short, it works and looks fine.  If you really can’t stand it, start ljklient with ‘--nosidebar’ for now.
  • Apropos of ‘--nosidebar’, which is a quite confusing name for the option, as it’s about the sidebar friendlist, we now can edit past events — the history calendar and list (latter to display the items on a certain day) are on the second tab of the sidebar.  Past event editing appears to work fine, although it’s something I rarely do, therefore it wasn’t as rigorously tested as other things, so please be cautious.  Needless to say, your pastevents get drafted too, so there’s plenty opportunity of getting them back somehow.  You can’t delete events yet.
  • Really really serious reworking of ljKlient’s internals, the code is now much cleaner, much more Qt4-ish, and most importantly, we don’t crash on exit.  That’s a good thing, right?
  • Apropos of exit: we have a systray icon now.  Doubleclick it to show or hide the editor or the login window (whichever is appropriate at the time — only one of them can be seen, ever, afterall), right click it to get a menu to quit the application.  Clicking X on the editor or the login window only hides the window, Minimize minimises it to task bar.  This behaviour is in accordance with the way many other applications work, including Kopete, KMail, X-Lite, Skype, and so on.
  • On past events.  Please make sure you Refresh after changing the journal with the combobox…  It’s more than likely that you get an error from LJ if you don’t do that and submit a post, but if you are an administrator of a community you MAY overwrite something with your post if they happen to share the same ID.  Please make sure you don’t fiddle with the journal thingy while you have an entry loaded (will disable it later when in Past Edit mode — to post things to a dozen journals it should be sufficient to load the Last Sent draft (see File menu), and change the journal there.)
  • We also seem to have a config file now.  It’s in an INI-like format, which is extremely cool because it’s ridiculously readable for humans — but unfortunately Python loves to rearrange items in there, so don’t rely on finding something at the same line where you left it earlier.  This also means I can’t quite provide an example one full of helpful comments, as those will get clobbered too.
  • And last but not least, we have a Qt4 interface now too, so people can get PyQt4 and enjoy ljKlient that way too — it is a work in progress though, and doesn’t have most of the KDE3 frontend’s features.

As mentioned, we have a config file.  It is located in ~/.ljKlient/ljKlient.conf.  This is where you tell ljKlient about the macros, for example.

INI style files are really simple.  They’re divided into sections, which have options in them.  Kinda like this:

[Section 1]
option1 = value1
option2 = value2

[Section 2]
option1 = value3
option3 = value4

Think of sections like folders, and options like files in folders.  Files which have a single value in them, be it a string or a number.

The macro format used by ljKlient is also very simple.  First of all, we work in two sections: Macros, and Macro shortcuts.  Every option is a number in these sections, and their values is the macro, or the macro shortcut.  I’ll give you an example

1 = <p>$^</p>
2 = <strong>$^</strong>
3 = <em>$^</em>
4 = <lj-cut text="^">$</lj-cut>
5 = $&#xA0;^
6 = <a href="^">$</a>

[Macro shortcuts]
1 = Ctrl+P
2 = Ctrl+B
3 = Ctrl+I
4 = Ctrl+K
5 = Ctrl+Space
6 = Ctrl+M

You’ll notice that the numbers are the same in the two sections.  This means that option “3” is the macro “<em>$^</em>”, with the shortcut “Ctrl+I” assigned to it.  Simple, huh?

The macros in the example seem to be HTML code bits — just what are the $ and ^ things then?  Well, the $ character looks like an S (I’ll never understand what it has to do with the name Dollar, maybe I should wiki it up), which means Selection.  The $ thing will simply get replaced by whatever text you had selected before activating the macro.  I don’t know what it does on multiple $s, feel free to figure it out yourself.

The ^ is sometimes also called a “caret” — and this is where your cursor will be positioned after the macro has run.  This really needs to be in the code only once.  I think it will position to the first ^ and leave the rest alone, but I’m not particularly sure right now (I wrote the macro code in August, and haven’t touched it ever since, because it seems to just work without any problems at all).

All clear?  Good.  Now get downloading :)

PS: to try the Qt4 GUI, create a GUI section with the guitype = Qt4 option-value pair defined.

  • Current Mood
  • Tags
kde, ljklient, python, qt
  • ralesk


The newest version of ljKlient is finally out!

With a friendlist changes dialog (which sports clickable icons and links to those hyperactive friends’ journals and profiles — just like here on LJ itself), a new German translation (thanks to schnee), updated Russian, Swedish and Hungarian translations, a brand new icon in the K menu if you use the debian installer (otherwise just copy the .desktop file to /usr/share/applications), and the spellchecker now being on by default!

Go grab it while it’s hot.

  • Current Mood
generic, factual
  • ralesk


This is a test of ljKlient on FreeBSD.  It appears to run quite well, actually :3

The only problem is that on FreeBSD the python binary is located under /usr/local/bin/.  You need to install the py24-kde package with pkg_add -r py24-kde to add PyKDE to your FreeBSD R6.2 system, or act accordingly if you prefer to use the ports tree instead (in which case you should already know how to find PyKDE in it).

kde, ljklient, python, qt
  • ralesk


New version out, for screenshots check our page on KDE-Apps!

Version 0.1.131 (2007-04-07)
  * Changed tag list to implement Balinares'
    Now it makes equal-sized submenus, and
    displays dictionary-like headers in the main
    menu (first minimum 3 letters)
  + Relation arrows similar to Semagic.  Sortable!
  + Friendlist summary!
  + Swedish translation by Arimah
  + French translation by Sundance
  + Indonesian translation by Pyurio
  + Dutch translation by myself
kde, ljklient, python, qt
  • ralesk

ljKlient 0.1.117

The newest beast is out, get it from the usual place :)


  • Audacious support by i0ngunn3r.
  • Fixed preview window not updating.
  • Fixed sort order of usericons and tags, with some rudimentary collation support (bumped into an issue though, which is a bit of a killjoy in the case of the taglist, but it does work).
kde, ljklient, python, qt
  • ralesk

0.1.107: Friendlist, Drag and Drop

A new ljKlient is out, mainly because I couldn’t be arsed to add more windows and protocol support yet (as would be needed for adding and deleting friends), so instead I fixed minor bugs and made the list look a bit nicer, and added a revolutionary feature to the friend list: you can drag a friend and drop them anywhere in the editor field, and you’ll get the <lj user="username"> thing inserted right there.

As always, you can get the newest from the project download page at

generic, factual
  • ralesk

0.1.100 (internal version)

Internal version, a word which here means I don’t want to release it but you can get it from SVN anytime.

New stuff: Kaffeine support, a bit of clean-up in the event editor, and a freshly baked friendlist viewer!

I’ll try to get FL saving and loading to work, show the last update time and the difference between the two lists — and also adding and removing friends, before a real release.