Why I’m Constantly Dazzled By KDE: Klipper

I can’t believe this. Every time I think I know a lot about my favorite Desktop Environment it gets better. When you run Klipper, the KDE clipboard tool, you can specify an option – accessible from its system tray icon, called “Synchronize Clipboard Contents With Selection”, and what this wonderful option does it make it so that wherever you are in KDE, when you select some text, it automatically copies over to the clipboard. That’s it. One option is all it takes to save countless right-click->Copy operations. I haven’t tried it out with images yet, but I rarely copy images to the clipboard – mostly I just save them and open them.

I highly recommend, even if you think you know KDE like the back of your hand, to explore the options available to you. Chances are you’ll find some astounding things.

Yet Another Linux Blog has a great entry about more of Klipper’s features, including the ability to automatically run certain commands when you select text, based on the contents of that text!


Misconceptions about Kopete

Reader STEV left this comment on my GAIM post:

I don’t think I belong to the dumb users out there. But I found Kopetes user interface is somehow in a mess. Some options aren’t there where I would expect them (Why aren’t sound options in the configuration dialog?). I get the feelin that Kopete devolopers look after new crazy features (which the normal user doesn’t need) rather than to make Kopete stable and work properly. ICQ file transfer works in GAIM 2 Beta decently (but of course, not perfectly, it sometimes crashes) – in Kopete I don’t get it working. ICQ buddy icons aren’t displayed correctly in Kopete (or am I wrong?) – a feature what GAIM has since years. Kopete concentrates on eye-candy-features which the normal user probably doesn’t make use of. I also don’t think that GAIM isn’t that innovative as you mentioned – they participate in Google’s Summer of Code and produce some very innovative plugins for musicians among others. I think GAIM’s strategy to put less important features outside and to make them plugins instead is a quite successful strategy. It makes the download size smaller, which is, of course, effective and makes GAIM available to people who can’t call themselves owner of a super high speed connection. Think about that.

I was going to leave my response as a comment to his, but I think it’s vitally important that certain ideas regarding Kopete be cleared up, so here’s my response:

The default plugins that come with Kopete are as far as removed from aesthetics and eye-candy as you could possibly get. The full list is available on Kopete’s website, but let me run through that list right here:

Auto Replace – allows you to correct frequently misspelled words or save typing certain words using abbreviations. Doesn’t sound like aesthetics, sounds like a very useful functionality.

Connection Status – useful for modem users or others who don’t have a permanent Internet connection. It watches for an active Internet connection and sets your accounts online when it detects you have dialed up. Certainly something you’d need if you didn’t have a superfast internet connection, eh? 🙂

Contact Notes – allows you to note useful bits of information on a metacontact.

On that note, I’m not even sure gaim has metacontact functionality. Please correct me if I’m wrong.

Cryptography – allows you to use GnuPG to encrypt conversations.

History – records conversations using any IM system, and allows you to view them later.

KopeteTex – allows scientists and mathematicians to hold conversations using LaTeX markup.

Motion Auto-away – detects if you are sitting in front of your computer using a webcamera, and have Kopete automatically become Away. I’m pretty sure Gaim doesn’t have support for webcameras at all.

Statistics – uses a database to gather information about your contacts’ activity patterns.

Translator – translates messages between metacontacts using web based translations services.

I’m willing to give you the benefit of the doubt and say that maybe you just didn’t know Kopete did these things, or provided them as default plugins in the initial download. Additionally, your crashing problems with Kopete are an individual case, and we can’t presume to allow your crashes to be applicable to all users of Kopete.

And finally, the latest stable version of gaim, 1.5.0, is available as a source bz2. Its size is 5,830 kB. The latest stable version of kopete, 0.12.1, is available as a source bz2. Its size is 5,066 kB. So your last point regarding download size, I’m afraid, is incorrect.

Talking To Naim’s Creator

I had a small talk with Dan Reed, the author of naim, and he explained away some of the issues I was having with it.

  • Deleting single words: ^W does this. I’m really an idiot for not remembering that.
  • Removing group names from the contact list: Use the command ‘/set autosort 1’.
  • Removing non-aliases from buddy list: Use the command ‘/set nameformat_named = “$user_name_name$user_name_ifwarn”

