KCalc: A Modest Usability Improvement

Ok, so I don't like KCalc much. I think that usability-wise, it's the worst KDE application ever. So here's a proposal for a replacement. And since code speaks louder than words, here's an implementation too (PyQt).

[Ed: Screenshot of Roberto?]


by Roberto Alsina (not verified)

Sorry, but I can't parse your post. Are you saying that with other problems a scientific calculator will be faster, or that a graphig calculator is never faster?

by David Walser (not verified)

Sorry if I wasn't clear. I am saying both.

by Roberto Alsina (not verified)

Then one is redundant, as far as I can see ;-)

by ScottZ (not verified)

This reminds me of a feature that I would like to see on all history/tape calculators. I wish that they would include the calculation next to the answer.
When all you see is the answer it can be hard to remember which calculation created the answer.

I think Kcalc's Simple mode is definitely overloaded with too many buttons and that it could benefit from a ncie history window.

However, I do not think you should get rid of the buttons for numerous reasons. With the buttons you can easily type numbers you see on the screen into the calculato. Sometimes I do not feel like changing to the keyboard and would prefer to use the mouse. The interface resembles a real calculator and it seems more intuitive to me. It's also like this in every OS and so aids in familiarity.

FINALLY, THERE IS NO GOD DAMN POINT! Those who prefer to use the keyboard use that and those who like graphical will use that and for the strange ones, use both at the same time. (I often use my mosue to click on functions and keybaord to type in numbers). There is no need to destroy one or the other.


I defnitely think your right on the history and that the "Simple" view is way too overloaded. And yes, Python rules.

by Roberto Alsina (not verified)

Sorry, but are you telling me that you would rather hunt and peck using your mouse than type? In such case, use a on-screen keyboard. Sure.

But please don´t tell me that´s in any way efficient or better from a usability standpoint, because I don´t quite believe it.

And sure, people are used to this. It doesn´t make it any less braindead.

by Richard Van Den Boom (not verified)

Well, I know people who will indeed use their mouse rather than typing, especially since that make them do basically the same thing as they are used to outside a computer. It's exactly the same thing as the "bin" to suppress files : many people still drag the file to the bin. You'd better get used to it since this will remain.
And you'll find that many people understand the square root button on Kcalc, but don't know that square root is the same as **0.5.

Your proposal is nice for a scientist. It's not as nice for the next guy.
With all its defaults, Kcalc can be used by anyone without even reading a manual. For your proposal, don't count on it.

Best regards,

I'm not telling you if it's more efficent or not, I'm only saying it's sometimes easier. Sometimes I don't feel like taking out the keyboard or I'm reading a website and plugging in numbers from it and do not want to look down to my keyboard. An on screen keyboard would defy the purpose as it is an external application and too much trouble to bother with. In addition, the calculator has amny function buttons like for squaring and it seems more integrated.

Why not just allow both, it definitely doesn't hurt usability (except for people that are advanced) and it is more natural. I agree with adding a history and having a simpler simple mode, but I don't think you're in touch with the general population on this issue.

by NSK (not verified)

I don't particularly like what the usabilistists propose about KDE, and this proposal about KCalc makes me sick. I use KDE because it's full of buttons and options.

by Dan Ostrowski (not verified)

I don't really understand the problem. The screenshot he shows looks nothing like my default kcalc in kde 3.3

My KCalc (defaults) has 33 buttons total. The screenshot he shows has twice that. Plus, if you are not able to use a Keyboard (think accessability people!) then you probably WANT to use your mouse... and if you want to use the keyboard, certainly buttons don't get in your way. They don't get in mine.

If you don't like KCalc, do what other's do, use Python or Alt+F2. There's no reason to tank KCalc... it's a very familiar and useful application.

by Roberto Alsina (not verified)

Obviously you haven´t tried all 33 buttons yet ;-)

If you can´t use the keyboard, you already should be using a on-screen keyboard. Why should kcalc bring its own beer to the party?

