2012/09/24

A Desktop Environment for Me

I spent the last few days playing around with the gamut of desktops from lxde, xmonad, xfce, cinnamon, unity, kde, and gnome 3.  Given I have experience with Windows from 95 to 8, and Mac OS from 8 to 10.7, I can't help but feel there is still no desktop I like.  So I'm going over what I like and dislike about various DEs, what can be improved, what works, and what to do better.  As a collective thing.

Firstly, I have a mixed bag of needs - as a developer, I need the superkey -> enter command -> enter executable behavior of application starting.  I think the start menu is a "solved" problem - cached file search using a background FS parser.  It isn't fit for use on enterprise servers on any such thing, but you can isolate that just fine as its own binary with RPCs or file IO between running binaries.

The start menu is such a solved problem, I feel, that it would be appropriate to decouple it - any desktop that suits my needs would probably have hover context menu generation that is specialized enough to facilitate the behavior of the traditional start menu anyway.  It could just be another application that behaves like any background process and simply minimizes itself rather than closing whenever it is sent to the background.  Since this theoretical DE supports Windows 7 or Unity style hover frames showing the context of the window (except like I said, it is over-ridable with application specific features, such as the start menu behavior) the actual application is only a hover frame of the panel.  But it can still be an independent binary developed on its own, with diverse start menu applications (may I be so brazen as to deem thee "homes") with system level keyboard associativity with the system key (usually the windows logo... blah). 

So this conceptual independent start menu-esque application can stand on its own, independent of the panel and rest of the DE, and operate only as a hover context box of the panel api itself, supporting system search in its background processes, arbitrary command execution and searching (which can also be an independent application this start menu uses as its search protocol, and would launch a graphical instance if there is no command match and enter is hit).  Windows 7, Unity, and Cinnamon all pretty much have this same idea in different forms (albeit Unity's launcher is extremely stripped down but has complex search facilities the others don't).  Since it is tangental, I'd call this good enough.  The rest is a burden of the panel.

The panel is a problem nobody has done right, I feel.  Some bare essentials - it needs to be a modern dock, not a bar of instances of applications (thats what the alt-tab menu is for) but with hover over exposure to the instances (a la Windows 7) because I find a lot of click happy general users love that feature.  I like it too when I'm one handed eating something or what have you.  Since we already brought up the hover contexts for the start menu, this facility really is the killer feature of this whole DE - the hover contexts need to be verbose enough to allow arbitrary embedding of application contexts in these hover frames, while having default behavior of just showing screen captures of the active windows or just a listing of window titles.  Docky has something similar when you right click, and that is just a mouse event change.  Docky has its own faults I'll discuss later.

The panel needs to be able to hold anythingBig emphasis there.  It is a HUGE disconnect for everyone I know, from hacker ninja to my grandmother, who finds random things (I can drop folders, but not movies?  Why can I only put applications from X menu on this bar?) to have arbitrary files in the system be rendered unrecognized by such a launcher.  The default behavior isn't even complex - just open it with whatever the OS proper has designated as the default application.  After all, folders are just special media files for the window manager to open and display.  The desktop is a folder that is always open without borders.  Executables are still forked by the launcher and thus it "opens" the executable itself.

I feel like we know by now that icons are all you really need.  For the sake of options, I would imagine having the ability to show text would also be pertinent for this system to be "perfect".  So you could have icons || text (not icons ^ text).  You would be able to have this dock centered, screen filling, and be vertical or horizontal on top or bottom.  Applications would also need to be able to override their own icons so you can have clock behavior.  The principle of an object existing on the dock and having arbitrary contents, hovers, and behavior if specified, with traditional defaults I feel is the root of this problem.

Oh, and you need drag and drop.  XFCE doesn't have it (at least by 4.8 default) and that is just silly.  The panel should feel like an extension of whatever is on the desktop with rich behavior.  When you overflow, it should just allow mouse wheel scrolling of the bar with up arrows at the top and bottom (that naturally and fluidly disappear at the absolute top and bottom) and you should be able to not only pin application icons to this panel but pin them to a position so they are fixed (ie, you don't want to scroll your clock / start menu, or maybe you do - you don't always need the clock and on a small screen could just scroll to see it).

One problem this doesn't solve is notifications panes, but that itself could be a mouse-overable icon of its own.  Maybe even have the ability to by API add icons that are 1/2 normal size so you can stack smaller icons a la Unity, Windows, Cinnamon, KDE tray with context menus instead of just default opening.   Icon scale seems like a logical addition to having arbitrary icons in the first place, though.

The downside to this theory is that it really burdens an application developer to tightly couple with the desktop, which never really works because you are starting small and everyone else is already big.  So you need to understand already present standards and offer even more feature richness if developers want it.

I just want a bar on the left side of my screen, with all my applications I want pinned, plus media files, folders, etc if I want them, that I can mouse over to view, click to open, and an abstract enough hover pane and click interaction system that you can write a start menu as an application with this hover capability.  I think that is really where we are going though, for a certain reason.

I feel like Android and the traditional desktop are nearing a point where they can be merged.  And not with screen filling boxes of random crap like Windows 8.  The ideal of a bar of arbitrary operating system goodness sitting on the edge of the screen is a pervasive notion every single OS has.  They just argue what to put there.  But as Android devices become powerful multitasking systems in their own rights, people will want the rapid application switching behavior that bred the dock and panel of the modern desktop in the first place, and this concept is already somewhat in place with the mixture of home key and active applications context behaviors.  They can just take the home and running apps and just put them adjacent them (the desktop button and the alt-tab menu are not new ideas, but an alt-tab application launcher is useful for those who don't understand it).

I'll post my opinions on the desktops separately so I can just point to whats good and bad about those.

No comments:

Post a Comment