Nice to know that these options exist. He also talked about the future of naim, the separation of functionality from display, and discussion about moving away from the HTML based chatlogs. Thanks for your time, Dan!

What I Would Do If I Worked On Naim

naim is a wonderful terminal-based AIM client written by Dan Reed. It sports a variety of features, is robust and stable, and fairly configurable. There are, however, things I dislike about it, and here is a rough list of those things.

  • The bottom of the program only displays one line of the message you are sending, making it hard to proofread or correct. Ideally the window would expand as you typed, filling as much space as necessary.
  • Maybe I’m just having this problem in GNU Screen, but I can only delete entire lines of input (with CTRL+U), I can’t simply delete the previous word, which is the most common thing I need to do when typing text.
  • The logs are written in HTML. While I understand how nice this makes them look, it makes them near impossible to sort through in read – in fact, for some reason I can’t grep the logs for any term I’m trying to find, even when I know it exists. An option to only log in plain text would be very nice.
  • There’s no option to remove group names from the contact list. As much as I appreciate the idea of adhering to the normal AIM paradigm, the group names are completely unnecessary, I feel, and simply make the contact list longer than it needs to be. Even if other people rely on group names, an option to not render them would be wonderful.
  • As far as I know – and I have looked through the docs pretty thoroughly – there’s no option to alter the display of contact’s names if you would prefer to have their nicknames show up in front of their screen names – or if you don’t want their screen names to show up at all.
  • I would like to be able to rename my screen name so it doesn’t show up in its entirety in my logs.

I’ve looked through the source code of naim, and while it is very nicely formatted, files with names such as hamster.c, filled with code but no comments, scare me greatly.

Naim is a great program, but it could be a lot better. I think my suggestions would move it in that direction. The ability to customize is what makes any open source program great, and more useful for its users, who will almost always have varying needs.

Dear Firefox developers –

Please make Firefox not slow down scrolling to a molasses-like speed when I try and navigate pages with PNGs, or alpha-PNGs, or whatever the issue is. There’s already bugs in the tracker for these issues, now all someone has to do is find those bugs, and fix them. Don’t set them as WONTFIX, or WORKSFORME, just try and fix them. Even an attempt would be an awfully nice gesture. I know you’re not developing Firefox for your health, and all the work you’ve done is sincerely appreciated. I wish I could help by actually writing code, but I don’t even feel worthy making the attempt at helping you. I know nothing about the level of development you guys are doing. I’d screw it all up.

So just consider this a polite request. I have to use the Web Developer’s extension to disable stylesheets on those pages, and it’s disappointing.

Hugs and Kisses,

– SR

One Task, Three Languages: Ruby vs Python vs Perl

Basic Description

The object of this experiment is a fairly straightforward one. I have a single task that I’d like to accomplish, and I’m going to accomplish it in three languages that I only have cursory knowledge of. By the end of my experiment, I will compare the three languages in terms of relative size of the programs I’ve written, ease of understanding what I wrote, ease of understanding the interfaces I had to work with, and the usefulness of the documentation I find on what I need to know. Because I honestly don’t know any of these languages, I will be literally googling the things I need and looking in the results, and only resorting to more thorough documentation if necessary. The three languages, if you haven’t guessed by now, are Ruby, Python, and Perl, in that order.


The task I have is this: As wonderful as the graphical login managers gdm and kdm are, I have them set up on my system to run through XGL and all of its related modules, and there are times when I don’t want to deal with any of that and instead rely on ‘startx’, the old-fashioned way of launching the X.org server. ‘startx’ relies on a file, .xinitrc, to know what window manager, if any, is being started after the X server initializes. It’s a plain old shell script, essentially, and it will run varying commands based on what window manager one wants to start. The most common examples are KDE ( exec startkde ), fluxbox ( exec startfluxbox ), Gnome ( exec gnome-session ), and Xfce ( exec xfce4-session ). If one wants to change what command(s) are started when X.org initializes, one has to manually comment out or remove what they don’t want and add what they do to this file. I’d like it to be done automagically. The script – titled txtdm – will allow for the following features:

  1. Add new choices to the .xinitrc. They will be categorized by a user-chosen name.
  2. Add executable entries to a choice. Sometimes a user will want to start more than one thing. txtdm must have the ability to do this.
  3. Remove executable entries from a choice.
  4. Remove choices from the .xinitrc.
  5. List available choices.
  6. Select a choice to activate. The rest of the choices will be commented out, so they can be chosen when the program is run again.