by Trevor Smith (not verified)

KCalc takes TOO LONG to load. It's a CALCULATOR for crying out loud, and it takes almost 2 seconds to load AFTER it's already been loaded once! On my Athlon XP-M 2800+ w/ 512 meg RAM! Seriously, that thing is a pig and when I want to do a calculation, I want it to pop up immediately, not make me hold on til it's ready.

by Ben Klopfenstein (not verified)

loads in less than a second here, athlon 64 3000+ (gentoo, so its compiled 64 bit, but still for an application of this size i dont think it makes too much of a difference)

by llx (not verified)

that there're people out there that
- complain about kcalc
- start hacking
- have to corroborate they need only 20 min
and don't use 'dc'

by Roberto Alsina (not verified)

Glad to be helpful.

However, you totally missed the point. But don´t worry, that was funny for me, so everything has a good side ;-)

by clayne (not verified)

He didn't miss the point at all.

There IS still a UNIX operating system under that big shiny KDE thing you know. Yes, I'm being faceitious, but cmon.. the tools are THERE already. Not EVERYTHING has to be gui-ized.

by clayne (not verified)

And perhaps that applied to kcalc more in general.. but the aspect of a gui window for the equivalent of one or more specific basic unix commands seems absurd to me..

by Roberto Alsina (not verified)

Well, you seem to have missed it too. I know, I thought the point myself ;-)

But here it is in explicit form:

* I am not saying kill kcalc

* I am not saying ship usecalc

* I am not saying usecalc is even a good application as it stands

* I am not saying I will make it good (in fact, I say I wont)

What I **am** saying is: what's good about kcalc, really? What's bad about kcalc, really?

Does it make sense to have a app kcalc-like at all?

You may say, you are not saying, just asking. Well, yeah. That's more fun ;-)

by David Johnson (not verified)

I think this is much ado about nothing. Roberto marks down kcalc for two reasons. The first reason is erroneous. The default kcalc configuration does not have nearly as many keys as his screenshot suggests. His second reason is that buttons are superflous because there are keys on the keyboard. Nonsense! While they may not be necessary for him, they might be desirable to many people. My brief survey reveals to me that EVERY GUI calculator ever uses buttons. Even that sample text UI calculator form Borland's TurboVision!

And his solution is to use Python's eval(). Why not use bc (or dc) instead? If you're going to dump the GUI, at least use the command line's standard fare!

by Byron (not verified)

Agreed, I'm not sure what the problem is with Kalc. It's purpose is to server as a simple GUI calculator. My only complaint is the lack of an option for RPN operation. There are plenty of powerful command line math tools as noted such as bc, dc, octave, kalc (an unrelated to Kalc), pari/gp, tons more...

by Roberto Alsina (not verified)

The default has exactly as many buttons as the article says, though.

And as the article says, those buttons are already too many. And, IMHO, absolutely useless and redundant.

Just because everyone has always done it that way, it doesn't mean that way is right. Only that everyone does it that way.

Why not use bc or dc? Because I didn't feel like parsing a freaking pipe to catch the errors and give meaningful reports. If bc (or dc) were a library, though, I may have done it.

by gmontie (not verified)

KCalc has it's place. There are other tools in addition to bc, and dc....lots of other tools. If I did not have KCalc I would (I know this may seem foolish to you) go and use my desk top calculator and not use the computer at all. KCalc is a tool for a reason, and it has a place, BUT the proposed tool ALSO has a place. I like the new idea! BUT I don't want to see KCalc go away - IT SERVES A PURPOSE FOR ME, AND HAS A PLACE!

by MandrakeUser (not verified)

In fact, this article made me rediscover KCalc ;-)

Really, my only wishlist item for KCalc would be a log of last operations. You know, a text widget or similar, where you can go back in time so you don't need to retype a whole operation if you misstyped a number, things like that.

The idea of having a graphical calculator is to give a GUI abstraction that looks and feels like a real calculator. KCalc does that. Roberto's app doesn't.

