... search for a graphical usable interface
Ion is a tiling tabbed window manager designed with keyboard users in mind.
On some of the problems with present-day graphical user interfaces
So-called “modern desktop environments” converge on total unusability, and present-day mainstream graphical user interfaces in general are far less usable than they are praised to be. Usability simply does not equal low learning curve, and hiding system details from the user, as the Official Truth seems to be these days. Convenience foods are also easy and fast, but not very palatable (and you don't want to know all the ingredients).
Those of us who prefer to use the computer primarily with the keyboard for reasons of efficiency or health, are forgotten when “modern” graphical programs are designed. Mouse-based search-and-click interfaces simply are not efficient except for some very specialised tasks and in other cases involve lots of tedious repetitive clicking and searching. While most widget-based GUIs provide keyboard shortcuts to some operations, these are often sub-optimal – for example, commands can often be superior to cryptic shortcuts – and the general application design still makes them difficult to use from the keyboard. For example, tabbing through dialog entries is difficult if the dialog is laid out in a complex fashion. Most command line and other text mode programs are simply much more usable once you get used to them, but are limited in their output capabilities.
Similarly it is difficult to navigate through an unorganised stack of application windows, also using the mouse. In most common window managers and operating systems it is usually left for the user to attempt to keep the windows organised instead of the window manager. As a result the user often ends up in a jungle – or at the desk the overlapping window paradigm tries to emulate. Usability does not equal reproducing real world paradigms in computer user interfaces. Attaching multiple client windows to a single frame (or “tabbing” them) as introduced in PWM helps keeping the windows organised in some cases but still, this does not help with programs that have multiple windows for manipulating a single document and the navigation possibilities are far from perfect.
The Ion approach
Ion was written as an experiment on a different kind of window management model. It tries to address the navigation problem by dividing the screen into mutually non-overlapping frames that take up the whole screen. Big displays have so much space that this should be convenient and smaller displays couldn't show more than one window at a time anyway. The frame layout is, of course, dynamic and different on each workspace. Given the organised tree based instead of an unorganised coordinate-based frame layout, moving between the frames can be conveniently done from the keyboard. As in PWM, the frames may have multiple clients attached, each indicated with a tab.
While this model makes using well-designed and well-behaving programs a joy, some applications, obviously, don't work well in this model. These are in particular those applications that do not conform to the ICCCM (Inter-Client Communications Conventions Manual; the standard on how WM:s and applications should communicate) and expect a particular window management model. Badly-designed applications with multiple top-level windows that affect a single document are also not particularly well suited to the Ion model and should be fixed, although can be occasionally kludged to be compatible.
Summary of Ion features
- Tiled workspaces with tabbed frames, as discussed above.
- Designed to be primarily used from the keyboard.
- Fully documented configuration and scripting interface on top of the lightweight Lua extension language.
- Modular design. The main binary implements only basic window manager functionality. Additional modules implement extra features and window management policies.
- The query module implements a line editor similar to mini buffers in many text editors. It is used to implement many different queries with tab-completion support: show manual page, run program, open SSH session, view file, goto named client window or workspace, etc. Menus are also displayed as queries.
- A statusbar that adapts to the tilings, taking only the space it really needs, modulo constraints of the layout. The statusbar can also be configured to swallow other (small) windows, and does so automatically for Window Maker protocol dockapps, and KDE-protocol system tray icons.
- Full screen client windows are seen as workspaces on their own. It is possible to switch to a normal workspace while keeping several client windows in full screen state and also switch clients that do not themselves support full screen mode to this state.
- The scratchpad module provides a conveniently toggleable area for random tasks, akin to the consoles of many FPS games.
- To run those particularly badly behaving programs, Ion also supports floating windows of the PWM flavour. These can be had as separate workspaces without an underlying tiling, or floating on top of a tiling. Tiled windows can be detached to float, and reattached.
- It is not a project of the self-proclaimed “free” or open-source software movement, and does not suffer from popular fads among it, such as fontconfig/Xft and autoconf.
These screenshots are at resolution 1280x1024 and between about 70kB and 860kB in size.
Ion is not perfect and certainly not for everyone, but neither is any user interface. Usability is subjective. To ultimately solve usability problems to the extent possible with current technologies, applications should be written independent of their user interfaces and the UIs should be built according to the user's preferences based on a high-level semantic description of commands provided by the application.
Ion is, however, improving all the time and if you take the time to get used to it, you should hardly ever have to touch the mouse again to move between windows. Just remember that not all programs will play nicely with Ion because of presumptions about the window management model and even incompliance to the ICCCM. Terminal programs should work better than ever before, at least.
– Tuomo Valkonen <tuomov at iki dot fi>