txtdm will be what I call actively robust – that is, if a user enters incorrect input as a command line parameter, the program will halt and display the actual options. If a user enters incorrect input while the program is running, the program will display a list of what they can actually do. There’s a chance that my programs in one language or another won’t be able to tell if the commands I’m running are genuine, but I’m doing this experiment for more than the actual gain in functionality my program will provide in the end.

Required Functionality: In one form or another, each program must be able to:

  • Read data from a file
  • Write data to a file
  • Receive user input
  • Display formatted text

These requirements are very standard, I believe, and will provide a useful cross-section of usability for each programming language.

If you do comment, please try not to provide me a solution – I don’t want to cheat!

Gentoo is the best distribution and anyone who says different is a liar.


Seriously, can we talk about our experiences with different distros? What we like, what we don’t like?

I originally started way back with Red Hat 4.2, when fvwm2 was the reigning window manager, people still played Xevil, and things were as simple as they possibly could be. It was a ridiculous amount of work getting anything graphical to work and 3D accelerators were still a long way ahead. From that I moved to Red Hat 5.2, but then SuSE caught my eye and I became enthralled with that.

I always made the joke that SuSE was the most efficient operating system ever made by the most efficient country ever, But SuSE really floored me when KDE was just starting to find its legs. I used it faithfully for years until I learned that no one did things like SuSE and it was a pain just to find compatible RPMs.

And then I found the church of Gentoo. Gentoo was everything I wanted in a distribution. Fast, effective, and almost infinitely customizable. Compiling from source wasn’t a big deal on dorm bandwidth, and most importantly, all the cutting edge stuff was just another day at the office for the Gentoo maintainers, to mix metaphors.

And now I couldn’t be happier. Gentoo does everything I want, and dutifully. I used to think Ubuntu was a designer distro, a clever gimmick based on bringing simple eye candy to the masses. But then it grew, big, fast, and is very useful to a lot of people, so I’m far less critical of it now. Its rise from simple little distro to full-blown monolith was as rapid as I’ve ever seen a piece of software rise to prominence and that speaks volumes of its worth all by itself.

So that’s where I stand. Gentoo is awesome, Ubuntu is decent. And everything else? Why do you use what you use?

A Worrysome Gaim.

If I don’t explain this side of things, people will think I’m just blindly cheering for the other team. There are reasons why I use KDE, and there are reasons why I don’t use Gnome, and it’s only fair if I explain both sides of this. There’s a sentiment going around that the applications are what makes KDE worth it, not the actual window manager itself, and that I could just as easily strike some happy medium by using Gnome and KDE apps at the same time. That would be fine and dandy, except where KDE’s desktop doesn’t do one thing I want it to do, Gnome doesn’t do several dozen things I want it to do.

But this article isn’t about Gnome. It’s about Gaim. I’m a huge proponent of customization and choice. I use Kopete so I can exercise those abilities. When I use Gaim, I’m not allowed to, and it’s discouraging.

First, I’m going to tell people about all the things I know Kopete has.

The Benefits
In another article I mentioned how KDE’s settings stay true across the board, and Kopete is no exception. Whether I want single or double-clicking in the contact list is up to me. And Kopete obeys. That’s all well and good. But other things that amaze me:

  • Each individual contact can have a specified set of icons for their statuses.
  • Each separate protocol (or account in the same protocol) can be hinted a different color to stand out.
  • Contacts can be sorted by arbitrary groups, or the groups can be taken out completely to just have a list of who’s online and who’s offline.
  • Kopete, as of its latest version, supports the Adium message window style specification (which isn’t to say it supports all Adium styles, but close).
  • A lot of information (such as contact status, away message, and icon) are hidden in the APIs of the Kopete message window, so that a message window designer can make this information quickly visible without having to resort to another dialog box or going back to the contact list.
  • Plugins that provide security, history, and useful other options – such as rendering LaTeX source as it should appear.
  • Support for both MSN and Yahoo! video chat.