Now, don't get me wrong. I am a scientist, I never ever use KCalc, 'cause for a technically inclined person like me it is much faster to type "python" and enter my operations. But for many, many people, this doesn't cut it, and an app like KCalc does.

In short, Roberto's article and app prototype aim at different users than KCalc does. Typing math in python, bc, dc and such is for geeks, and using a calculator is for the 95% rest of the population. Are we saying that we want to ignore this 95% ? Oh, they have windows, I see ;-)


by Gareth Sargeant (not verified)

I like kcalc more than Roberto's proposal. Actually I like kcalc a lot.

An optional tape mode would be a nice improvement to kcalc.

Just my 2 cents,


PS: I am a big fan of KDE but there are too many "k" names. A modest usability improvement would to rename the "kcalc" to "Calculator"

by vblum (not verified)

For a Roberto-style calculator, there is bc -l. It's fast, easily opened, and reasonably intuitive. No need to duplicate that in KDE.

For Kcalc, there's a very different use - it allows people who know how to use a pocket calculator (most everyone) to use a calculator. Remember, outside the programmers' community, there are pretty few people who actually know about text-based interfaces.

Yes, It should be renamed Calculator. It took me two minutes to find it in my new and shiny KDE 3.3 menus, and I've used every KDE version since 1.0beta3 ...

by ac (not verified)

While I'd prefer "Calculator", KCalc or KCalculator are the lesser evils of K-names.

I think a much more irritating thing than the K fixation is that KDE apps can't settle on a single way to incorporate K into their names.

Do you stick a K in front of a normal word, like KSpread? Do you find a word that starts with a K-sound and misspell it with a K, like Konqueror? Do you find a word that describes what the application does, and capitalize ANY K-sound in the word, like JuK? Or do you just make up nonsense words and throw a K into the mix, like AmaroK?

Frankly, if KDE apps could pick any ONE of the above, the names would annoy far fewer people. As KDE-naming-weirdness supporters would tell you, the first (K in front of a normal word) has analogues in the Windows and Mac worlds. The others, however, really REALLY need to go. In a hurry. And frankly I'd prefer if the K went away altogether (although apps like JuK could rename themselves Juke and I'd be fine with that). It's not endearing, it's aggravating.

by Ingo Klöcker (not verified)
by ac (not verified)

Thanks for the info. So it appears the four ways to use K in a KDE app are:

- Insert K in front of a normal word
- Find a word that starts with a K-sound and misspell it with a K
- Find a word that describes the program's function and turn any K sound into a K
- Transliterate an Inuit word and make sure to spell it with a K

Sounds like the rules are even more divergent than I originally thought.

by anonymous (not verified)

What's in a name? that which we call a rose
By any other name would smell as sweet;

Romeo & Juliet, 1595

by Ed Moyse (not verified)

I cannot tell what the dickens his name is.
- Merry Wives of Windsor

by standsolid (not verified)

Why not kalculator then?

by Sergio (not verified)

It took me 3 seconds to implement such a calculator with bash!!! :

"konsole -e lisp"

(note: You can use your favorite language with a top-level)

:P ;)

by Sergio (not verified)

Oh, I had not read the python comment before :). But seriously, what does the proposed new GUI application provide over a simple terminal?

by Roberto Alsina (not verified)

Easier recovery of previous results (double click instead of click-drag then middle click).

by Paul Ahlquist (not verified)

"Easier recovery of previous results.."
yep... all I've got is a button on the panel....

[Desktop Entry]
Comment[en_US]=I kept misspelling dc
Name[en_US]=The Calculator
TerminalOptions=--notoolbar --nomenubar --title 'dc' --vt_sz 50x40

by Rinse (not verified)

konsole -e lisp
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data..
Uh oh.. can't write data.

-> very userfriendly :)

by oliv (not verified)

and even better: use bc or dc, two calculating programs included on every single distribution ;)

by Martin (not verified)

