MAY
23
2007

The Road to KDE 4: Konsole Gets an Overhaul

Again, after a delay brought on by a bout Real Life (tm), we return to bring you updates on the state of Konsole, KDE's UNIX terminal program. Konsole has been a staple of KDE since KDE 1.0, as has been showing signs of a little bit of clutter and wear. So, Robert Knight has stepped in to clean up the program's code, and more than anything else, fix a cluttered and difficult interface. Read on for the details.

The goal of Konsole itself is pretty simple: provide a window to run a command prompt and command-line applications from. In fact, it has evolved from the very simple 'kvt' terminal program in the pre-KDE 1.0 days. An older KDE 1.x version of Konsole is pictured below:

Image courtesy of a (very old) book about Linux at linuxbook.orbdesigns.com licensed under the (also very old) Open Content License v1.

The version of Konsole from that era was very simple, but it wouldn't stay that way, as more and more features were added. Konsole users wanted transparency (shiny!), support for more text encoding schemes, ways to control every feature possible: Konsole ballooned into a monster. By KDE 3.x, it can best described as a highly-functional mess.

As an example of just how bad Konsole had become for KDE 3.x, I present the following screenshots, the first showing a normal Konsole window from KDE 3.5.6:

Possibly the worst settings menu of any KDE application in KDE 3.5.6 follows:

And if that isn't enough, actually going to the settings dialog makes the situation even worse.

If this isn't the most user-friendly theme dialog you've ever seen, then demand a refund. (I joke! It's actually terrible for many reasons, but the seemingly random nature of it is probably the best reason to dislike it).

The worst offenders are the settings menus, as you can see. An overly complex settings menu leads itself to an ugly settings dialog.

When the KDE 4 development series commenced, Robert Knight took over maintainership of Konsole. He decided that he would focus on bug reports and feature requests filed via the KDE Bugtracker, bugs.kde.org. Ever aware of the fact that users can be pretty picky about what features an application like Konsole needs to have, he created a few online surveys to help with the determination of the most common as well as fringe use cases. This feedback has driven much of the work.

The end result is a Konsole for KDE 4 that is visually very similar, functionally improved and with a settings system you can actually stomach. The screenshot below shows that the main window has not changed too much. The tabs are shown at the top in this screenshot, however Robert tells me that they have been defaulted to the bottom of the window as this article went to press. Additionally, you'll notice that the text on the tabs contains more helpful information. This is configurable is a friendly manner - see three shots down.

The once-intimidating settings menu now becomes very simple. It may look like the configuration options are gone, but they are still all available in a sanely organized fashion.

As you see below, the settings menu leads to a Profile selector, under which all the settings are kept separated. They are much more organized now, rather than an odd collection of random check boxes.

And lastly, the appearance people will appreciate this dialog: its implementation is effective and its use becomes obvious. Additionally, Robert has implemented style previews in an intuitive manner. As you mouse over the style, the Konsole window in the background automatically applies that style in an active preview. So you can very rapidly look through and appreciate the styles just by hovering over the list.

Side-by-side comparisons aside, Konsole also offers a number of other improvements. Among them, split-view mode, faster scrolling (thanks to a smarter line redrawing scheme), hotkeys and more.

Much of the inspiration for these improvements comes from analysing other programs. For example, the split-view mode, pictured below, is inspired by GNU Screen. It is a console output cloning tool so that you can see two views of the same scroll buffer. For example, if you are a developer, and you need to compile something really big (like say, KDE), then you can read through the scroll at your own pace on one side, while still monitor the output progress simultaneously. This is not a multi-panel model like Konqueror, so much as it is a cloning mode that lets you see more than one thing at a time within the same buffer. In this shot, the two sides are displaying the same output, just scrolled to different points.

There is friendly interaction between Konsole and some of its biggest users. In particular, Yakuake just recently implemented a Split View mode like the one listed above. When I asked Eike Hein about the relationship between the two projects, he said "I think Yakuake is beneficial to Konsole in KDE 4 in so much as Yakuake is a more demanding user of the Konsole KPart than most applications, so developing Yakuake has resulted in finding out a few things about how the KPart's interface can be improved :)"

Konsole has benefited from a few features that were requested by the Yakuake users. For example, there is a new hotkey that pops the terminal up and down quickly. This was in response to requests from the Yakuake users when Robert did his interface survey. Of course, like all things KDE, it is configurable. With Robert at the helm, it is even more user-friendly to configure it.

Future plans for Konsole include, among other things, ideas such as: tear off tabs, a commandline configuration interface, and making tea. I asked Robert if it would one day make coffee, but he's British and much prefers it to make tea it seems. Perhaps when it obtains beverage-making abilities, this argument will resurface once again. :)

On a side note, this is the first time I have attempted to write my article from within KDE 4 itself. While a few applications were not stable enough to use, including Kicker (which is dying anyway), the experience was good enough that I will probably do the same henceforth. Now that the libraries have mostly settled down (with a few exceptions), the changes are becoming more apparent in the applications. I'll be keeping an eye out for more things to feature in this series, but the next topic should be the KWin window manager, barring any major problems. Cheers.

Comments

As far as I know this is a "bug" in QTabBar and is fixed in Qt4 series. Perhaps someone with more knowledge about the issue can correct me if I'm dead wrong in this... :)


By tpr at Fri, 2007/05/25 - 5:00am

Close. It is a 'bug' in QTabWidget, which (still) does not provide a means to turn the frame on or off.

Konsole currently uses a replacement tab widget I wrote using a QTabBar (that is just the widget which draws the tabs and handles interaction with them) and a widget stack. The main motivation was to get rid of the border, but it also has other benefits. Adding new tabs is smoother and slightly quicker. Tabs are also allowed more of the window width by default which provides more room if you have long tab titles.


By Robert Knight at Fri, 2007/05/25 - 5:00am

Can't you send this as a patch to the trolls or something, to get it in 4.3!!


By superstoned at Fri, 2007/05/25 - 5:00am

As far as I know, it's a little late to get things included in 4.3, except bugfixes.


By Troy Unrau at Fri, 2007/05/25 - 5:00am

Frankly, I find the settings menu and dialog to be very intuitive. Although I use it every day, I was able to find what I am looking for the first time I ever tried. It was easier than in kwrite, kword, kspread--and god forbid konversation that doesn't even have a copy/paste option. But I will wait and see, before I judge the new setup.

Also, I really like the tabs along the bottom of the window and would prefer that over having them up top, near the menu. I might accidentally click on a menu.

The split-screen option could be VERY useful. I am happy to see that.

Another feature that could be very useful, is to have a toggle button handy to switch between modes of capturing or not capturing CTL-Z, X, C, and V. Because it really sucks having to use the edit menu.. and the middle-mouse button doesn't always give what I copied.. It gives whatever I last selected--which is sometimes different.

Matthew


By Matthew C. Tedder at Thu, 2007/05/24 - 5:00am

Yakuake is nice but I never managed to set it up so the window pops up from below the screen.


By semsem at Thu, 2007/05/24 - 5:00am

>> Another feature that could be very useful, is to have a toggle button handy to switch between modes of capturing or not capturing CTL-Z, X, C, and V. Because it really sucks having to use the edit menu.. and the middle-mouse button doesn't always give what I copied.. It gives whatever I last selected--which is sometimes different.

Huh? Just use an alternative shortcut for paste etc (ctrl+alt+v for example). About middle mouse - try Klipper.


By Lans at Fri, 2007/05/25 - 5:00am

^Z — what (and how) would you Undo in a terminal? o_O

^X/^C/^V — how about Ctrl-Del, Ctrl-Ins, Shift-Ins?


By ralesk at Sat, 2007/05/26 - 5:00am

Please allow the konsole look to be as it currently is in kde 3.5, with tab bar at bottom, and the button to create new tab. I really dont like the look put forth with tabs at top, though i think that can be configured, since it is KDE after all :D

i love the split functionality though.


By redeeman at Thu, 2007/05/24 - 5:00am

/me points up and says "Read the article again." :)