The Flaws

Kopete isn’t without it’s flaws, after all. Away message dialog boxes should have a larger area for text. Contacts, when sorted only by status, without groups, shouldn’t need tree identifiers like “Online Contacts” and “Offline Contacts”. A bug that is purported to be fixed regarding overwriting incoming message formats doesn’t seem to be fixed. But these are minor things, and after all, are bugs. Things to be worked out. Functionality to be fixed, not added.

Gaim has none of these things. Some of the things it’s missing are features, some of the things it’s missing are customization abilities, but Gaim doesn’t have any of this. I know they’re working on video chat, so I won’t knock them for that. But why are many of the options I mentioned available? Does Gaim aim to be a simple caht client? That’s fine, and I don’t think there’s anything wrong with that. But if I’m using Gnome, and I want a more complex chat client, where do I go?

This whole post reminds me of what I heard about Verizon’s latest move to standardize the systems on their cell phones to make troubleshooting easier. In a way that’s honestly what Gaim feels like. Reducing the variables so that support is easier. I can understand a perspective like that, but it worries me at the same time. Not to say that this is the reason why this sort of simplification is happening, just that parallels can be drawn. If handling Gaim as it is is what the developers can handle without signing on more people and showing them the ropes and so on and so forth, then I’m not going to knock them for that – it isn’t anyone’s place to. But I wonder – if someone made a more complex IM client for Gnome, would it be accepted? Would people help it along?

The title of this post is ‘A Worrysome Gaim’, and it’s called ‘worrysome’ for a reason. When I look through the options of Gaim, I don’t see anything that’s missing, in my mind. But then I go to Kopete, and I see all the things that people though of, things that I didn’t even begin to imagine. If people learn how to use simple software, I honestly think they’ll stop thinking about what could be possible.

I don’t want a flamewar, and I don’t want people bickering about this back and forth. There is competition in the open source community. Different groups of people are trying to outdo each other with better, faster, and more useful programs. Some people think this is a bad thing. I think it’s a good thing because it creates the opportunity for choice. I think there’s a place for Kopete and a place for Gaim in the open source community. But I’ll be standing by Kopete.

Postscript: God, it won’t be long before this blog is known as Sébastien Reid Troll. But that’s honestly not what I’m trying to do here. Just give my side of the story, you know?

Eclipse’s Project Obsession

I love Eclipse. I think it’s a gorgeous program, I think it’s well-written, and I think that the fact it’s written in Java isn’t a hindrance anymore because it’s just about as fast as any other IDE out there. Here is my problem with it.

Create New File. Create New Java Class. What project do you want it in?

Well, I don’t really want it in a project, can’t I just —

Aww, too bad. You don’t get to create this file. It’s not in a project!


Why is this even a restriction? I understand that Java projects are usually large, complicated, convoluted things. But I just want to learn Java with this wonderfuz Dietel book I just bought, and this example program doesn’t need a set of subfolders, mission directives, and dependencies. It’s just one file.

And you’ll all stare at me incredulously and ask: But why don’t you write it in VIM, or Kate, or any other text/programming editor?

And I’ll stare back and say: That’s not the point. Why won’t Eclipse let me use their editing capabilities? It’s sorely disappointing and a little discouraging. If I want to learn Java with Eclipse, why would you prohibit me from doing that?

The Single Largest Obstacle Preventing Me From Using Emacs

I open XEmacs. It gives me a temporary buffer for random things. I want to create a new, empty file. There’s no command to create a new file in the menu. I quit.

Now, I know, I know. There’s a paradigm shift involved here. I have to get used to the idea that Emacs uses buffers instead of files, sort of, and you can open a file that doesn’t exist and it will create it, or something, but I just want to create a new file, without a name, write in it, decide what I want to call it and where I want to save it later. And so far I haven’t read any documentation that provides me a way to do that. It is, of course, slow going. I’m trying to learn Emacs and Lisp at the same time so I can sort of get the full experience. Lisp looks like a wonderfully interesting language, and as a VIM person, I’ve always been fascinated by the kind of respect that Emacs commands. Hell, I’ve even played Tetris in Emacs and stood in awe of that.

But I can’t figure out how to make a new file.