GNOME Shell A design for a personal integrated digital work environment William Jon McCann <[email protected]
> <[email protected]
> Jeremy Perry <[email protected]
> .com> 14 November 2009
Introduction The purpose of this document is to establish goals and intentions, provide high-level guidelines, and create a framework framework for dialog and act action. ion. We hope it will will be used to enable cooperation cooperation and facilitat facil itate e innova innovation tion.. This is not not an end pro product. duct. We expe expect ct it to be a st stimul imulus us and cat catalyst alyst for for discussion. While it may not keep pace with tthose hose discussions and conversations, we expect iitt to evolve as naturally as they do. Like many conversations we expect that it may be a littl little e noisy and confusing at first. Eventually we will synthesize synthesize these ideas, notes, and chatter into a cohes cohesive ive story. But we'll need your help to do it.
Problem Definition The GNOME Project relea released sed version 2.0 of the GN GNOME OME Desktop in June 2002. It was an important milestone. milestone. In the years since then, the developer community community has continually continually and incrementally improved the experience while learning a great deal about what worked and what didn't. The entire personal computing ecosystem has been changing too - partl partly y due to a number of new and disruptive disruptive technologies. While we won't dwell on the particulars particulars of those changes it is important to note that there is a growing consensus in the GNOME developer community that we needed to make a leap forward in order to fix many of the flaws in our designs and to generally bring a lot more awesome into the user experience. To do this we need to to take a step back and evaluate. evalu ate. What should GNOME GNOME feel feel llike? ike? How can iitt mak make e me more effec effective? tive? How wil willl it delight delight me? The GNOME Shell effort may be the keystone for const constructing ructing answers to these questions. questions. In this document we'll propose a design for a number of key areas of the core GNOME user experience. Personal computing computing activi activity ty management is not a solved problem. Yet.
Principles It may be useful to highlight some of the principles that we wish to guide us as we approach the various challenges in a new design. The intention is not tto o make an exhaustive exhaustive or excl exclusive usive list but merely to indicate a few standards that may be particularly relevant or interesting for this purpose. For more gui guidance dance on principles principles for good design please refer refer to some of the sources in the gnome-shell Reference List. Take responsibility for the user's experience Principle of non-preemption "Individual interactive programs operate in a non-intrusive manner with respect to the user's activitie activ ities. s. The system system does no nott usurp tthe he atte attention ntion a and nd prero prerogativ gatives es of the us user. er. A program program responds to the user's stimuli, but then quietly retains its context and logical state until the user elects to interact with the program again..." From Deutsch & Taft 1980 "Requirements for an experimental programming environment" "...Human attention is the most valuable and scarcest commodity in human computer interaction." Horvitz, Jacobs, Hovel Attention-Sensi Hovel Attention-Sensitive tive Alerting Principle of Least Astonishment Astonishment - or "uniformity in command interface" - From Deutsch & Taft 1980 Requirements for an experimental programming environment Design a self-teaching interface for beginners, and an efficient interface for advanced users, but optimize for intermediates Don't unnecessarily rely on (especially mechanical-age) metaphor Less is More - Reduce Visual, Memory, Intellectual, and Motor work (and complexity) Be considerate and forgiving The act as a mediator - Betechnology the vehicle, should not the destination - Strive for transparency
Goals Address problems of Focus, Attention, and Interruption • Define Define foca focall and periph periphera erall region regions s • Minimize Minimize di disrupt sruption ion and fa facili cilitate tate uninterr uninterrupted upted focus focus • • • • •
Reduce Reduce admini administr strati ative ve debr debris is Make it e easy asy tto o vis visuali ualize ze what what II'm 'm doing doing now Make Make it eas easy y to do some somethi thing ng n new ew Make Make it easy easy to to do w what hat I do m most ost ofte often n Make it e easy asy tto o rec recall all a previous previous activ activity ity
Address problems of Storing, Finding, and Reminding • Avoid Avoid ment mental al mod models els wi with th categori categories es and hierarc hierarchies hies • Obviate Obviate the need for for expli explicit cit naming, naming, sorting, sorting, filin filing, g, or categorizi categorizing ng Manage Complexity and Encourage Flexibility • Al Allow low the the exp experi erienc ence e to ada adapt pt to th the e usag usage e • Work as well well for the user tthat hat uses onl only y two appli applicatio cations ns and the one that that uses tens on multiple workspaces • Core concepts concepts shou should ld scale to capab capabilit ilities ies of device devices s other than "desktop" "desktop" computer computers s • Must be be usabl usable e with a touch or single single but button ton in input put dev device ice • Must be usable usable in when when rrotat otated ed or resi resized zed Delight the user • Better Better def default ault e experi xperience, ence, more co consist nsistency, ency, more fun! fun! • Cohere Coherence nce leads leads to com comfor fortt ◦ Incoh Incoherenc erence e - inco inconsist nsistency ency - confus confusion ion - discomf discomfort ort ➤ judgements of incompetence • Prom Promot ote e a brand brand ide ident ntit ity y • Be aes aesthe theti tical cally ly ple pleasi asing ng • "Quality "Quality isn't isn't job one. one. Bei Being ng totally totally fu fucking cking amazin amazing g is job one." one." gapingvoid.com • Provide Provide a consistent consistent experie experience nce for all us users ers so that kn knowle owledge dge may be shared shared and expectations may be stable and deterministic • Provide Provide a few isolated isolated but hi highly ghly exp expressi ressive ve place places s for personaliz personalizatio ation n
Non-Goals Not intended to address task-based or other high-concept, unified computing models at this time Not optimized for multiple concurrent users If possible, do not require custom "Shell-aware" applications
Components For purposes of discussion we'll try to break down the overall design problem into a number of key components. We'll try zoom in on and detail some specific behaviors while while we keep an eye on the overall picture to ensure consistency and cohesion. Here is a schematic view of the main scene:
The main scene has three primary, normally visible, areas for interaction: the Top Menubar , Windowing Area, Area, and Message Tray. Tray. In addition addition to these these there is another another tha thatt is not normally normally visible, the Activity Switcher (also Switcher (also known known as the Alt-T Alt-Tab ab Swit Switcher) cher).. We'll We'll now explore explore each of these in some depth.
Figure showing Activities item, item, Active Application item, item, Clock Clock,, System Status Area, Area , and User item. item.
The Top Menubar is a horizontal horizontal strip across the entire top of the primary screen. It is the primary interface for System and Shell related functionality. Reasons for using the top of the screen include: • Menus a and nd men menu-li u-like ke over overlays lays look look bet better ter when when they drop down down bel below ow the button button • To diffe differenti rentiate ate the Acti Activiti vities es item from the the Window Windows s Start butt button on in both behavi behavior or and appearance (in part to avoid uncanny-valley type issues and to avoid a sens sense e of unfulfill unfulfilled ed expect expectatio ations) ns) • At lea least st in the w wester estern n (RTL-TTB) (RTL-TTB) w world orld th the e top and left left of the the interface interface is the most most prominent. promi nent. This prime prime real estat estate e must have a considered considered desig design. n. • The defaul defaultt GNOME co configu nfigurati ration on already already uses a top panel for primary primary interactio interaction n • Part Particula icularly rly on mobile mobile device devices, s, a top "panel" "panel" is be becomi coming ng stand standard ard • Clos Closing ing max maximiz imized ed appli applicatio cations ns is not b behavio ehaviorr that is wor worth th optimizi optimizing ng for (b (by y taking advantage of the large upper right ttarget arget area) In multi-monitor configurations, it should only be displayed on the primary monitor. Secondary monitors are typically used as auxiliary displays unless they are clones of the primary. The menubar should contain the following items: Activities Activities,, Active Application Application, Clock Clock,, System Status Area, Area, and User . Each of these should look and behave like a menu item in a single single menub menubar. ar. Openi Opening ng the menu menu for one item item sho should uld close close another. another. Each s should hould h have ave a tooltip and prelight on mouse-over. It is recommended that the visual design of the Top Menubar should reinforce the idea of firmness in order that it act as an anchor and landmark when zooming out to the Activities Overview. At login time time the menubar should slide slide in from the top of the screen. Barriers should be present at the left and right ends of the top bar that extend vertically from the top of the screen the the height of the bar. These barriers should capture the mouse point pointer er and prevent it from moving laterally off the visible screen. We'll now look at each of the elements of the Top Menubar. Hot corner The upper left corner of the Activities Item and the screen should behave as a "hot corner." Moving the pointer pointer into this this area should automatically activate the Activies Item. Item. This offers a few advantages:
• • • •
Allo Allows ws for for qu quickl ickly y accessin accessing g functio functionalit nality y Elim Eliminate inates s need to aim and cl click ick on on target target bu button tton May b be e per perceive ceived d as more effic efficient ient by users users Obvi Obviates ates the need need for "dwel "dwelll click click"" for input devices devices wi without thout button button cl click ick functionality (eg. head/eye tracking pointers) • May fac facilit ilitate ate drag-anddrag-and-drop drop into into the Ov Overvie erview w (if necessar necessary) y)
Unlike many other forms of hot corners or edges this will likely not be subject to inadvertent triggering for a few reasons: • The corn corner er in whi which ch it resides resides is a alread lready y "owne "owned" d" by a control control for identi identical cal functionality • Windo Window w capti caption on controls controls are loc located ated on the opp opposit osite e (right-hand) (right-hand) side side Once the Activities Overview has been triggered using the hot-corner, the pointer should have to move at least 5 pixels before the corner can be triggered agai again. n. Similarly, clicks on the Activities Item should be ignored ignored for a short time time after the hothot-corner corner is activated. These are necessary in order to "de-bounce" activations. When the hot-corner is used in the Overview it should close the Overview mode. The hot-corner is only active on the primary display and only when the Activities Item is visible. Activities Item The Activities Item is the primary mechanism for getting things done in GNOME Shell. Clicking this item will bring up the Activities Overview. It is essential that this item have the affordance of clicking. Button-like hints hints or a downward pointing point ing arrow arrow may be h helpfu elpful. l. When th the e Overview Overview is open open the Activi Activities ties IItem tem should should appear to be "pressed in" to reinforce the relationship between the Item and the Overview. Clicking on the Activities Item while the Overview is shown should cause the user to leave the Overview and return to the most recently used application or workspace.
Active Application Item The active application must display a menu item positioned directly to the right of the Activities item item on the Top Menubar. This item has a ffew ew purposes. It allows the user to unambiguously identify the active (ie. focused) application without having to rely on subtle and idiomatic visual style hints on the application windows that may not be easily seen due to impairments or environmental factors, such as direct sunlight. It offers functionality functionality that is relevant to the application application as a whole. This is in contrast to the menus offered in individual windows which should only show operations that affect the contents of the the window iitself. tself. For example, a window menu should offer the option tto o "Close" the instance but the application menu should offer the option to "Quit" (ie. close all related windows). It also provides a form of application launch feedback (also known as start-up notification). When an application is launched, the Active Application item should appear immediately.
Since the menu itself may only be populated with actions after the application has fully loaded a placeholder or option to forcefully quit the application may be presented. Clock Tells time and stuff stuff - it is a clock - probably di digital. gital. When it is cli clicked cked a drop down slide should appear. The slide shoul should d be able tto o solve at least the following problems: problems: • Wh What at d dat ate e iis s toda today? y? • When is a futur future e dat date e in relation relation tto o today? today? • Wha Whatt day of th the e we week ek is a future future d day? ay? For this the slide should show at least the current date and a calendar view of the current month with access to other months. Open Questions: • What else should should we hav have e in tthe he drop drop down slide slide? ? System Status Area The System Status Area is a place where System Status Icons represent the status of the system to the user. This is not an area that is variously called the Notification Notification Area or System Tray and should not be used by applications (foreground or background) to indicate their status. This distinction distinction is necessary to ensure the entire top of the screen is designed properly, system owned and coherent, able to be modified or extended, scale well to smaller form-factors, and not become a dumping ground or high-profile branding opportunity. Examples of valid System Status Icons include indicators for: audio volume, network connection, and battery power. Status icons should use a style that is consistent with the text and menus present on the top panel.. In general, panel general, these iicons cons should should us use e colo colors rs in a consid considered ered an and d measu measured red wa way. y. Icons and indicators must not change rapidly or ab abruptly ruptly (not more than once a second). Icon changes should transition smoothly. Status icons should not be considered primary interaction point points. s. Any action that is available through a status iicon con must also be accessible ffrom rom elsewhere in the desig design. n. For example, network access must also be able to be configured through the system preferences / control-center. control-center. So, status icons must not assume that the user can interact with them. them. They should should on only ly expect expect th that at the they y will will be used used to indicat indicate e status. status. There are are a few reasons for this: • On smal smaller ler form form factor de devices vices iitt may be difficult difficult tto o interact interact wit with h small icons icons • When a high re resolut solution ion poin pointer ter is not ava availab ilable le it may be difficu difficult lt to interact interact with with small icons • When th the e user has a disabil disability ity the the icons m may ay be unusa unusable ble for iintera nteraction ction • Funct Functional ionality ity mu must st be able to to be found by a and nd be accessibl accessible e to someone someone usin using g desktop or control center search tools Like all Top Menubar items, the icons should behave as if they are part of a menu-bar. The order of system status icons should be (from left to right): transient or optional indicators, universal access, language/keyboard/region, audio volume, Bluetooth, network, battery and power.
User Status Menu The User Item provides access to personalization, customization, and status change options. The label for this menu item should be the full name of the currently active active user as well as an indication of the user's cur current rent status. Status is one of: • Available • Idle • Busy • Invisible The menu should offer the opportunity to set the status to one of available, busy, or invisible. Idleness should be automaticall automatically y detected by the system or set automatically automatically when the screen is manually locked. When the user sets her status to Busy the system should avoid interruptions unless they are of critical severity. The menu may optionally offer offer the user the opportunity to set a status message. This may be something like "going to buy beer", "watching a movie", or "missed Lost - no spoilers!" The menu should also offer the opportunity to access user's "profile" information and the system preferences. It should also allow for locking the screen, and exiting the s session. ession. Open Questions: • Is th this is a good good pl place ace tto o open my Co Contact ntacts s lists? lists?
Various studies [citations needed. Gonzalez or Horvitz etc] have found that messaging (in the broadest sense) accounts for a significant percentage of task interrupti interruptions. ons. As we connect to an increasing number of information sources, managing disruptions has become a real challenge. challenge. The assess primaryan goal of the Tray is is to provide theof user with th enough information to quickly event butMessage limit the severity and duration the wi preemption. Another important goal is to allow but not compel the us user er to respond to the event. The tray also provides an important reminding function for messages that the user has deferred addressing. More specific goals include: • permi permitt the user tto o stay focus focused ed on tthe he pri primary mary task • provi provide de aware awareness ness of new notif notificati ications ons • rem remind ind for unseen unseen mes messag sages es • direc directt attentio attention n to high high priority priority messages messages and alert alerts s • un unob obtr trus usiv ive ed dis ispl play ay • provi provide de a uniform uniform inter interface face for message messages, s, noti notificat fications, ions, and and alerts • allow the us user er to contr control ol the the informat information ion di display splay Notifications are events that are ephemeral and do not require direct actio/n or response. Messages are events that either require or imply a response or should be acknowledged in some way. Conceptually each each Message comes from a Message Source. Sources of messages may include, at the user's discretion: e-mail, calendar appointments, instant message chat, stock market data, weather advisories, and system alerts. In order to not compel the user to action all Messages (events that request or require action, response, respon se, or some form of ack acknowl nowledgeme edgement) nt) shoul should d be queued for the user. or Notifications and Messages that do not require acknowledgement or that have alternate indicators should not be queued (eg. A low battery warning does not require a response and the battery level already has an indicator in the System Status Area). Messages may have one of the following states: • New • Seen • Responded • Resolved Message Sources may have one of the following states: • Empty The design of the Message Tray should support four modes of operation: 1. Hidde Hidden n mode mode - tray is h hidden idden off the screen screen 2. Noti Notificat fication ion mode - sho shows ws a one line sum summary mary of the the notif notificati ication on or message message along with an icon 3. Summ Summary ary mode - a peri periphera pherall aware awareness ness (or lo low w detail) detail) mode showing showing an icon for for each Message Source 4. Detai Detaill mode - an interacti interactive ve mode showing showing mor more e detail ab about out each Message Message Source
The Message Tray should appear at the bottom of the screen in both landscape and portrait modes (long and short axis respectively). The Tray should not appear at all for non-critical notifications notifications if the user is marked as Busy. Open Questions: • Shoul Should d a subtle ind indicati ication on appear at th the e bottom of tthe he screen screen to indicate indicate a new message when in Busy mode? Notification Mode
When a new message or notification is available, the Message Tray should slide up from the bottom of the screen in order to displ display ay the new Message It Item. em. In this mode, the Tray will display roughly the height of one line of text with a fixed width determined by the size of the screen. scree n. The Message Message Item Item shou should ld dis display play an an Icon and and a message message sy synopsi nopsis. s. After After a bri brief ef timeout, if the notification isn't activated or recalled in some way, the Tray should recede off the bottom of the screen. As it m moves oves off the screen the Sum Summary mary Mode shoul should d be displayed momentarily as a reminder function, unless it is empty. All notifications notifications should pause and remain remain visible if tthe he user actively moves moves the mouse over the tray area after it appears. It should not remain visible visible if the pointer device simply happened to be in the area when the Tray slid out beneath it. At this time time (on pointer hover) the message should prelight and have the affordance of clicking if it has a Details Mode available. Conversely, for for transient notifications with no Detail Detail Mode there there should be no affordance and no prelight. Effort should be taken to ignore clicks immediately after the Tray slides out when the user doesn't explicitly enter that area of the screen. It would be nice if the notification or tray offered the user the opportunity to enter Busy mode directly rather than have to find the option in the User menu. Urgent Mode When a time critical event or something that needs explicit action or acknowledgement occurs an urgent notification may may be used. This may be used, for example, example, to notify notify the user of an inc incoming oming phone ca call. ll. The call call may be be either either tak taken en or ignored ignored.. When the the cal calll is over the missed call notification should move into the summary area. Summary Mode
The Tray should display an iicon con for each non-empty Message Source. When the Message Source Icon is is clicked the the Source should expand to displ display ay the Detai Detaill Mode. The Summary Mode should slide off the screen after a brief time unless the pointer enters the Tray area. The message source icons should be assembled side-by-side side-by-side horizont horizontally. ally. Generally, message source icons should queue up from the right to left.
The Summary mode should be displayed when the user returns from idle or busy modes. A key difference from from existing status status icon technologies is is that Message Source icons can be removed from the Summary simply by dragging them and dropping them somewhere off the tray. Source Icons may automatically be removed from the Summary for a variety of reasons. Some include: • Appl Applicati ication on provid providing ing Messa Message ge Source is agai again n the active (foregro (foreground) und) appl applicati ication on • Appl Applicati ication on p provi roviding ding Message Message has exited exited • User has ac acknowl knowledged edged or oth otherwi erwise se handle handled d the message message out of band (perhaps (perhaps by interacting with the application itself) • Messa Message ge Source Source has ti timed med out (eg. (eg. an ack acknowle nowledged dged or previou previously sly seen c chat hat conversation) Open Questions: • Shoul Should d we have a wa way y to go directly directly tto o an applicatio application n from tthe he Summ Summary ary mod mode? e? Maybe not since some Sources are headless or daemonic processes. Detail Mode
The details mode for a Message Source displays information in a way that is appropriate for that Source. This may iinvolve nvolve simply showing an iinformative nformative message message or even al allow low the user to directly respond to an Instant Message. Instant Message applications are expected to present Message Sources for each currently active conversation. This would m make ake it easier to communicate while doing something else. And eliminate eliminate the need for for one of the more com common mon window switching tasks. tasks. The conversation message source may also aggregate IM, email, SMS, and Twitter updates for that contact. It should also provi provide de access to a full conversation log - even if the last communication was done on a different system. Open Questions: • Shoul Should d noti notificat fications ions be be "chunked" "chunked" to to limit limit num number ber of disr disruptio uptions? ns? Likely Likely imp implies lies having a way of determining urgency... Probably not worth it if you can find another way to "compress" the notifications. • Shoul Should d the tray sto stop p slidi sliding ng out in coll collapsed apsed mo mode de on subseq subsequent uent updates updates by the same application? Probably best left up tto o the individual individual application since you may want to compress notifications for the same user but not for different users. • Don't show w when hen a fu fullsc llscreen reen app app is on tthe he pri primary mary displa display? y?
• If we choos choose e to allow com composin posing g message messages s it should should only be via the Contact Contact llist. ist. The reason for this is that the method used to contact the person may depend on that person person's 's status. status. If they they are on online line - IM chat chat is th the e way tto o go. If they they are iin na meeting email may be better. Sometimes phone is best. • How d do o we ex expre press ss messa message ge pr prior iority ity? ? • Shoul Should d the there re be a spec special ial s system ystem modal type of message message? ? http: http://ma //mail.g il.gnome. nome.org/ org/ archives/gnome-shell-list/2009-April/msg00037.html • What do w we e do if the there re is a mon monitor itor configu configured red to be below below th the e primary? primary? • How shou should ld we disp display lay mis missed sed messages messages when ret returnin urning g from idl idle/aw e/away? ay?
The sidebar is an extension point for user-selected content. On displays that are sufficiently sufficiently large, it should be displayed displayed at the side of the screen by default default.. It is a container for Gadgets. Gadge ts. The sidebar sidebar itself itself may be e either ither:: expa expanded, nded, c colla ollapsed, psed, or or hidden. hidden. Gadge Gadgets ts should have both an expanded and collapsed Theyshould may bereplace entertaining, entertaifunctionality ning, functiona functional, or anywhere in between. in However, nothi nothing ng in mode. the Sidebar functional ity thatl, already alrea dy provided provided elsewh elsewhere ere in the Shell Shell - it should be auxiliary. auxiliary. Some examples examples of poss possible ible Gadgets include: • St Stoc ock kp por ortf tfol olio io • Co Cont ntex extu tual al a awa ware rene ness ss • Twitter • RSS feeds • Last Last.f .fm m rrad adio io • Music usic pl play ayer er • We Weat athe her/ r/Ma Map/ p/Lo Loca cati tion on • Eyes Eyes ttha hatt ffol ollo low w mou mouse se • Ag Agen enda da / To-D To-Do o li list st • Sti tick cky y no nottes • Sys System tem per perfor forman mance ce mon monito itor r • Di Dict ctio iona nary ry lo look okup up • A mood la lamp mp that uses uses the webcam webcam to monito monitorr the user's user's face ffor or mood changes changes and reflect them (or soothe them) in a colorful display The sidebar should not be shown in the Activities Overview workspace overview. This system should offer compatibility with Google Gadgets. Open Questions: • Si Side des s of scre screen en on only ly? ? • A fu full llsc scre reen en mo mode de? ? • How do w we e anima animate te the hiding hiding of itit when enterin entering g the Ove Overview rview? ?
The Activities Overview
A mediator. A connector. Not a destination. destination. Designed to facilitate facilitate navigation. navigation. Optimized for when spatial recognition is insufficient or has not yet been acquired. Or when the mental model model does not retain the information of what exactly is sought, what is currently active, what new activities may be launched, etc. With the availability availability of hibernation and suspend the lat latter ter becomes a serious problem. It also allows the switching activity to be mostly m mechanical. echanical. Also allows one to defer the decision to resume an activity or start a new one until sufficient information is provided. The Activities Overview is a zoom zoomed ed out summary of all the available activities. It is opened when any of the following occur: • A ha hardw rdware are m menu enu b butt utton on iis s presse pressed d • The "Me "Menu" nu" or "Windo "Window" w" (ak (aka a Logo) key is p presse ressed d on the keyboa keyboard rd • The A Activi ctivities ties item is clicked clicked in th the e Top Menubar Menubar • The The h hot ot-c -cor orne nerr iis su use sed d Landmarks and anchors are particularly important in zooming interfaces or 3D environments since they help mitigate disorientation disorientation and dislocation. So, the Top Menubar should remain in place when the Activit Activities ies Overview is shown. Transitions should also be animated animated to avoid jarring dislocations. When launching the Overview an animated transition from the currently active Workspace
occurs. To the user it shoul should d feel as though they take a step back to gain a wider view of the activity-space. activity-space. The animation should be based on a physical model to reinforce reinforce this notion (slow-start-and-stop for example).
They will also be used to indicate the condition or state the application is in. Which may be: • nomi nomina nall st stat ate e • acti active ve ap appl plic icat atio ion n ◦ one window ◦ two wi windows
• • • •
◦ mu mult ltip iple le win windo dows ws mous mousee-ov over er/h /hov over er foc focus us matc matche hes s sear search ch rres esul ultt has has messa essage ges s requ reques ests ts atte attent ntio ion n
Behaviors: • Clic Clicking king on an applic applicatio ation n icon that is not already already running running launche launches s the application application on the currently active workspace • Clic Clicking king on an appl applicati ication on icon wit with h 1 or more open win windows dows bri brings ngs the user to to the most recently used window for that application • Clic Clicking king and hol holding ding on an applicat application ion icon will will bring bring up the Appli Applicatio cation n Icon Menu • Right click should should be a s shortc hortcut ut to the A Applic pplication ation IIcon con Menu Menu? ? • Middl Middle e click s should hould be a shortc shortcut ut to ope open n a new instance instance of an applic application ation • Contr Control ol cli click ck should should be a short shortcut cut to op open en a new ins instance tance of a an n appli applicati cation? on? Application Icon Menu Menu • When the me menu nu is displ displayed, ayed, smoothl smoothly y zoom into the the currently currently open w window indows s for the application in question • The men menu u it itsel selff shoul should d di displ splay: ay: ◦ A list list of the the titles titles of the the currently currently open wi windows ndows ◦ An option option to create create a new window window/ins /instance tance of the the application application (t (termi erminology nology
• • •
be to same as "Add in Application Menu) ◦ should An option option either either "Ad d to favo favorites rites" " or "Remove "Remove from favori favorites" tes" As the user m moves oves through through the lilist st of windows windows in the me menu, nu, identify identify the the window iin n the Window Mosaic Selector (using highlighting) If the ini initial tial button button release release is over an it item em in the menu, menu, activ activate ate that item item If the ini initial tial button button release release is over tthe he appli applicatio cation n icon, keep keep the menu open un until til an item in the menu is selected or an area outside the menu or Window Mosaic Selector is clicked. If a drag is ini initiat tiated ed whil while e the menu is being being shown shown,, close the menu menu and begin th the e drag operation Windo Window w items iin n the menu should should have an ico icon n if it is different different from from the applicat application ion icon
Applicat App lication ions s Well
The Applications Well contains a set of Application Icons that represent favorite, frequentlyused, or currently running applications. The behavior of the Applicati Application on Icons is largely the same as described described above. With the addition of the following drag and drop behaviors. Dragging Application Icons within the Applications Well will spatially re-arrange applications. An animation should be used to indicate the shifting icons and make it clear where the icon will be dropped. Dragging Application Icons to another position or dragging a window from the Workspace View into the Application Well will move the application icon to that position where it will remain until moved or removed. This will implicitly implicitly add an application application to the favorites favorites list. Dragging Application Icons onto a workspace will start the application or a new instance on the selected workspace. While draggi dragging, ng, a cursor indicator indicator should cue the user. To remove a favorite application the user can click and hold and choose "Remove from favorites". The Well heading should include a button to access all applications. See All Applications. Applications. Open Questions: • Wha Whatt happe happens ns w when hen it fil fills ls up? up? • Do we ha have ve a llim imit it? ? • Shoul Should d also be able to lau launch nch docum documents ents in a spec specific ific applica application tion by dragging dragging th the e document icon onto an application icon?
When the Application Well does not contain an application that can perform the desired task we expect the user to cli click ck the "More Apps" button (may (may be an ar arrow). row). This will provide access to all the applications available on the system and allow the user to explore online software catalogs. The default display sh should ould mimic the fform orm used in the A Application pplication Well in order to reinforce reinforce the idea that apps may be dragged over to the Application Application Well. Well. It should not be necessary to provide a text description for the application in the default view since the applications should be either be known to the user or have names and icons that suggest their function. The box may grow as necessary to fill the same area as the workspace view.
The Activities Overview search should be optimized for finding and starting activities. Applications should be matched first. The best match should be selected in order tha thatt the return key can activate the item. Search should be able to find items in (but not limited to): • Ap Appl plic icat atio ion n list list • Doc Docume uments nts on tthe he lloca ocall syste system m • Mus Music ic and and vi video deos s on tthe he lo local cal syst system em • Images • Contacts • Web hi history Providers of each type of search may augment the display of each item with additional information. For example, audio items may display information information about duration, album, and artist. Items should also be easily inspected. A display of details may appear when hovering hovering over an item. item. [or a anot nother her w way] ay] It may support extending the search to online information providers such as search engines, Wikipedia, or dictionary services.
The search mode is exited by either selecting an item in the search results or clicking the close button in the search text box.
Workspace View / Window Mosaic Selector The goal of the Workspace View is to identify and select windows in their running context. In order to facilitate this, each Workspace will present the application windows associated with it in the form of a Window Mosaic Mosaic Selector. The Window Mosaic Selector has the the following properties: • All non non-uti -utility lity windows windows running running on the worksp workspace ace should should be appear in a nonoverlapping, tiled array • Util Utility ity and dock dock windows windows sho should uld not a appear ppear in in the win window dow array array • Windo Windows ws shoul should d appear as a scaled scaled down ver versions sions of th the e running running applic application ation window (complete with live updates) • It is extr extremel emely y important important that as much much of the fidelit fidelity y of the original original wind window ow be preserved in the scaled version in order to facilitate identificat identification ion • An appli applicatio cation n icon shou should ld appear over over the low lower er right corner corner of each each scaled window • A text llabel abel for for the wi window ndow sho should uld app appear ear as a caption caption unde underr the window window on pointer hover • A close but button ton should should appear above above the righ rightt top corner corner of the wind window ow previ preview ew on pointer hover • Empt Empty y workspaces workspaces sho should uld have a butt button on just unde underneat rneath h aligne aligned d to the righ rightt that allows them to be closed • Mini Minimized mized or hidden hidden win windows dows should should appea appearr in this vie view w but may be sequester sequestered ed in a separate part of the space or with a slightly different appearance • One or mor more e of the follo following wing lay layout out str strategi ategies es may be used (must (must be test tested): ed): ◦ Taskpo Taskpose' se' Wi Windo ndowRa wRank nk sty style le (PDF) ◦ predictabl predictable e and stabl stable e positi positioning oning al algorit gorithm hm in order tto o engage spat spatial ial cognition ◦ motion motion is minimized minimized du during ring the zo zoom-ou om-outt trans transitio ition n to the Activiti Activities es Overview from the active workspace Open Questions: • Allo Allow w control+cli control+click ck to select multiple multiple wi windows ndows to be non-overla non-overlapping pping (layout (layout assistance) • Use met metrics rics such such as time foc focused, used, num number ber of focus focus switc switches hes to determine determine size size of window image • Zoo Zoom m in on on wi windo ndow w wh when en ho hover vering ing for a cer certai tain n ti time? me? to full full siz size? e? and inte interac ractiv tive e if holding a key down • Does iitt make any sense sense to ha have ve multipl multiple e empty empty work workspaces spaces? ? • When the la last st wind window ow on a workspace workspace is clos closed ed should should we return tto o the overview? overview?
Recent Items and History
[NOTE: This more research and This section is only a set of notes so far. Needs much more design] Filing, finding, reminding, archiving, and summarizing
Open Questions: • Epi Episod sodic ic ra rathe therr than than semanti semantic c memory memory • Limi Limitt or restrict restrict exposur exposure e to filesys filesystem tem and organ organizati izational onal hier hierarchi archies? es? • Eas Easily ily ident identif ifiab iable le ret retrie rieval val cues? cues? • How tto o handl handle e Ephemera Ephemeral, l, Wo Workin rking, g, Archive Archived d sets? sets? • (rece (recent, nt, ?, cabi cabinet?) net?) or (today, (today, this this week, the the past?) Add Add Tomor Tomorrow, row, Ne Next xt Week, Week, Someday? for reminding. • All other sets are on only ly a ""view view"" of tthe he archive? archive? So using using a d deleti eletion on metaphor metaphor may be wrong because because you reall really y just want it to vani vanish sh from the pres present ent view. view. So labeling label ing or tagging? tagging? "Move tto o archi archive?" ve?" • Add a workin working g set are area/t a/targ arget? et? Or p pin in tto o Rec Recent ent Item Items.. s.... Or need need m more ore s spac pace.. e.... Not physically present - moves to archive? • Is spa spatial tial memory memory useful useful for for long long ter term m use? Auto Automati matic c layout layout appropri appropriate ate ffor or sho short rt term use? • Shoul Should d link the "encod "encoding ing condi conditions tions [of event] event] and the ret retrieva rievall environment" environment" Tulving, Thomson 1973 • Show preview preview of document document iin n the applicati application on it was used in in last? last? workspace? workspace? • Prev Previews iews for al alll typ types es of file files s (audio (audio video video ttoo)? oo)? • Sen Sense se of nei neighb ghborh orhood ood / proxim proximity ity • Engag Engage e se sense nse memory? memory? visual visual,, auditor auditory y cu cues? es? • Eng Engage age ass associ ociati ative ve mem memory ory? ? ◦◦ rel relati referr errer er timations e onship / dahips te s / ref ◦ pl plac ace e (home (home/w /wor ork/ k/et etc) c) • See See wh what at w was as u use sed d at the the sam same e time time? ? Bund Bundle le? ? • Maybe pr provide ovide new ""file file save" save" dialog that that shows shows a large preview preview of the fi file le (maybe (maybe even allows changing the preview - flipping to another page or a later frame in a movie) and allows the application to provide context cues to be associated with the file. The context fields fields will be prefilled by the appli application cation but allow allow the user to override or clear clear them. Examples include include:: title, from-web-site, from-referrer-page, from-referrer-page, from-email-address, summary, author, file-type, et etc. c. Some of these these fields ar are e filled by the application that is saving the file and some are detected from the file-type handler. It may also also allow tthe he file to be tagged wit with h a user-defi user-defined ned set of tags. Recently used tags and especially tags that were recently used in the current application or workspace shoul should d be suggest suggested. ed. It should not expose the filesystem hierarchy to the user. It should be able to detect duplicates before saving. In the case of a duplicate it should allow the existing information to be supplemented or revised. Should allow the file to to be placed into agenda slot slots s or just stored in the the archive. • Shoul Should d the "file "file-open -open"" dialog sho should uld allo allow w for sear searching ching and sc scannin anning g based on the attributes stored at filing time? • Maybe have the a abili bility ty tto o add notes to do documen cuments ts a att any time. time. Maybe even have an item on the window titlebar to turn "notes" on and off. Probably shouldn't be stored in the file or the application itself because they aren't really properties or attributes of the object - they belong to to the user, the user's tho thoughts. ughts. Maybe visualized as a layer over the window. Would it also be useful to pin notes to specific parts of the document document? ? Even allow freeform shapes - I'll c call all these "scribbles "scri bbles"? "? This may may even allow a form of collabor collaboratio ation. n. Send ffile+n ile+notes otes iin n an email or an IM chat? Default to using the person the file was received from. from. • Impor Important tant tha thatt notes not be pa part rt of of the obj object ect itse itself lf because because the "document "document"" may not even be writable by the user or even exist in any concrete form? form? Also for privacy reasons... The shell should make a snapshot of the w window indow at tthe he time of the note.
• Shoul Should d provid provide e a mechanism mechanism for appl applicati ications ons to auto automati matically cally save save files files and perform version control (saved undo/redo)? • Inste Instead ad of delete... delete... use fforget orget? ? To remove remove from archi archive/me ve/memory mory and remove remove all linkage. • Shoul Should d open with the applica application tion last used with with
Journal Summary This his section is only a set of notes so far. Needs much more more research and [NOTE: T design] Open Questions: • Tem Tempor poral, al, his histor torica icall recor record? d? • Inclu Include de a Today fol folder der that has has a spatial la layout yout of activit activities ies and documents documents? ?
Application window window switching has to to be as simple as possible. possible. Keyboard activated application window switching is a powerful tool for intermediate and expert users on Linux, Windows, Windo ws, and M Mac ac plat platform forms. s. The She Shellll shou should ld imp implemen lementt simi similar lar functio functionalit nality. y. It may be expected that novice users will use the overview until they have been trained to use the Application Switcher Switcher keyboard shortcut shortcut..
• • • • •
Some of the differences from the existing GNOME switcher should include: Use an applic applicatio ation-cent n-centric ric model model with one icon per appl applicat ication, ion, but provide provide a way to switch to any specific window Alig Align n this sw switche itcherr with tthe he layout layout norm norms s and visual visual style style of the shell shell Suppo Support rt fast sw switch itching ing to any running running appl applicati ication on regard regardless less of wo workspa rkspace ce Add a way to prev preview iew or im improve prove the the useful usefulness ness of sel selected ected window window highligh highlighting ting Allo Al low w mous mouse e se sele lect ctio ion n ◦ Two Two-ha -hande nded d use is m more ore effi efficie cient nt ◦ Avoi Avoids ds slip pro problems blems rrelate elated d to tab navigating navigating past past the desired desired window window Characteristics • The sw switche itcherr shou should ld be prese presented nted as as a screen screen overla overlay y • The overl overlay ay should should be positioned positioned cent centered ered ver vertica tically lly and horizont horizontally ally on the the primary monitor. • It shou should ld show a allll acti active ve applicati applications ons (run (running ning on an any y workspace) workspace) • Appl Applicati ication on icons are al always ways pre presente sented d in a single row iin n order to facilit facilitate ate quick quick scanning and navigation
• The overl overlay ay should should have a background background box wit with h rounded co corners rners and and the foll following owing properties: background-color: black at 80% opacity (#000000CC) border-width: 1px border-color: halfway between foreground and background colors, half as opaque as the background color (#80808066) (the border color is important when viewing the overlay above a black background) • Appl Applicati ications ons are orde ordered red by tim time e of last use and sec secondar ondarily ily by wor workspac kspace e • Show Shows s a single single icon per a applic pplicatio ation, n, regardless regardless of number of of wind windows ows • Exact Exactly ly one one app applicat lication ion iis s always always s select elected ed • The The sele select cted ed ap appl plic icat atio ion n is in indi dica cate ted d by a ba back ckgr grou ound nd bo box x with with roun rounde ded d co corn rner ers s an and d the following properties: • All applicati application on icons icons m must ust have the s same ame width width and height height.. Sele Select ct tthe he la largest rgest value from following list of icon size such that the application icons will fit on a single row: [96, 64, 48, 32, 22] • A row of a applic pplication ation iicons cons may increas increase e in wid width th as long as as the box is a att least 1 icon width away from any edge of the screen • Appl Applicati ication on icons use th the e same spac spacing ing and tru truncati ncation on rules as icons icons in the application well • The enti entire re selec selection tion box re rectang ctangle le area sho should uld be active active (cli (clickabl ckable e and sensitive sensitive to mouse hover) • appli Unli Unlike ke icons th e uld applicatio applic n well, not show show thehere. glo glow w. used to a indicate indi cate running runng ning applicati cations. ons. inIt the would wo beation rredunda edundant ntdo and d distr istracti acting ng here These are re all running runni apps and have other ways of indicating multiple instances. • Indic Indicate ate mult multiple iple windows windows per appl applicat ication ion by displaying displaying a downward downward pointing pointing arrow arrow icon centered underneath underneath the application application icon. It should display at full full brightness when the application is focused and at 50% brightness when not. • Wh When en the the se sellect ectio ion n mov oves es fro rom m the appl appliica cattio ion n ico con n into nto the win indo dow w prev previiew box box, the app app icon icon sh shou oulld re rettai ain n a ro roun unde ded d squa square re out outli line ne indi ndica cattor that hat is the the sa sam me si size ze ou outs tsid ide e di dime mens nsio ion n as the the sele select ctio ion n in indi dica cato tor. r. Th The e ou outl tlin ine e shou should ld be the the sa same me co colo lor r and opacity as the selection indicator. • Wh When en the se sellecti ection on mo mov ves from from the appl appliica cattio ion n box box to the the win indo dow w box box the curr curren entl tly y se sele lect cted ed appl applic icat atio ion n sh shou ould ld be in indi dica cate ted d by a ba back ckgr grou ound nd bo box x wi with th roun rounde ded d co corn rner ers s and the following properties: background-color: transparent; border-width: 4px border-color: white with 33% opacity • If an app has mul multipl tiple e windows, windows, an arrow should should appear appear cent centered ered bene beneath ath the applicati appli cation on title, title, point pointing ing down. down. If you cl click ick the d down own arrow arrow key or iiff the applicat application ion remains selected for 0.5 seconds or so, thumbnail previews for all available windows of that application appear in a horizontal row below the application box. • The sele selection ction sh should ould not aut automati omatically cally move move down into into the window window prev preview iew box when it appears • If the lis listt of windo windows ws does not fi fitt on the scree screen n we should au automat tomatical ically ly scroll scroll horizontally as the user moves through the list. • Mini Minimized mized or or hidde hidden n appli applicatio cations ns shoul should d appear at at the end of the the list • Light ver vertical tical sep separato aratorr betwee between n applica applications tions that that exist entirel entirely y on other workspaces • If the appl applicati ication on box is wide widerr than the window window box box,, then center center the window window box under the application icon. • If the win window dow box is wider wider than ap applica plication tion box, box, then center center the window window menu on the primary screen.
• Show the window icon, if it is different from the application icon, in the lower lower right corner of the window preview • The w window indow box s should hould not a appear ppear or di disappea sappearr abruptly abruptly.. It should should quick quickly ly fade fade in in and out. • When usi using ng the mouse mouse wheel and mo moving ving fro from m an application application with with multiple multiple windows to another application with multiple windows the window box should slide and morph into the new shape. • Windo Windows/T ws/Tabs abs shoul should d have the tit title le underneath underneath di display splayed ed in a similar similar way to the application name Control • The Alt Alt+Tab +Tab key com combinat bination ion brings brings up the switcher switcher with with the prev previousl iously y used application pre-selected. ◦ Exception Exception:: when the the previously previously u used sed win window dow is from from the same same application, the previously used window should be pre-selected instead of the previously used application. • Tabbi Tabbing ng should should always always mov move e the selection selection rectangle rectangle one space space to tthe he next next it item. em. If the end of a window box is reached, return to tthe he application box. If the end of the app box is reached, return to the start. • The m mouse ouse wheel shoul should d mov move e sel selectio ection n rec rectangl tangle. e. Wheel up moves moves to pr previou evious s item, down to the next item. With the e exception xception that it always descends into the window box if an app has more than one window. If the app doesn't have multiple multiple windows the wheel moves the selection to the previous/next app item. • Relea Releasing sing the Alt Alt key will bring bring the user to the currently currently selected selected item (applic (application ation or window) • Arro Arrow w keys should should remai remain n strictly strictly direction directional al and not move move to next item as Ta Tab b navigation would. ◦ Left and and right a arrow rrow k keys eys may be a allow llowed ed to move betwee between n applicati applications ons or windows in the list ◦ Up and down down arrow k keys eys may b be e used to sw switch itch betwee between n the appl applicat ication ion list and window list • The dow down n arrow k key ey may be us used ed to disp display lay a preview preview for for an applicati application on with with only one window available • Clic Clicking king on any app applica lication tion ico icon n or windo window w previe preview w should switch switch directl directly y to it • Clic Clicking king outs outside ide the boxes (applic (application ation or win window) dow) shou should ld cancel the the alt+tab mode mode and return these currently application • Movin Moving g thetomouse mou point pointer er active over an iitem tem sho should uld select select it unless unless the the user is performing keyboard navigation ◦ Mouse select selection ion sho should uld onl only y change when when crossing crossing into into a new app or or window target • Mouse ev events ents shou should ld be temporari temporarily ly ignored ignored while th the e user is in the process process of keyboard navigation to avoid interference. • Afte Afterr 0.5 secon seconds ds the curr currently ently se selecte lected d applic application ation sh should ould show the the window window box if and only if it has multiple windows available. • Do not imm immediat ediately ely display display applicat application ion windows windows when when using Alt+Tab Alt+Tab to cycle cycle through the application list. ◦ The mere mere fact that that app icons icons must be crossed crossed over to to focus the the desired desired application does not mean that the user is interested in seeing a window for that application. • Do not imme immediate diately ly display display application application wi windows ndows when when crossing crossing over applicati application on icons in the list with the mouse pointer.
◦ This is import important ant bec because ause as the the mouse pointer pointer m moves oves acr across oss the sc screen reen to target an application icon in the list it may cross other appl application ication icons.. The fact th icons that at it passe passes s over the top of ot other her app icons icons does not mean that the the user is interested in seeing a window of this application. application. In fact, showing a window in that case will very likely disrupt the user. Open Questions: • If a windo window w to reveal iis s in a differ different ent work workspace space tha than n the current current one, quickly quickly switch to that workspace first. • If an appli applicatio cation n has windo windows ws in mult multiple iple workspac workspaces, es, switch switch to the multip multiple le workspaces view as needed. Same effect as in the shell. • Perha Perhaps ps we can even even show a hi hint nt to use al alt-ta t-tab b when we detect detect that that the user user is going in and out of the shell to switch windows in rapid succession? • Anim Animate ate the select selection ion box ch changes anges w when hen using using keyboard keyboard navi navigatio gation? n?
Window Decorations Window decorations are the frame frame around the application content area of a Window. It is sometimes referred to as the chrome. Historically, these frames were used to: • indic indicate ate input input focus by changing changing the fframe rame color • provi provide de access access to a windo window wm managem anagement ent menu • provi provide de access to to window m managem anagement ent shor shortcuts tcuts su such ch as close, m minim inimize, ize, and maximize This frame was historically not drawn by the application and as a result appeared to be different from the rest of the window, both in visual appearance and behavior. behavior. There are a few reasons why we may wish to reconsider this approach. • Windo Windows ws may reque request st tha thatt they n not ot be provided provided decoration decorations s • Allo Allow w decoration decorations s to be drawn by the applica application tion in order order to achie achieve ve a consistent consistent look across the application • Mini Minimize mize use of decorat decorations ions so that that they don' don'tt distr distract act from the the focal area area • Allo Allow w the renderin rendering g system to to draw th the e entir entire e window window at once Therefore, we should carefully consider how we use decorations to indicate status or provide core functionality. Since window decorations, especially the title bar, may appear indistinct from the rest of the application, the user should be able to click-and-hold on any inactive/unused area of the window in order to move it. For the same reason all windows windows should have a handle in the lower right hand corner to afford the ability to resize the window. Open Questions: • Would iitt be useful useful to add so some me poin pointer ter fricti friction on to the edges edges of windows windows so that that controls at the edge of window have a larger eff effective ective target area. This may be a big improvement for usability of scrollbars in particular.
Window Shadows All non-maximized, non-maximized, fullscreen wi windows ndows that are not part of the Deskt Desktop op "chrome" should have shadows shadows.. Shadows Shadows sho should uld be d displa isplayed yed fo forr a top c center enter light source. source. For all all but window menus the shadown shoul should d even extend slightly around the top of the window. The shadow should extend out equally on the left and right side of the window and slightly farther on the the bottom. Shadows should always foll follow ow the apparent shape of the window. Transient windows that have a parent should have a more minimal shadow effect compared with regular toplevel windows.
Window Captions / Title-bars / Banners The title line of a window is variously called the window caption, title-bar, or window banner. This is typically one part of the w window indow decoration. Historically, it was used to label and identify a window, facilitate moving a window, indicate input focus, and host window manager controls. Should not be used mechanism for indicating input focus. Rather, it should appear integral with as thethe restprimary of window. The window-manager menu should not be accessed from a highly prominent button in the title title area. It may be acce accessed ssed fro from m a right cli click ck if necessary. necessary. Window States Maximized On displays with less than 768 pixels of vertical space windows should default to open maximized. Open Questions: • Is ther there e good way tto o colla collapse caption/t ion/title itle-bar -bar into into top me menubar nubar? ◦ aProb Probably ably no not t since sinc epse the capt top top menu-bar menu -bar should should o only nly appear ap pear?on the the primary monitor • Shoul Should d the win window dow consume consume all o off screen screen or use an app applicat lication ion defined defined optimal size (a la OS X)? ◦ Obvi Obviously ously this is would would b be e moot on sm small all s screens creens.. ◦ Prob Probably ably not s since ince on one e impor important tant us use e of maxi maximize mized d is to blo block ck out other windows Minimized / Hidden Animate the action action as shrinking into or being consumed by the Activities Item Item Open Questions: • Could behave like the "h "hide ide w window indow"" option option in OS X Full-screen Hot-corner is not enabled since it may conflict with application provided functionality. Open Questions: • A con consis sisten tentt way to to leav leave e fullsc fullscree reen? n?
Moving Windows Since window decorations may appear indistinct from the rest of the application it is required that the user be able to click-and-hold on any inactive/unused area of the window in order to move it. When windows are moved more than half their size between drawing updates (as a result of
dropped redraws or discontinuous pointer movement) a motion blur animation effect should be used. This ma may y appear as as a parti partially ally transl translucent ucent streak streak betwee between n the positions positions.. In some cases, this blur effect may be used even for small discontinuities such as when a password dialog shakes side side to side (oscillates) to to indicate ffailure. ailure. Perhaps both the relationship of distance travelled to size and the magnitude of the acceleration of the object can be metrics for determining if the effect should be used.
Resizing Windows Windows should have a resize handle at the lower right corner of the window with an affordance of dragging. Windows may be resized at the other corner control-points. Windows should not be resized on any of the horizontal or vertical edges of the windows. This obviates the the need to have window deco decorations rations on those sides. It also allows allows for the possibility of using Fitt's Law advantages for reaching application controls when not using maximized windows. When the frame rate is insufficient to smoothly transition between window sizes the change should use an animation effect similar to to those used when moving windows. windows. In the case where even this is not possible, a wireframe should be used instead. Open Questions: • Suppo Support rt a modifi modifier er key (for exper experts) ts) to snap resi resizing zing to vert verticalical-only only or horizonta horizontallonly?
New Windows Newly created windows should be placed in an unused region of the currently active workspace, if possible. Requiring the user to manual manually ly resize tthe he window should be avoided. On small screens new windows should default to open maximized. Open Questions: • An Anim imat atio ion n to to u use se? ? • Docum Document ent windo windows ws should should remem remember ber last last s size? ize? • Av Avoi oid d manu manual al rres esiz izin ing. g.
Closed Windows Should not use an animation at all but just disappear.
Window Urgency The following technical description is from Section 18.104.22.168. WM_HINTS Property of the Inter-Client Conventions Manual (ICCM):
The UrgencyHint flag, if set in the flags field, indicates that the client deems the window contents to be urgent, requiring the timely response of the user. The window manager must make some effort to draw the user's attention to this window while this flag is set. The window manager must also monitor the state of this flag for the entire time the window is in the Normal or Iconic state and must take appropriate action when the state of the flag changes. The flag is otherwise independent of the window's state; in particular, the window manager is not required to deiconify the window if the client sets the flag on an Iconic window. Clients must provide some means by which the user can cause the UrgencyHint flag to be set to zero or the window to be withdrawn. The user's action can either mitigate the actual condition that made the window urgent, or it can merely shut off the alarm. Rationale This mechanism is useful for alarm dialog boxes or reminder windows, in cases where mapping the window is not enough (e.g. in the presence of multi-workspace or virtual desktop window managers), and where using an override-redirect window is too intrusive. For example, the window manager may attract attention to an urgent window by adding an indicator to its title bar or its icon. Window managers may also take additional action for a window that is newly urgent, such as by flashing its icon (if the window is iconic) or by raising it to the top of the stack.
One of the problems is that while the event may seem urgent from the point of view of the application or the window manager, it is very rarely urgent from the point of view of the user. Most environments environments today foll follow ow the recommendations recommendations of tthe he ICCM and attempt to draw the attention of the user by blinking, flashing, or bouncing something on the screen in front of the the user. This behavior is acutely di distracting stracting and preempts the user's focus and attention. atten tion. [Cit [Citatio ation n needed] What m makes akes matters matters even even wors worse e is that the the moti motion on does not give the user any context or reason for the disruption. So, the distracting distracting moti motion on when coupled with the user's curiosity and fear of "missing" something important results in what should be a modeless indication becoming, in practice, modal and preempting. Some uses of the urgency hint today (legacy) include: 1. Launch Launched, ed, non-focu non-focused sed appl applicat ication ion has finishe finished d start starting ing up 2. A n new ew w window indow opened on an another other works workspace pace 3. An u unfocus nfocused ed ta tab b fi finished nished loading loading iin n browser browser 4. Reque Requested sted window window is open open on another wo workspa rkspace ce (eg. Document Documents s folder is is open on workspace 1 and it is requested from workspace 2) 5. Impl Implicit icitly ly started started applicat application ion pops o open pen an inactiv inactive e window window 6. A curr currently ently runnin running g appli applicatio cation n opens an un unreque requested sted wi window ndow We should provide sufficient information to applications so that they may avoid even attempting to open a window while the user is busy and thereby avoid the focus-stealing scenario in the first place. As with other types of indicators, there are two parts parts to the problem: the initial indication, and the reminding reminding function for for when the initial indi indication cation was missed missed or forgotten. forgotten. This suggests using the the Message Icon Tray.States) In the and A Activities ctivities Overview Overview window the Application Iwell. con should gently pulse (see Application the application may as Icon
On a case by case basis: 1. A notif notificat ication ion should should be displayed displayed in the Mes Message sage Tray sa saying ying som somethi ething ng like "AppFoo is ready." 2. A notif notificat ication ion should should be displayed displayed in the Mes Message sage Tray sa saying ying som somethi ething ng like "WindowBar is ready." 3. A notif notificat ication ion should should be displayed displayed in the Mes Message sage Tray sa saying ying som somethi ething ng like "TabName is ready." 4. Shou Should ld no nott hap happe pen. n. 5. A notif notificat ication ion should should be displayed displayed in the Mes Message sage Tray sa saying ying som somethi ething ng like "AppFoo requests your attention" before the application window window is displayed. If the notification is dismissed then the application window is implicitly closed. 6. A notif notificat ication ion should should be displayed displayed in the Mes Message sage Tray sa saying ying som somethi ething ng like "WindowBar requests your attention" bef before ore the window is is displayed. If the notification is dismissed then the window is implicitly closed. In each case where a notification is displayed, clicking on the notification should display the application or window. More elaborate solutions may be used if necessary. For example: when an appli application cation window pops open behind an active window due to focus-stealing prevention the active window should momentarily become partially translucent and the new window could appear underneath. undern eath. A subtle subtle sound sound effect effect could could be played. played. When an appli applicati cation on window window pops pops open on an inactive workspace it could appear as a ghosted image of the actual window and point in the direction of the workspace it opened on. Open Questions: • Shoul Should d we ext extend end the the urgen urgency cy hint to prov provide ide a "r "reason" eason"? ? • Perha Perhaps ps slightly slightly delay delay pop up if the use userr is in the act of typ typing ing or using using the pointer? pointer?
When starting a new application, an Active Application Item will be placed in the Top Menubar and should include an animation until application is started, it times out or fails for any reason, or the user swi switches tches to another application. This will serve as an indication that the application is starting and hasn't yet created any windows. It should be noted that the pointer cursor should not be used to indicate the application is starting. This is im important portant because ttouch ouch based devices may not have an active, vi visible sible pointer cursor. If the user switches to another application before the starting application fully loads then a notification should be used to remind the user that the action they requested has completed. Application Tabs Tabbed windows are a type of interface where the application assumes part of the role that the window manager typically typically plays. Tabs are essenti essentially ally docked or grouped windows. These should be integrated into the window and application switching functionality of the Shell.
Finding open windows / Resuming Activities There are two basic interactions for finding and resuming things that are in progress: the Activities Overview, Overview, Application Application Switcher.
Open Questions: • One of the probl problems ems with res resuming uming act activit ivities ies is reminding reminding yourself yourself where where you left off. One thing m may ay be to pr provide ovide a visual cue to at least where you last interacted interacted with the window. Maybe show a circular pulse of light in in that area? Workspaces Workspaces may be useful for spatial or logical arrangement of windows or to define a locality local ity for for a concep conceptual tual task. task. The usag usage e is highl highly y person personal al and idiosyn idiosyncrati cratic. c. The Shell Shell must not use a pre-determined number but start with one and allow the user to add as needed. [Insert image for switching workspace feedback OSD] [Explain how this differs from "rooms" or "tasks". Cite "When One Isn't E Enough" nough" and "Rooms"] Open Questions: • How doe does s the wor workspace kspace view view in tthe he overview overview appear appear whe when n using wallpa wallpaper per slideshows? Multiple Displays / Monitors Additional monitors monitors should be treated as as secondary or auxiliar auxiliary y when not cloned fr from om the primary display. display. The Top Menubar Menubar should only appear on the primary di display. splay. The mouse pointer should be prevented from moving into dead or invisible spaces between monitors. A solution may be to employ barriers similar to those those called for in the Top Menubar operation. The desktop backgrounds (or wallpapers) should appear independently on each monitor to reinforce the idea that monitors are treated separately. Open Questions: • Shoul Should d we not use workspace workspaces s on ext external ernal d displ isplays ays at all? all? • What about http: http://en. //en.wiki wikipedia pedia.org/ .org/wiki wiki/ASU /ASUS_Ee S_Eee_Key e_Keyboard board ? ◦ I suppose suppose having th the e overvi overview ew (perh (perhaps aps without without window window sel selector ector?) ?) and the Message Tray would be pretty nice. ◦ Or simply simply having having the Applicat Application ion Switcher Switcher (alt-t (alt-tab) ab) always always there w would ould be cool. Window Postures
Sovereign windows • Side by si side de and maxim maximized ized state states s are important important • Shoul Should d support m mouse ouse gestures gestures to move move into side side-by-s -by-side ide or maxi maximized mized st state ate Modal, transient windows • Must n not ot be mo moved ved independ independently ently from tthe he pare parent nt wi window ndow • Must n not ot be cl closed osed in independ dependentl ently y from the con control trols s offered offered
• • • •
Shou Should ld n not ot h hav ave e a ttit itle le Must no nott appear in in any window window lilists sts ind independe ependently ntly of tthe he parent parent There Therefore, fore, shoul should d not have a caption/t caption/title itle-bar -bar Sinc Since e the trans transient ient wi window ndow wi willll obscu obscure re the parent parent wind window ow and in orde orderr to suppor supportt the case where information from the parent window is needed in order to complete interacting with the transient window we should temporarily make the transient window translucent when the mouse button is held down over the parent window area.
Input Focus Identification Windows must be able to be clicked to bring them into the foreground and in order for them to receive keyboard keyboard input focus (ie. make active). This is par particularly ticularly important important for windows that are partially partially visible. It can be diffic difficult ult to find or identify an area to click in an unfocused window (particularly when overlapped or partly obscured) that won't be responsive to the click itself. This is even more difficult difficult for windows without window decorations or when the decorations are obscured. In many cases forwarding forwarding clicks can have serious serious unintended consequences. So, most windows should not be responsive to pointer clicks unless they are already in the foreground. Scroll wheel events are not subject to the same issues and since they may be desirable even for unfocused windows they should always be allowed. There are, however, some cases where sending click events to windows not on top of the window order may be desir desirable able or necessary. For example, any application with a multiple multiple window workflow such as an Image Edi Editor tor or any applicati application on with floati floating ng tool palettes. So, for this to work, the visual appearance of the window should indicate a) if it has keyboard input focus b) whether the window is responsive to mouse clicks. Applications must have a way to tel telll the window m manager anager whether pointer events should be forwarded to an unfocused window. window. The unfocused window window may al allow low one of the following: 1. sho should uld nev never er rece receive ive clicks clicks 2. shoul should d receiv receive e clicks w when hen any win window dow from tthe he same applicati application on is in focus (e (eg. g. _NET_WM_WINDOW_TYPE_UTILI _NET_WM_WIND OW_TYPE_UTILITY) TY) 3. shoul should d receive cli clicks cks when a _NET_ _NET_WM_W WM_WINDO INDOW_TY W_TYPE_U PE_UTILIT TILITY Y window of the same application is active 4. sho should uld alw always ays rec receiv eive e click clicks s So the follow window states are possible: 1. ac acti tive ve wind window ow 2. inact inactive ive and click click forwardin forwarding g is allowed allowed 3. inact inactive ive a and nd cli click ck forwardi forwarding ng is not al allowed lowed Visual Cues Unfocused windows that will not have mouse click events forwarded to them should be dimmed if they are on the primary display or on the same display as the currently active application. application. It is tthought hought that desat desaturating urating (or removing color) from window windows s should be reserved for windows that are no longer responding and that may be "dead", so this is not recommended.
The mouse pointer cursor shape should change to something similar to a grasp-hand when over windows of this type unless the pointer cursor is currently using a busy cursor to indicate activity in the active application. The currently active application should display a single menu item on the Top Menubarr using th Menuba the e name of the appl applicati ication on as the item la label. bel. This will will augment augment the window shading indicators. The window should have a more substantial shadow around it in order to clearly clearly distinguish it from inactive window windows. s. See Window Shadows for for information. Exceptions • When wi windows ndows are are in side-by-sid side-by-side e compar comparison ison mod mode e mouse clicks clicks should should be sent to each and therefore neither window should be dimmed. • When a wind window ow is on the nonnon-prim primary ary disp display lay and the active active app applicat lication ion is not on the same display it should not be dimmed Open Questions: • Shoul Should d we only dim when there there is an overlap overlap? ? • Wha Whatt about about sec second ondary ary dis displa plays? ys? • Doe Does s wi windo ndow w gr group oup play play a rol role e here? here? • Shoul Should d we just say tha thatt utili utility ty windows windows always always appear appear on top of the windows windows that that they act as controllers for - and just never forward clicks?
Window Control Gestures It is very common for users to want to see two windows simultaneously or side-by-side for transcription and comparison purposes (see the Windows Windows 7 blog for usage data). data). Also, wit with h the increasing prevalence of widescreen format displays it may be increasingly difficult to size a window to a comfortable wi width dth for reading. Historically, this was easily achieved achieved by "maximizing" the window. window. So it would be advantageous to offer ways to efficient efficiently ly view two windows at once, with a minimal amount of set up and to resize to an optimal size. A side-by-side mode should be offered so tthat hat two windows can split the viewing viewing area of a single display. This should be accomplished by dragging dragging the wi window ndow against the the left or right side of the display. The window should then snap into the half half-screen -screen mode. To facilitate using an optimal reading width the "maximize" control should instead use a "maximal" or "optimal" size that is determined by the application. There may also be a keyboard shortcut for this mode.
Keyboard shortcuts The Shell should offer a number of standard or reserved keyboard shortcuts in order to enhance the efficiency of expert users. Some of these are: • Alt+ Alt+Tab: Tab: Move Move forwa forward rd to the next most most recen recently tly used ap applica plication tion in a list list of open applications
• • • •
• • • • • • • • • • • • • • •
Shif Shift+Al t+Alt+Tab t+Tab:: Move backw backward ard throu through gh a list of open applic application ations s (sorted (sorted by recent use) Alt+ Alt+`: `: Move forward forward tto o the next win window dow of the currentl currently y activ active e application application Shif Shift+Al t+Alt+`: t+`: Move Move backwar backwards ds to the next windo window w of the currently currently active active application application CTRL+ CTRL+Tab: Tab: Switch Switch to the next child child window of a Multi Multiple ple Docum Document ent Interface Interface (M (MDI) DI) or tabbed program Shift+CTRL+Tab: Switch tto o the previous child window of a Multiple Multiple Document Interface (MDI) or tabbed program Alt+ Alt+F1 F1 or Logo k key: ey: G Go o to A Activ ctivitie ities s Overview Overview Alt+ Al t+F2 F2:: Qu Quic ick k laun launch cher er Alt Alt+F4 +F4:: Close Close tthe he curre current nt w wind indow ow Alt Alt+F7 +F7:: Move Move th the e curren currentt windo window w Alt Alt+F8 +F8:: Resize Resize the the cu curre rrent nt wi windo ndow w Alt+ Al t+F9 F9:: H Hid ide e win windo dow w Shif Shift+Al t+Alt+F9: t+F9: Hide all but but the the acti active ve wi window ndow Alt Alt+F1 +F10: 0: Maxim Maximize ize the the active active w wind indow ow ALT+E ALT+Enter: nter: Open tthe he prop properti erties es for the the sele selected cted o object bject CTRL+ CTRL+Alt Alt+left +left/rig /right/up ht/up/dow /down: n: Move to workspace workspace left/ left/right right/up/d /up/down own Shif Shift+Al t+Alt+lef t+left/ri t/right/u ght/up/dow p/down: n: Move window window to another workspa workspace ce F1: Help Lo Logo go+( +(+/ +/-) -):: Zoo Zoom m in in/o /out ut Pr PrtS tSc: c: Prin Printt scr scree een n Pow Power er Button Button:: S Susp uspend end sys system tem
• • • • • • • • • • • • • • • • • • • • • • • • • • • • •
Po Powe werr s sys yste tem mo off ff CTRL+ CTRL+A: A: Select Select all tthe he items items in in the current current vi view ew CTRL+ TRL+B B: Bo Bolld CTRL+ TRL+C C: Cop opy y CTRL+ TRL+F F: Fi Find nd CT CTRL RL+G +G:: Fi Find nd agai again n CT CTRL RL+I +I:: It Ital alic ic Contr Control+J: ol+J: Jump to selection selection or curso cursor r CTRL+N: Ne New CTRL+ TRL+O O: Open pen CTRL+ TRL+P P: Pr Priint CTRL+ TRL+Q Q: Qui Quitt CTRL+ TRL+S S: Sa Sav ve CT CTRL RL+U +U:: Unde Underl rlin ine e CTRL+ TRL+V V: Pas Paste te CTRL+ TRL+W W: Cl Clos ose e CTRL+X: Cu Cut CTRL+ TRL+Y Y: ReRe-do do CTRL+ TRL+Z Z: Un Und do Press Shif Shiftt five five times: times: Tog Toggles gles S Stick tickyKeys yKeys on and of off f Esc: C Ca ancel ?: Lock Lock scr screen een ?: Til Tile e or untile untile al alll open window windows s on active active wo workspa rkspace ce ?: Tile or unt untile ile all open open windo windows ws on active active workspace workspace for active active applicati application on ?: T Tile ile most most recen recentt N windo windows ws ?: Pee Peek k thro through ugh active active window window (ie. (ie. ma make ke tra transpar nsparent) ent) ?: M Move ove ffocu ocus s to the Top Men Menuba ubar r ?: M Move ove ffocu ocus s to the Mes Messag sage e Tr Tray ay ?: Ce Cente nterr pointe pointerr on prima primary ry sc scree reen? n?
Persistence After a reboot the the Shell should return return to a nominal state state with a si single ngle workspace and no currently currently running applications unless they have been set up to automaticall automatically y start. In cases where where persistence is desired the user should use the system sleep and hibernate functionality as appropriate. To encourage this the default pow power er button action action should be to put the system to sleep. Applications should be expected to maintai maintain n their own state state and to recover from power loss or application failure gracefully and with no loss of data. Document-based applications should retain the state state of the document if it is cl closed osed and opened. Not-document base based d applications should retain application state as much as possible.
Personalization Opportunities The shell aims to be a vehicle and not a destination and as transparent as possible so the number of personalization opportunities should be carefully selected and limited. We should support three primary types of extensions to the core functionality and experience: 1. At the pl platfor atform m level to to shape a differ different ent user experi experience ence (usually for devices with different different form-factors and goals). goals). I would expect this to probably be only at build/integration time. 2. Somet Something hing lilike ke a statu status s area where where extensio extensions ns behav behave e in a very consistent and well-defined manner. 3. A "pla "place" ce" where where the rules are mor more e rela relaxed xed and fun fun thi things ngs can happen - maybe a sidebar - maybe Vegas...
Notifications Notification bubbles are an attempt to balance peripheral alerting with the non-preemption principle. They have been w widely idely deployed and are currentl currently y used in one form or another on almost every every available pl platform. atform. As an alt alternative ernative to modal modal interactio interactions ns they have b been een largely successful. However, close inspection reveals a number of problems wit with h the current designs: • Noti Notificat fications ions implement implemented ed as "bubble" overlays overlays may unintention unintentionally ally intercept intercept the user's user's pointer clicks. At minimum, minimum, this causes an extra click to be required by the user and accidental and irretrievable irretrievable dismissal dismissal of a notification notification.. And at worst, worst, this causes the accidental triggering of an action associated with the notification. • Noti Notificat fications ions on OS X and Linux Linux typi typicall cally y appear nea nearr the upper ri right ght corn corner er of the windowing area of the screen. On Linux, this was done so that they may point to an active status icon. This is problematic problematic because the upper right hand corner iis s used frequently for window caption actions (eg. w window indow close). In addition to this, there are a number of items in the status status area or top "panel" that may act like menus and drop down below into into the targ target et area for the notificati notification on bubbles. So, bubbles appearing in the the upper right corner corner dramaticall dramatically y increases the likelihood of collisions. (This problem is less severe on OS X because the caption controls are on the left hand side.) • Coupl Coupling ing notifi notificatio cations ns to s status tatus icons lleads eads to an unnatural unnatural associ association ation between between the two. two. It implies that notifications may become "resident" "resident" by adding a status icon. icon. This is partially partially responsible for the dilution of the status area and the perception that it is a "notification area". One attempt to address this problem calls for the removal of actions associated with the notifications.. For a design where notifi notifications notifications cations appear as bubbles overlaid on active areas of the screen, removal removal of actions actions makes a good deal of sense. But doing so so implies providing a different way of handling things that are messages and not simple non-critical, transient notificati notif ications. ons. Messa Messages ges are m much uch less iintere nteresting sting w when hen considere considered d in isol isolation ation.. It is mo more re natural tointerfaces be able tofor respond to a message throughmay direct provi providing ding different notifications and messages notmanipulation. be ideal as theHowever, distinction may be too subtle or pedantic for most to appreciate. We may solve the problem by providing a distinct place for notifications and messages.
Social Dimension / Collaboration Should be addressed in version 2.0.
Applications and Activities
Whenever possible applications and activities should adapt to the capabilities of the device. Generally, most applications should be single-instance so that clicking on the application launcher behaves consistently with opening a new file or window from within the application. For example, clicking on tthe he Inkscape launcher twice should not launch two two separate instances of the application that are unaware of each other.
Used for both both ephemeral, and working set data finding and reminding. Given time, the constant stream of things to do, the constant remainder that does not get done, and the unwillingness to categorize and archive manually, and the fact that the solution doesn't scale (due to being spatially spatially bound) result results s in the system breaking breaking down. On top of this - so to speak - is the problem that this data lives underneath all of the current activities on the computer and is is therefore very very difficult to reach. Which also tends to reduce its effectiveness for finding and reminding. reminding. It also doesn't provide any form form of prioritization. prioritization. In the Shell design, the "desktop" folder should no longer be presented as if it resides behind all open windows. We should have another way of representing ephemer ephemeral al and working set objects. The reminding function of tthe he desktop is really only available immediately immediately after login. Once any activities are started its its effectiveness is dramatical dramatically ly diminished. Starting the Journal automatically at login will have a equivalent effect and have the advantage of being easier to access later.
Trashcan Target The need for a trashcan target is greatly diminished by removing the desktop folder from the computer background. However, to remove the need for it o one ne needs to go a step farther farther and drop the use of the spatial file file management (ie. (ie. the desktop metaphor) altogether. altogether. It will be necessary to build a Trash capability into the Journal Summary and history archive that are described in a later section. If we need a metaphor metaphor at all then perhaps a better one is to "forget" the object.
Some of the problems with taskbars include: • useless useless if only wi windows ndows op open en for the appl applicati ication on are docks etc etc that skip th the e taskbar taskbar • group windows windows by ap applica plication tion or class class and not spa spatial tially ly or contextual contextually ly • are useless useless for finding finding applicat applications ions or wi windows ndows lo located cated on other other workspace workspaces s • provide provide no visual visual cues for for identif identifying ying the the wi window ndow • do not integ integrate rate at all with appli applicatio cation n laun launchers chers • number of ope open n wind window ow may outstrip outstrip the the space avail available able
• in effect, effect, the defici deficiencie encies s motiva motivated ted applicatio applications ns to mainta maintain in their own ta taskbar skbar (in tabs) resulting in a form of nested tabs interface
Multi-Pointer X • Can w we e mak make e the s shel helll "ch "chrom rome" e" per-us per-user er • Use d diffe ifferent rent mouse pointers pointers per per us user er / device device • Use sepa separate rate "act "active-a ive-appli pplicatio cation" n" menus th that at indic indicate ate the mouse mouse point pointer er • How would you h handle andle the A Activ ctivitie ities s Overvie Overview w
Activities and Tasks At this time time we will not be addressing the concept of tasks as stored s sets ets of activities activities as described in: [citations needed] Any solution would would need to address the di difficulties fficulties of se separating parating activities into tasks, distinguishing tasks, sharing activities between tasks, naming, saving task state, identifying and selecting tasks to to restore, etc. Overall it seems a bit too analytical analytical and reflective for the way many people work - or just "do". There is also the problem of scale. Many people ar are e involved in hundreds of different different tasks per day. How would you represent tthis his in an interface cleanly cleanly without overly taxing the user with process. This may be an area for further research.
References • http://blogs.msdn. http://blogs.msdn.com/e7/archive/2008/09/23/ com/e7/archive/2008/09/23/user-interface-start user-interface-starting-launching-anding-launching-andswitching.aspx • http://blogs.msdn.com/e7/archive/2008/09/29/ http://blogs.msdn.com/e7/archive/2008/09/29/follow-up-start follow-up-starting-launching-and-swit ing-launching-and-switching.aspx ching.aspx • http://blogs.msdn.com/e7/archive/2008/10/01/ http://blogs.msdn.com/e7/archive/2008/10/01/user-interface-managi user-interface-managing-windows-windows. ng-windows-windows.aspx aspx • http://blogs.msdn.com/e7/archive/2008/10/04/ http://blogs.msdn.com/e7/archive/2008/10/04/follow-up-managingfollow-up-managing-windows-windows. windows-windows.aspx aspx • http://blogs.msdn.com/e7/archive/2008/11/20/ http://blogs.msdn.com/e7/archive/2008/11/20/happy-anniversary-window happy-anniversary-windows-on-the-evolution-ofs-on-the-evolution-ofthe-taskbar.aspx • https://wiki.ubuntu.com/NotifyOSD • https://wiki.ubuntu.com/Notifi https://wiki.ubuntu.com/NotificationDevelopmentGui cationDevelopmentGuidelines#Avoiding%20acti delines#Avoiding%20actions ons • http://live.gnome.org/Boston2008/GU http://live.gnome.org/Boston2008/GUIHackfest/WindowM IHackfest/WindowManagementAndMore anagementAndMore • http://www.engadget.com/2009/06/03/pal http://www.engadget.com/2009/06/03/palm-pre-review-partm-pre-review-part-1-hardware-webos-user-i 1-hardware-webos-user-interface/ nterface/ • http://tronche.com/gui/x/icccm/ • http://mail.gnome.org/archives/desktophttp://mail.gnome.org/archives/desktop-devel-list/2009-Apr devel-list/2009-April/msg00314.html il/msg00314.html • http://en.wikipedia.org/wiki/Tabl http://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts e_of_keyboard_shortcuts • http://support.apple.com/kb/HT1343 • http://support.microsoft.com/kb/126449 • http://lifehacker.com/5132073/the-best-new http://lifehacker.com/5132073/the-best-new-windows-7-keyboard-shor -windows-7-keyboard-shortcuts tcuts • http://blog.fishsoup.net/2004/09/06/building-a-tool/