About Superkb
This page is divided into several sections. Please use the floating menu at the right to navigate through it.
What?
Superkb is a graphical application launcher for Linux. It works by activating upon a hotkey press, usually Super_L or Super_R (better known as "the Windows key"). On activation it shows a keyboard on screen with the keys and its corresponding actions.
Guidelines
Superkb should:
- Never get in the way of the user's work.
- Never waste screen space.
- Be a light program. This is a very relative term, of course.
- Never change unless the user explicitly asks for that.
- Be easy to use. This is relative too, of course.
We'll try our best.
Why?
It is the same as Windows.
—My friend, deceived.
It looks the same as Windows.
—My sister, deceived.
Linux is too difficult!
—A user that was shown a Windows-unlike Linux.
Okay, what do I do here?
—First time computer user (Win or Lin) staring at the empty desktop.
Argh! Why can't I open this calculator faster?!
—Me.
Where is a calculator when you need one?!
—A user right in front of the computer.
I didn't know it could do that...
—A newbie.
Why not use some freaking key to launch the Calculator?!
—Me.
My multimedia keyboard doesn't work with Linux
—Hypothetical case.
How?
The goal is to repaint they flag key to have some bigger letters saying "MENU" or the like. For technical reasons, I'll refer to that key as Super. Whenever I press either Super key, a keyboard appears on the screen telling me what keys are bound to something, with the appropriate icons.
Let me show you what I mean. Let's suppose I'm working on whatever application and I want to quickly launch my calculator. First, I press (and hold) the Super key. A keyboard like the following appears on the screen:
At this moment, I realize that the calculator is at the "C" key, so I press it. After several times of doing it, it should become an automatic movement, not needing the keyboard to appear: just press Super+C in an automatic reaction to my desire to launch a calculator. After some practise it will take less than half a second to do it. (Try that with the mouse!)
That image is just a draft.
There would be some default bindings of course. For example:
- Super+Arrows: Would move the current window by 10px.
- Super+Alt+Arrows: Would move the current window by 1px.
- Super+Shift+Arrows: Would resize the current window by 10px from the lower right corner
- Super+Alt+Shift+Arrows: Would resize the current window by 1px from the lower right corner.
- Super+Shift+Insert: Would run an application.
- Super+Shift+Delete: Would kill an application.
- Super+Shift+End: Would close the current application.
- Super+Home: Restore to original size.
- Super+PageUp: Maximize.
- Super+PageDn: Minimize.
- Super+N: Program for taking quick notes (NEdit, GEdit, KEdit, XEdit, whatever-edit)
According to that example, when the user holds down the Shift key —of course, while holding down the Super key— superkb should show the actions for Insert, Delete, End and other Shift-bound keys and hide those that are only programmed to natural pressing.
Details
This is how the program should behave:
- Superkb loads —either standalone or as part of the Window Manager—.
- User presses (and holds down) the Super key.
- A keyboard like the one above shows up in the screen. That keyboard should make the user aware that W, C and N keys do something. Also, that the arrows and some edition keys do something too.
- User might do one of the following:
- A user presses (and releases), say, the W. The appropriate action (load Writer) should begin. The keyboard should not disappear from screen.
- A user presses (and holds) any already bound or any bindable key, like the W, N or C, or any other alphabet letter, but not Pause, for instance. If the user keeps the key held down for 3 seconds, the keyboard should disappear and the "Configure Binding" window should appear. If the user releases the key before those 3 seconds, it is actually point 4.1.
- A user might use the mouse to move or rest the pointer over a
key. (However, mouse support is not currently a goal.)
- If he rolls the mouse over a bound key, additional information might appear —making the icon bigger, for instance—.
- If the user clicks a bound key, the action should be performed.
- If the user holds the mouse button pressed over a key, the key should be configured as in point 4.2.
- After the user has loaded all the programs he wants, he will release the key and the keyboard will disappear. The programs should at this moment be loading.
We need...
- Feedback on Superkb compilation. The goal is to make it compile without needing ./configure as far as possible.
- A routine to get the best place in a polygon key to draw its icon at. Examples are multimedia keys and L-shaped ENTER key.
- Port the icon loading library (puticon_gdk_pixbuf_xlib.c) to Qt.
- Code to rotate fonts (is it really not possible with Xlib?)
- A lot of other stuff.
Who?
My name is Octavio Alvarez. My email is alvarezp@alvarezp.ods.org. I can also be found at irc.freenode.net at #superkb, as alvarezp or octal.
License and Legal Stuff
All software regarding this project, incluiding prototypes and draft code is distributed under the terms of the General Public License, version 2. All art regarding this project is released under the terms of the Creative Commons Attribution-ShareAlike 2.5 License.
The keyboard is a modified version of the one put in the public domain by Christoph Eckert.
Here is a link to the Superkb Project page at Sourceforge.net.
Also, as requested by the SourceForge terms of service, here is the logo for SourceForge.net, the the great open source project hoster, which helps in this way to the Superkb project.