By Troy Unrau at Thu, 2007/05/24 - 5:00am

So the tabs are at the bottom (yay), but what about the new tab/close tab buttons? I tend to doubleclick the tab bar to make a new tab, but I wonder if this will be more difficult with the newly really wide tabs (filling up the tab bar faster). Even with narrower tabs, when it gets full I'd rather click a new tab button on the tab bar than session->new shell. And close tab is simply nice to have in place of or in addition to session->close session.

I'd say make it an option, but I see no reason not to have them. my 2¢


By jason at Thu, 2007/05/24 - 5:00am

Hi.
I discovered xterm at scool because we use a cad suit whitch has been designed to work with xterm's third button action.

The thing is that when you press the right button, it will past ... the_selected_text to the prompt, and an alias ...='/path/to/scipt.sh' make it quite nice.
for example : enter ls -l
it print every file and directory. then double click one dir name, and press right button. The script detects that $1 is a directory, and cd to it, the call ls -l so you can go throught dirs the way you would in konqueror ! (ok, you can't get preview of files there :)
But even further : if the directory is one from the cad (ie it contains files named as suposed to be ) it will open in the designer software.
do it whith a postscrip file, it open it in ghostview etc...

So my whish for konsole in that regard would be an inteligent past. I mean, when clicking the middle moose button, AND IF THE PROMPT IS EMPTY, launch a user defined script. Comming whith a good one may turn konsole use much better.

Kind regards.
Kollum


By David at Thu, 2007/05/24 - 5:00am

> Possibly the worst settings menu of any KDE application in KDE 3.5.6 follows:

Made me think about what's the worst menu in KDE. I think it's Kate's "Extras" menu. Second is its "Document" menu (when having so much files open that it is multiple columns it's really annonying) on my list. Other candidates!?