I think he's right.
We only have this calculator because it looks like the M$ one.
And as always whenever there are radical approaches everyone
is whining like
"Hey, I actually use those buttons when I'm on the phone".
This is completely ridiculous.
Why not then integrate a button with every letter in a word-processor?
Perhaps you need an on-screen-keyboard to get along with your "disability" ;-)
It doesn't matter how many buttons there are. They are completely useless.
His complaint about memory is right, too.
And why use M+ ?
Why not type 60+20+30+40?
And why not using the command line or (insert other app)?
This is like saying why improve KDE when you can use Windows.
The discussion right now is about whether KCalc is good usability-wise
or not. Just proposing a different app is no argument whatsoever.
I'm quite sure such an app can look a bit fancier. It would need
an ordinary toolbar with buttons for print and perhaps the options
to open/save whole calculations. Then it would like the other KDE
apps which also a good idea IMO. I'm absolutely sure if Microsoft
introduces such a calclator everyone here will follow suite.
The problem here is that all innovation is stifled right on the
spot with unfounded arguments. The question here remains:
Do we really need those buttons or isn't an on-screen-keyboard
the right solution for one-handed/half-eyed whatever people? Yes/No?
If not - get rid of them. It's as simple as that IMO.
Besides: I absolutely hate it when I want to convert multiple numbers
from hex to dec and I have to switch back to hex everytime for the
next number. A calculator as in the proposal would make it possible
to define your own shortcuts, functions etc, etc. It's a much more
extensible concept and I don't think that even a novice would really
need long to understand that you can enter 3*4 and it shows the result.

by Robert Knight (not verified)

Whilst I agree that the KCalc user interface is ugly, and that UseCalc is far prettier, KCalc is still easier to use from a beginners persepective.

I really like the idea of a calculator which can show the whole equation in one line, as opposed to the current KCalc / Windows Calculator type system.

However, I think it is important to have the scientific function buttons available, as well as the number buttons because some people (not myself) do use them - but in a way that is easy to hide when people don't want them.

So how about:

- UseCalc-style expression entering with a scrollable history list. If you did the equation in several parts, then clicking and editing a previous equation would optionally recalculate all subsequent equations which depended on that answer.
- Allow a more friendly expression entering system. Eg to enter 2**2, you would press [2] [Alt] [2] and the power would appear as a subscript. This system works well on a graph-plotting package I use at college. The calculator would need to be able to infer the * sign, eg: 9(6) -> 9*6
- Number pad which can be revealed or hidden using a tab button (ala. Konqueror or KDevelop, but with a text label so I don't have to mouse-over to find out what it does).
- Scientific function buttons either placed into a menu, or put on a hideable tab (as with the Number pad above). I would only use the most important functions - most of the ones on the KCalc pad people will never use.

by wygiwyg (not verified)

From the usability point of view the buttons in Kcalc are better then the buttons in on-screen keyboard.

On-screen keyboard emulates a real laptop keyboard where buttons which represent digits are presented in a row. Kcalc digits buttons are grouped. It is much easier and faster to move mouse cursor from one to another grouped button then to skip from left to right and vice versa. Because of this the separate keyboard is much better then laptop keyboard for doing calculations.

A friend of mine lost an arm in the war. He uses KDE (on a laptop) and I asked him what does he prefer: buttons in Kcalc or buttons on a real laptop keyboard/on-screen keyboard? The answer: buttons in Kcalc.

AS many other posters already mentioned a default Kcalc setup has not too many buttons, but, but...

Kcalc default setup buttons are grouped wrongly. Digits and basic calculation functions should be better separated from the other for most users unknown functions.
I am going to create a little mockup and upload it here.

I agree that Kcalc should have history in its window. Even my mobile phone calculator has one.

by Roberto Alsina (not verified)

Why not ask the on-screen keyboard guy to add a num keypad?

That way it works everywhere you need numerical input (like, say, KSpread or IP addresses, or phone numbers)

by olahaye74 (not verified)

PG Calc is a great calculator (see link below) but it has the same problem as KCalc: useless buttons.

A Great calc would be a PG calc with the GUI proposed in this article.

and having that as KDE bar applet that would fold/unfold with a shortcut or mousclick would be awesome :-)

