The week in Palapeli: Research on fullscreen interfaces

February 23, 2009

The cashew (that cute thingy at the upper right of your Plasma desktop, that expands to a toolbox when clicked) is one of the most controversely discussed KDE 4 features (together with the folder view, but that’s another story). While people still argue about its usefulness for a desktop, it is definitely a great concept for fullscreen applications: In its inactive mode, cashews do by far not take up as much space as a usual menubar/toolbar-based interface, and the screen edges (the natural habitat of cashews) are one of the places a mouse cursor can most easily reach (fur further reading, look for “Fitt’s law”).

Because Palapeli uses the same graphics framework as Plasma, I thought at first that I could reuse the Plasma cashew code in kdelibs. Unfortunately, the corresponding classes are not exported: From what I understand from its code, I would have to make Palapeli’s puzzle table into a Plasma containment. And even then, I would only get one cashew which I cannot easily modify. This is much too unflexible for me, so I decided to start an own implementation. In the test bed, the 563 lines of code already look very promising: (Icons and buttons are placeholders, of course.)

Test bed for Palapeli fullscreen interface components

Test bed for Palapeli fullscreen interface components

Disclaimer for Palapeli users (or those who are eager to become such): Despite of the components being relatively complete, do not expect to see that in Palapeli too soon. Introducing a separate fullscreen interface will require to change some parts of Palapeli’s internal layout, and I do not change internal layouts without thinking about this first. (This thinking phase usually takes two or three weeks.)

Why am I talking about that topic? Fullscreen interfaces is something we should be aware of. An obvious application is in locked-down terminals for special purposes, but I mostly think of mobile internet devices (MID). Yet KDE does not seem to provide any standard widgets or guidelines for fullscreen interfaces (apart from the “Toggle fullscreen” action). What is the reason? Can fullscreen interfaces not be standardized, is there no need to standardize anything, or did we just not think of it yet?

P.S. As there will definitely be someone who asks, I will now answer the question what the window title in my screenshot means. “oswtest” is just an abbreviation for “On-screen widget test bed”.


5 Responses to “The week in Palapeli: Research on fullscreen interfaces”

  1. Aaron Seigo Says:

    if you can deal with a libplasma dependency, then you could just copy the implementation we have directly into your app for now. it would give you nicely SVG-themed cashews with cute little buttons and all. if it proves to be actually useful outside of libplasma, we could easily export the class (after some API review) in 4.3.

    anyways, more on topic: yes, i think we *should* be thinking about full screen interfaces and providing some guidelines for them when it comes to KDE apps.

    we have okular, gwenview, digikam, plasma-desktop, plasma-mid and now palapeli that are all very naturally used in such a way. each app does it slightly differently. probably not brilliant šŸ™‚

  2. majewsky Says:

    It would be nice if Plasma’s cashew was exported, if I could apply my own theming to it, and fill it with completely arbitrary contents (my current implementation takes QWidget*, which should be arbitrary enough).

  3. Andrea Says:

    so when are we going to see papeli on a touch screen device? In full screen mode obviously šŸ™‚

  4. majewsky Says:

    Andrea: That is the original intention. I have a N810 device, but I won’t start testing Palapeli before having the fullscreen interface and some compile-time switch to default to it (which is even better on small screens).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s