Saturday, 7 February 2009

My Idea of Future Gnome Desktop

Since I read a blogpost about GTK+ 3.0 Theming API Hackfest I've been thinking about how would like the Gnome 3 desktop to be... First I've had some more general ideas like: support real transparency everywhere, desktop should serve as a place for wallpaper and widgets, not as a storage room occupied by nautilus, gnome-panel should look slicker and be more interactive, ... But yesterday I've tried cairo-dock (which I haven't figured at all how to set it to not crash and work how I would like it) and that rather short experience gave me more clear idea what I'd like it to be.

First let's see what my desktop looks like now

There are two panels and an improvised storage room on the nautilus managed part more concretely:
  • Menus
  • Window list
  • NetSpeed Applet
  • CPU monitor
  • Keyboard switcher
  • Clock
  • Desktop Switcher
  • Application launchers
  • Various session related applets - lock screen, log out, shut down
  • Volume
  • Trash
  • Notification area
  • Timetable
  • Some documents, etc. on desktop

I find this layout particuraly useful since most things I am doing repeatedly are available on single click and the rest is two clicks ;-) Also thanks to the timetable on the desktop, figuring out which classes I have today is a matter of few seconds. And finally thanks to the network and cpu monitors I see how much I download/upload and how cpu behaves.

On the flip side this layout takes up a lot of space, the window list gets quickly filled, some of it feels rather duplicated with tray area (you know the 'minimize to tray' funcionality of nowadays's apps). Also the desktop itself feels cluttered and I cannot make the timetable bigger - the current size is as far as nautilus is able to scale.

And here's my (well let's say I rather put together various ideas from various people) solution trying to improve the usability as well as slickness (please note that the folowing image was made in inkscape, so it's not a real screenshot)

Now what has changed... Nautilus is no longer managing the desktop which in turn now serves as place for various widgets. I've put there the timetable in it's desired size (image widget - place an image you'd like on the desktop with desired size) and two monitor wigets - one for CPU and another for network. I can also imagine puting there a weather forecast, calendar, big analog clock, ...

Next thing that changed is that panel is no more. Instead there are two more widgets on the desktop - desktop switcher and dock area. There's not much to describe about the workspace switcher, just that it looks nicer and is not in any panel. More describing is due for the dock. Basically it's a reminiscent of the panel, but it's transparent, 3D-like and I've removed all differences between applets, application launchers, notification/tray area and window list.

The combination of launchers serving also for window list isn't a new idea, I've already seen it implemented in the cairo-dock, though due to frequent crashes I had not much fun with it. But as I said, I'd go even one step farther and merge also the tray icons. The idea behind is that there actually is no difference between those so why should we make one. It also saves a lot of space.

And now how it would work? Let's say I want to launch an audio player. I click on the audio player icon and it starts. The icon buttonises (shown with epiphany launcher) and starts to behave like it now behaves in task list and/or notify area. Right-click will hide (or focus if it is not focused) the window in the icon another right-click will bring it back, left-click will show a menu with the usual commands like play, previous, next, etc.

Now for pure notify icons it would behave slightly different, e.g. right-click on the signal icon (network-manager) will open a menu where you can select networks you'd like to connect to, left-click will open a menu with additional settings, just like it behaves now.

For the applications without their tray icon the launcher starts serving as a button in window list - right-click for minimize/focus, left-click for window menu.

When you'd want to open new window instead of focusing the current one, just hold shift and click the icon, or select new window from the menu that apears when you hoover over it. Windows of the same app would be grouped together and you'd select which one you'd like to choose by selecting one from the menu that appears when you hoover over the icon.

Next thing you can notice on the dock is menu and places. This would be similar to the Applications menu and Places menu, optionally the System menu as well, with the tiny difference that it would open on hoovering instead of mouse click.

This setup would mean that you'd have almost any action available for use on single click.

Final word to say about this is configurability, I think the dock should have an easy way how to manage the applets that are on it, prefereably similar to how you do it now with gnome-panel. The cairo-dock configuration window is a total no-no for me - in the basic view I wasn't able to set-up anything I wanted and in the Advanced view there was so much options that I got lost very quick.


malwkgad said...

(sorry for my reply being so long)
I would like to start by saying I am not an usability expert, but still, reading your exposé made me want to add some notes.
* the current panel in gnome is really bad, I can confess, I even do not know where to start, but for example if I start scaling the size of it the icons do not scale with it, they scale on thresholds, I do not use it (I have only one panel and it is auto hidden, I use it just to host the tray and one important applet (revelation)
* I do not also use Nautilus to draw my desktop and, yes, I completely agree that it should be used for widgets / Desktop apps (like having the Desktop hint - i.e. conky and stuff like that, it should be able to host any root window drawing application, not only specially designed for gnome apps)
* workspace switcher - again completely agree that it should not resides in the panel, if, lets say, I have 9 workspaces on 3 rows (which is my current set up)and I have a panel of 24 pixels the switcher becomes completely useless, no one can click that precisely, if I have it on 1 row it takes the half of the panel, again completely unacceptable. The switcher should live outside the panel and should be able to hide itself, only shown on hover (or at least configurable that way). I also think it should display icons for the tasks that are run on it. I use this a lot on the metacity workspace switcher it helps me remember what I am doing on which workspace. I am not sure how many users are separating the different groups of tasks on different workspaces but if I am doing it there should be some others:)
* Unfortunately I am not convinces the new panel as presented is such a good idea. First of all using only icons makes it bigger right away and while the screens get bigger and bigger (more like wider and wider) the largest screen I have access to is 1680x1050 (which I believe is not custom on many laptops, the most sold laptops are 1280x800), so from those 800 pixels one will have to sacrifice at least 28 pixels for icons. In my case at least 32 or even 42 so that one can actually see the icons and recognize them without waiting for a tool tip to show up. One thing that can help is arranging the icons always in the same order so that the user will eventually learn which icons is which in the row, but this is not user friendly. It does not seem like much, and I really need that much pixels only with the web browsing (most web developers restrain themselves to the 1024 width boundary but one will always need to scroll down and the more space you have to display information without scrolling back and forth the better). Auto-hide makes the panel's task management function hard to use (because one will have to first go with the mouse to the hot spot so that the panel will be displayed and then find his way to the icon he/she needs, let's say that DND is also involved and that 5-6 firefox windows are spread all over the workspaces but displayed with one icon, then the steps become even more: start the DND, go to the hot spot, wait for the panel to show, find the firefox icon, hover over it, find the window in the displayed list, hover over it and wait for the window to show up, then drop the dragged item. Does not sound simple and doable to me. And while on the DND issue, current task manager in gnome panel also allows grouping windows but DND is completely not working if this is on - I can stay with my dragged item forever over the group icon the list of windows is never shown to me. I did not bother to fire a bug because I do not use the panel for task management any more. For the DND issue I will suggest something else:
* we know the desktop is not a place a DND can finish (because it is no longer managed by Nautilus) and there is one and only case - when we want to add a new desktop application, so we will need to know what is dragged, but this is doable.
* because we know the desktop is not where the DND can completes and because the user might want to drop the item in another visible window we might want to wait for the user to stop the motion over the root window i.e. not over another window that can accept the DND (for the appropriate timeout) and pop up a new window with the windows list - this is much more sane than having the user to go to whatever corner like it is now done with compiz Scale/Show desktop(and remember, there are four, each one with different use, all windows, all windows from current workspace, all windows from the same app that is currently active.... this is too much!) plus with those bigger and bigger screens getting to the corner might involve too much motion (imagine what it will be if the touchpad/trackpoint is not that responsive / lower acceleration - the user might even not be able to get to the corner if tapping only is used (i.e. the button 1 is not pressed thus the user cannot lift his finger but he is still not reaching the corner of the screen just the corner of the touchpad). The windows list should be grouped by application but should always show all windows we do not want to involve modifiers to keep it simple for the user. Once the new pop up is presented the user can position the DND over the window desired (should be small icons with at least some text) and stays on it for the timeout (which should be the same as now I guess) the window should be selected and revealed. Simple:)
Finally the proposed panel is hosting the starters and the tasks and the tray icons are large. But lets say the user is stuck with the 1024x768 display (like me on my thinkpad X61), the space between the icons on the proposed panel is too much, 10 windows and the panels should either shrink (thus making the icons even smaller) or should go out of the screen (thus hiding some icons). The panel task manager should keep all tasks available even those that are not on the same workspace, especially if the workspace switcher does not display the task icons like in your picture.

Of course I can be completely wrong, those are not my dreams and desires for gnome 3, those are my usability concerns from my personal point of view and use patterns.

And thank you for your work and for your time, I really appreciate the best looking engine ever (can't wait for the modern switch in nodoka).

Martin said...

malwkgad, thanks for your comment. I have to aree with most of what you said. The new panel idea is basically based on the fact that by joining tray, application launchers and taks list we'd saved a lot of space and removed some unneeded duplicity. I am also not and usabilty expert so my idea might not be the best one can develop ;-)

And I also totally forgot about DND, since I usually DND only between nautilus and various media players or menu and terminal or gedit... It would definitely needed to be thinked more throughoutly if anyone were to implement my idea. Probably DND would work same way as it works now with app launchers + there would be the additional option of selecting either a new window to be used for it or dropin into current window (i.e. staying for a while above the selected window would bring it to front and you could drop into it). Note that basic hoover actions over applets would need to instant in order to not hinder your speed.

As far as the space goes, I optimised the icon sizes/space between icons for my usage case - i.e. displaying in window list only apps on current desktop, 1280x800 display... There would surelly need to be a way to fit more icons if there is a need (like making them smaller, or making them slide in/out when hoovering right/left part of the dock).

As for the workspace switcher, I forogot to put there the epiphany window (and possibly other windows on other workspaces) partly out of laziness, but it would definitely need to be there. I also use it for DND windows between workspaces...

Martin said...

I'm totally with you on the desktop being an active place with little widgets and stuff, rather than a stagnant little collection of icons. I even posted an idea on brainstorm, which you might like to vote for (currently most people are against it; maybe because my initial idea of it behaving like a file manager is too strongly proposed), or maybe add a new solution with the things you mentioned.