by Shift (not verified)

KCalc is good for what is done for : a simple calculator for "newbies".
"Geeks" will use bc, python, perl,....

What KDE is missing is a "computer algebra system".
This already exists and it is GPL : maxima http://maxima.sourceforge.net/ with an existing front-end xmaxima http://maxima.sourceforge.net/screenshots.shtml

xmaxima is good but in tk (ugly) and doesn't interact well with other KDE applications. A KDE front-end (KMaxima ?)will be a very very good point for KDE. Perhaps with MathML import/export ?

Please keep kcalc as it is but work on KMaxima :)



by abdulhaq (not verified)

OK - I've started on a prototype, you can see a screenshot here:


What I'm looking for is suggestions on a good user interface - any ideas anyone?


by Shift (not verified)

Great !

Do you plan to use Qt MathML support ?

For the interface something similar to Mapple, Mathematica, TI 92 will be good I suppose : All appear as a big sheet with the question align left and results align right.
Graphics could be integrated in the sheet or open in another sheet.
Toolbars will be add for common operation (sin, integration, sum,...) and propably other optional toolbars specialised (complex, geometry,...).

It will be a very large project.

by abdulhaq (not verified)

We're thinking along the same lines. That's a good sign (isn't it?:)

The project appears large but already I've got something useful, everything you can see in that screenshot is working as it appears. I need to update my expression parser some more, to handle all the different functions etc, but the back of the job has been broken (I think, anyway). Graphing has yet to be added and I have to to decide what tool to use - gnuplot +/- kdvi, kplot, etc.

The app has been written in python, the Qt bindings are now a part of the standard KDE distribution and 99% of PCs have python. Once the project has settled down it could be rewritten in C++ but... is it worth it?

It's not as hard as it seems because maxima does all the hard work. I'm just parsing the in and out expressions so that I can display them nicely.
Anyway, I'm enjoying it so I don't notice the hard work.

Any other thoughts? What graphics engine to use?


by Manuel Stahl (not verified)

Is there no library of maxima to use? The source is open I think, so it should not be too difficult to compile one. This would be much easier than parsing the maxima output...

Just my thoughts...


by Manuel Stahl (not verified)

And something else...

http://kayali.sourceforge.net/ is really a good start, but it needs the input of kformula I think. This would be great.

by Steve (not verified)

When people talk about the Windows calculator, they mean the original one that has been there since at least Windows 3.0. There are others, and they have interesting features.

The one for Windows CE is like the normal Windows one, but has two extra features. One is a history, and the other is a compact mode, where it only shows the result field (and a button to go back to full mode). Anything typed in in the compact mode still goes into the history.

The other Windows calculator is the powertoy one for XP (free download from MS). I think the thing I like most about that is that the entry is done on a command line, so parentheses and all that work; typing 1+1 +1 also works - it automatically inserts a variable called "answer". This calculator also has other functionality (graphs etc), and it has no number buttons! I much prefer this calculator to the normal Windows one.

Back to KDE: having different styles of working is important. I like the command-line style entry (I was a dc/bc user!), but somebody like my mother likes having the normal calculator entry mode, complete with number buttons. Others like RPN (although the Polish guy here doesn't!).

A single app which can be configured to do all of these combinations would be nice, but I wonder if that wouldn't kill startup time. I want to try the ALT+F2 thingy as soon as I get home. Judging by the response, nobody knew or expected it to work, but that'd be an excellent compact mode calculator, and it should be publicised more!

-- Steve

by Gunter Ohrner (not verified)


Roberto's suggestion reminds me somehow of printKalc:


This one is a QT/KDE C++ program which does not "eval" Python code but has other fancy features. If you like this type of calculators it will be worth a try. :-)


Gunter Ohrner