By Carlo at Thu, 2007/05/24 - 5:00am

Yeah, Konsole has an awful settings setup, but messing with it is a waste when there are more important issues to take care of. You only change Konsole's setting once, when its lack of clickable links matters nearly every hour of every day. GNOME-Terminal has it, XFCE's Terminal has it, Mac OS X's Terminal.app has it (CMD+double click)... but Konsole lacks it. You may as well be using xterm.

It's been discussed before, where the Konsole people want to make it more general than just URLs. But what does that entail? Wasted time, that's what.


By mX at Thu, 2007/05/24 - 5:00am

i never encounter links in konsole output :)

But you can double click on it, go to konqueror en middle click somewhere in konqueror or on the black-white cross of the location bar to open the link


By whatever noticed at Fri, 2007/05/25 - 5:00am

Some people may encounter links if they're using Konsole for IRCing perhaps via Irssi or some other cli IRC client. I've got used to double click the link and the middle mouse button paste in konqi window, though some new comers may not see this as a pro for Konsole when comparing Konsole to Gnome-Terminal for example... Me neither would mind if Konsole would support clickable links :)


By tpr at Fri, 2007/05/25 - 5:00am

well, you can get far with Klipper, which can have automatic actions and stuff like that. you'd have to doubleclick an url, and klipper will automatically launch Konqueror...

I generally doubleclick and middleclick on a tab or the empty space in konqi to open a link. having a clickable link doesn't make a huge difference if you don't use it often. But yeah, I can imagine if you use it often it will make a diff. So be happy, Konsole 4.0 DOES support it.


By superstoned at Fri, 2007/05/25 - 5:00am

Thanks for the info, tested it on my checkout and it indeed works quite fine. I'm used to doubleclick the URL and then using middle mouse button in clean tab after that.


By tpr at Fri, 2007/05/25 - 5:00am

> when its lack of clickable links matters
> nearly every hour of every day

I think your comment is hyperbole, but to answer the question, links and email addresses are now clickable.

> where the Konsole people want to make it
> more general than just URLs

I don't understand what you mean by "the Konsole people". My guess is that you saw a reply to a bug report or perhaps a comment on the dot where one person stated that this was their opinion on the matter. Please do not misrepresent this as a consensus between everyone who is involved with development of the terminal.


By Robert Knight at Fri, 2007/05/25 - 5:00am

my frustration with links comes from the failure of double-click to magically select the entire link. any nontrivial url tends to get only partially selected, and then I have to go click-and-drag with my silly little laptop mouse...
I'd be very happy if double-click selection could be made smarter by default in kde4.

I also have a feeling that there's a way for me to improve this right now...


By Chani at Fri, 2007/05/25 - 5:00am

settings->configure konsole.
see the last option.
i haven't tested it much myself, but i think i am adding "?" to that line ;)


By richlv at Mon, 2007/05/28 - 5:00am

"lack of clickable links matters nearly every hour of every day."

I totally hear you! This would be such an obvious enhancement of Konsole, and i can't find a solution anywhere on google (except loads of people suggesting this feature.)

If anyway comes up with a solution / patch / plugin / whatever solution that will make URLs clickable, i'm buying beer.


By JoaCHIP at Thu, 2007/10/25 - 5:00am

konsole doesn't work fine with vim when the option set mouse=a is on, when you select text it doesn't give the right feedback.. (compare it to xterm) it was something related to mouse protocol 2 or something like that.. and considering there is no vim client for kde.. this kind of sucks, can this feature be implemented


By hacosta at Fri, 2007/05/25 - 5:00am

Yes, I implemented this some time ago. Konsole doesn't quite provide all the mouse facilities that xterm has, but I have added the most important one which fixes behaviour with "set mouse=a" in Vim. The main benefit is that you can now drag the splitter bar up and down with the mouse as in other terminals.


By Robert Knight at Fri, 2007/05/25 - 5:00am

so this will be in kde4.. great! thanks


By hacosta at Fri, 2007/05/25 - 5:00am

oooh, cool :)


By Chani at Fri, 2007/05/25 - 5:00am

I hope I didn't forget to mention in the article that you are amazing...


By Troy Unrau at Fri, 2007/05/25 - 5:00am

Use gvim. Really, Vim is not an application where you use GUI to do stuff (as you should know already :)). It doesn't matter what toolkit does it use, if the first thing you usually do with your .gvimrc is putting a command to turn the menu and toolbar off (so they don't waste screen estate) :). Still, I would like to see a KVim. I believe someone once tried to make it... though the project was quickly abandoned. The uselessness of switching a toolkit for a GUI that either way is non-existant looks like a good reason :). Though cutting memory usage for a Qt-only desktop would be nice.


By zonk at Sat, 2007/05/26 - 5:00am

Looks great, hope that we have some flexibility in setting the titlebar text; my biggest annoyance with Konsole atm!

Keep up the good work, it's really appreciated :)

z.


By effzee at Fri, 2007/05/25 - 5:00am

It's nice to finally see those hard-hearted developers dealing with the severe beverage usability issues in KDE. My old Apple II used to make tea for me when I first woke up, and then it fetched the paper and walked the dog for me. It's 2007 now people, and KDE is only _now_ catching up. Jeez!

On a more serious note, I'm grateful to Robert for the progress with konsole! I didn't realize I was missing some of these features, but they will be nice to have. Thanks!


By faketroll at Sun, 2007/05/27 - 5:00am

The third screenshot from the bottom is almost identical to gnome-terminal. In fact, most of the changes seem to be... "borrowed" from the aforementioned. There's nothing wrong with that, gnome-terminal is a good terminal emulator (way better than the old Konsole which was horrific) but this is just like the similarities between Naut and.. what did they call it.. Dolphin?

Ah well, I never did like KDE so perhaps this subtle GNOMEification en-route to KDE4 will make it somewhat better. Certainly beats KDE's usual copying of OSX and Windows with their horrible design sense. C'mon people, the proprietary OSes don't actually have all the answers and - regardless of what Shuttleworth says - Linux should not try to be Windows plus Mac, it already has so much more to offer.


By Flax at Tue, 2007/05/29 - 5:00am

I will certainly propose you for the troll-of-the-month-award! And I'd say your chances to win are actually quite high.


By wassi at Wed, 2007/05/30 - 5:00am

lol, KDE doesent copy osx nor winblows. it creates whats best, and has done that for a long time. Ideas may come from seeing other applications, as with all, but it neither acts or looks as osx or winblows.


By redeeman at Thu, 2007/05/31 - 5:00am

I use console ALOT, and while have no problems with the simplification of a convoluted and complex menu structure i do have a problem with the reduction of useabilty and configuration options. I see no particular advantage to a menu in my console, as i am using a command line because i need to type commands. One of the most usefull things about the old tab bar was the button for a New Console, as thats were the mouse was (at the bottom near all the tabs) the menu was turned off (just extra clutter) and it's alot easier than ctrl-shift-N. There are many examples of this type of thing in KDE4, I will keep using KDE3.59 untill it no longer ships, then i will switch to gnome, which although i find more anoying to use, works KDE4 seems broken even when its running as it should.
Vince
(KDE user since version 1.x)


By vince at Sat, 2008/06/28 - 5:00am

I love how you simply assume that all of the features that haven't been ported yet will never be, and how you completely ignore any features in KDE4 and its apps that weren't in KDE3, as if the whole exercise of the creation of KDE4 was in removing features.

Anyway, sounds like you've made your choice regardless - have fun with GNOME! :)


By anon at Sat, 2008/06/28 - 5:00am

So, basically, Vince, you're telling us that you miss two things in Konsole for KDE4?

* hide the menu
* have a new tab button in the row of tabs

Have you actually looked at konsole in kde4 at all? Right-clickon on your konsole window. Click on the menu option that's labeled "show menu bar". Now the menu bar is hidden.

Then, right click on your konsole window. Choose "edit current profile". Go to the second tab, labeled "Tabs". Check the checkbox labeled "Show new tab and close tab buttons in tab bar". Now you've got your buttons.

Anything else you didn't bother to actually check out before complaining that you need help with?


By Boudewijn Rempt at Sat, 2008/06/28 - 5:00am

Well... I followed your most excellent instructions for the "new tab" button and guess what, there's no checkbox on my "Tabs" tab.

I have 2 text boxes under "Tab Titles" and two combo boxes under "Tab Options".

No check boxes.

KDE 4.0.5 on Fedora 9

Anywhere else I should be checking before I complain? :) :)

Pat


By Pat at Tue, 2008/07/08 - 5:00am

Yes - a more recent version of KDE4 ;)


By anon at Tue, 2008/07/08 - 5:00am

Hah! Talk to the nice folks over at Fedora, maybe you can motivate them... :)

Still waiting for my 4.1 packages...


By Pat at Tue, 2008/07/08 - 5:00am

Oh well - here's a little screenie to tide you over :)

http://etotheipiplusone.com/kde4-konsole-buttons.png


By SSJ at Tue, 2008/07/08 - 5:00am

Pages