Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

A user-activatable dashboard (also referred to as a unified interest
layer) contains any number of user interface elements, referred to herein
as "widgets," for quick access by a user. In response to a command from a
user, the dashboard is invoked and the widgets are shown on the screen.
The user can activate the dashboard at any time, causing the dashboard to
temporarily replace the existing user interface display on the user's
screen. Once the dashboard has been activated, the user can interact with
any or all of the widgets, and can configure the dashboard by adding,
deleting, moving, or configuring individual widgets as desired. When the
user wishes to return to the normal user interface he or she was working
with, the user issues a command causing the dashboard to be dismissed.

Claims:

1. A computer-implemented clock widget displayed on a display device of a
computer system, the clock widget including: a time display that displays
a current time corresponding to a location, wherein an appearance of the
clock widget is based on the location and actual sunrise and sunset times
for the location, and the appearance of the clock widget changes
according to time of day, including: when the current time falls between
the actual sunrise and sunset, displaying the clock widget with a first
appearance that indicates day, when the current time falls between actual
sunset and sunrise, displaying the clock widget with a second appearance
that indicates night, and when the current time indicates times near
sunset or sunrise, displaying the clock widget with a third appearance
that is different from the first appearance and the second appearance to
indicate times near sunset or sunrise.

2. The clock widget of claim 1, wherein the first and second appearances
comprise: a background color selected from at least two colors.

3. The clock widget of claim 2, wherein: the at least two colors
comprises a first color representing day and a second color representing
night.

4. The clock widget of claim 3, wherein: the third appearance comprises a
third color representing twilight.

5. The clock widget of claim 3, wherein: the first color is selected as
the background color responsive to the current time falling within a
first time range; and the second color is selected as the background
color responsive to the current time falling within a second time range.

6. The clock widget of claim 5, wherein the first time range comprises
6:00 AM to 6:00 PM, and the second time range comprises 6:00 PM to 6:00
AM.

7. The clock widget of claim 2, wherein: when the time information falls
between the actual sunrise and sunset, a first color is selected for
displayed; and when the time information falls between the actual sunset
and sunrise, a second color is selected for displayed.

Description:

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation of and claims priority to U.S.
patent application Ser. No. 14/036,807, entitled "Visual Characteristics
of User Interface Elements in a Unified Interest Layer," filed Sep. 25,
2013, which is a divisional, under 35 U.S.C. §121, of U.S.
application Ser. No. 12/495,686, entitled "Visual Characteristics Of User
Interface Elements In A Unified Interest Layer," filed Jun. 30, 2009,
which is a divisional of U.S. application Ser. No. 11/370,743, entitled
"Unified Interest Layer for User Interface," filed Mar. 7, 2006, which is
a continuation of U.S. application Ser. No. 10/877,968, entitled "Unified
Interest Layer for User Interface," filed Jun. 25, 2004; and the subject
matter of the invention is generally related to the following jointly
owed and co-pending patent applications, each incorporated herein by
reference in its entirety:

[0014] The present invention relates generally to graphical user
interfaces, and more particularly to a user-activatable, configurable,
unified layer containing items of interest to a user.

BACKGROUND OF THE INVENTION

[0015] A hallmark of modern graphical user interfaces is that they allow a
large number of items to be displayed on a screen at the same time. The
leading personal computer operating systems, such as Apple MacOS X and
Microsoft Windows XP, provide user interfaces in which a number of
windows can be displayed, overlapped, resized, moved, configured, and
reformatted according to the needs of the user. Taskbars, menus, and
other UI elements provide mechanisms for accessing and activating windows
even when they are hidden behind other windows.

[0016] Although many users appreciate the ability of such user interfaces
to present such a wealth of information on the screen simultaneously, the
resulting "information overload" can be somewhat overwhelming. Users
often find that it is difficult to navigate to a particular UI element or
window, or to even locate a desired element, among a large number of
onscreen elements. The problem is further compounded when user interfaces
allow users to position the onscreen elements in any desired arrangement,
including overlapping, minimizing, maximizing, and the like. Such
flexibility may be useful to some users but may result in chaos for other
users. Having too many items on the screen simultaneously leads to
information overload, and can act as an inhibiting factor in the
effective use of the computer equipment.

[0017] Some user interfaces dedicate certain areas of the screen for
holding certain user interface elements that are commonly used (such as a
menu bar, or icons that activate commonly-used programs or files).
However, such areas are generally limited in size, so as not to occupy
too much valuable screen real estate that could otherwise be devoted to
the main workspace area of the display screen. Although small elements,
such as a digital clock element or taskbar, may be well suited for
display in such dedicated screen areas, other types of elements cannot be
usably presented in such a small screen area; thus they must be
activated, or enlarged, before they can be used or viewed. This causes
yet another level of confusion, since the items need to be activated and
dismissed. Furthermore, the items may overlap or otherwise add to the
number of onscreen elements that must be dealt with and organized by the
user.

[0018] These problems cause many users to fail to use their computers to
their full potential, and can further result in frustration or confusion,
particularly in novice users.

[0019] What is needed is a mechanism for providing easy access to commonly
used user interface elements, without introducing additional clutter or
confusion. What is further needed is a mechanism for providing such
access in a user-configurable manner that allows the user to activate and
dismiss the UI elements at will and with a minimum of confusion. What is
further needed is a mechanism that allows users to easily activate and
dismiss certain user interface elements regardless of the number of open
windows currently on the user's screen, and without requiring the user to
search for particular user interface elements among a set of open
windows.

[0020] What is further needed is a mechanism for addressing the
above-stated problems in a convenient, easy-to-use manner that is likely
to be readily adopted by users, and that fits within the framework of
existing graphical user interfaces.

SUMMARY OF THE INVENTION

[0021] According to the techniques of the present invention, a
user-activatable dashboard (also referred to as a unified interest layer)
is provided. The dashboard can contain any number of user interface
elements, referred to herein as "widgets," for quick access by a user. In
response to a command from a user, the dashboard is invoked and the
widgets are shown on the screen. In one aspect of the invention, the user
can activate the dashboard at any time, causing the dashboard to
temporarily replace or overlay the existing user interface display on the
user's screen.

[0022] Once the dashboard has been activated, the user can interact with
any or all of the widgets, and can configure the dashboard by adding,
deleting, moving, or configuring individual widgets as desired. When the
user wishes to return to the normal user interface, the user issues a
command causing the dashboard to be dismissed. Once the dashboard has
been dismissed, the previous user interface state is restored, allowing
the user to resume normal interactions with the operating system.

[0023] In one aspect, the dashboard, when activated, temporarily replaces
the existing user interface display. In another aspect, the dashboard
partially obscures the existing user interface display, but allows some
part of the existing display to be visible so as to remind the user of
its presence. In another aspect, the existing user interface display is
faded, blurred, and/or darkened while the dashboard is active.

[0024] In one aspect, a transition effect is displayed during activation
and/or dismissal of the dashboard, so as to assist the user in
understanding what is happening when the dashboard appears and
disappears.

[0025] In one aspect, the user can select from any number of widgets to be
placed on the dashboard in any desired arrangement. Whenever the
dashboard is activated, the widgets appear in the locations where the
user placed them previously.

[0026] Widgets can be of any type. They can communicate with a remote
server to provide information to the user (for example, a weather
report), or they can provide commonly needed functionality (for example,
a calculator), or they can act as an information repository (for example,
a notepad or calendar). Some widgets can provide a combination of these
types of functions. In one aspect, an application programming interface
(API) is provided so as to allow third-party developers to create and
distribute additional widgets that provide different types of
functionality.

BRIEF DESCRIPTION OF THE DRAWINGS

[0027] The accompanying drawings illustrate several embodiments of the
invention and, together with the description, serve to explain the
principles of the invention.

[0028] FIG. 1 is a block diagram depicting an overall architecture for
implementing the present invention according to one embodiment.

[0029] FIG. 2 is a flowchart depicting a method for activating and using a
dashboard according to one embodiment of the present invention.

[0030] FIG. 3 is a block diagram depicting a software architecture for
implementing the present invention according to one embodiment.

[0031] FIG. 4 is a screen shot depicting a desktop user interface prior to
activation of a dashboard.

[0032] FIG. 5 is a screen shot depicting an initial state for a dashboard,
according to one embodiment.

[0033] FIG. 6 is a screen shot depicting a configuration bar for a
dashboard, according to one embodiment.

[0034] FIG. 7 is a screen shot depicting user selection of a widget from
the configuration bar, according to one embodiment.

[0035] FIG. 8 is a screen shot depicting a dashboard including a
calculator widget, according to one embodiment.

[0036] FIG. 9 is a screen shot depicting a dashboard including a
calculator widget and a music player widget, according to one embodiment.

[0037] FIG. 10 is a screen shot depicting activation of a music player
application as invoked by a music player widget, according to one
embodiment.

[0038] FIG. 11 is a screen shot depicting a dashboard including a
calculator widget, a music player widget, and an address book widget,
according to one embodiment.

[0039] FIG. 12 is a screen shot depicting operation of an address book
widget, according to one embodiment.

[0040] FIG. 13 is a screen shot depicting a dashboard including a number
of widgets including a notes widget, according to one embodiment.

[0041] FIG. 14 is a screen shot depicting a dashboard where the
configuration bar has been closed, according to one embodiment.

[0042] FIG. 15 is a screen shot depicting a dashboard wherein widgets have
been moved to new positions.

[0043] FIGS. 16A through 16C are screen shots depicting a transition
animation for dismissing the dashboard, according to one embodiment.

[0044] FIGS. 17A through 17D are screen shots depicting a transition
animation for activating the dashboard, according to one embodiment.

[0045] FIG. 18 is an example of a calendar widget according to one
embodiment.

[0046] FIG. 19 is an example of a stock quote widget according to one
embodiment.

[0047] FIG. 20 is an example of a weather widget according to one
embodiment.

[0048] FIG. 21 is an example of a traffic webcam widget according to one
embodiment.

[0049] FIG. 22 is an example of a music player widget according to one
embodiment.

[0050] FIG. 23 is an example of a package tracking widget according to one
embodiment.

[0051] FIG. 24 is an example of an address book widget according to one
embodiment.

[0052] FIG. 25 is an example of a clock widget according to one
embodiment.

[0053] FIG. 26 is a screen shot depicting a dashboard where the
configuration bar has been closed, according to one embodiment.

[0054] FIG. 27 is a screen shot depicting a dashboard where the
configuration bar has been opened to show favorite widgets, according to
one embodiment.

[0055] FIG. 28 is a screen shot depicting a dashboard where the
configuration bar has been opened to allow access to additional widgets,
according to one embodiment.

[0056] FIG. 29 is a screen shot depicting a dashboard including rollover
icons for closing and configuring a widget, according to one embodiment.

[0057] FIG. 30 is a screen shot depicting a dashboard wherein some labels
in the configuration bar have changed in appearance, according to one
embodiment.

[0058] FIG. 31 is a screen shot depicting a dashboard wherein some labels
in the configuration bar have changed in appearance, and wherein the
dashboard includes rollover icons for closing and configuring a widget
according to one embodiment.

[0059] FIG. 32 is a screen shot depicting a dashboard showing preferences
controls for two widgets, according to one embodiment.

[0060] FIG. 33 is an example of a calculator widget according to one
embodiment.

[0061] FIGS. 34A and 34B depict an example of a dictionary/thesaurus
widget according to one embodiment.

[0062] One skilled in the art will recognize that these Figures are merely
examples of the operation of the invention according to one embodiment,
and that other user interface arrangements and modes of operation can be
used without departing from the essential characteristics of the
invention.

DETAILED DESCRIPTION OF THE EMBODIMENTS

[0063] The present invention is now described more fully with reference to
the accompanying Figures, in which several embodiments of the invention
are shown. The present invention may be embodied in many different forms
and should not be construed as limited to the embodiments set forth
herein. Rather these embodiments are provided so that this disclosure
will be complete and will fully convey the invention to those skilled in
the art.

Hardware Architecture

[0064] In one embodiment, the present invention is implemented as part of
an operating system for a personal computer. One example of an
implementation of the present invention is in a Macintosh personal
computer running the MacOS X operating system. Referring now to FIG. 1,
there is shown an example of an architecture for a system 100 for
implementing the present invention. Personal computer 102 includes
processor 103, memory 105, input devices 114 such as keyboard and mouse,
and output device 115 such as a display screen. A graphics module 113,
such as a graphics card, may be provided for generating output for output
device 115. User 101 interacts with system 100 by providing input via
device 114 and viewing output via device 115. Computer 102 also includes
local storage 106, such as a hard drive, and can also include network
connection 108 for accessing remote server 107. These components are
well-known hardware components commonly used for running software
applications. In one embodiment, software embodying the invention is
provided on a computer-readable medium such as local storage 106.

[0065] In another embodiment, the present invention is implemented as a
plug-in that can be installed and run on personal computer 102, and that
interacts with the operating system of personal computer 102 to perform
the functions described herein. In yet another embodiment, the present
invention is implemented as functionality in a software application
running on a personal computer.

[0066] For illustrative purposes, in the following description the
invention is described as a feature of an operating system; however, one
skilled in the art will recognize that the techniques of the present
invention can be implemented in other contexts as well, including those
described above.

Method of Operation

[0067] Referring now to FIG. 2, there is shown a flowchart depicting a
method for activating and using a dashboard according to one embodiment
of the present invention. In one embodiment, the user can activate the
functionality of the present invention at any time, for example by
hitting a designated function key or key combination, or by clicking on
an icon, or by selecting a command from an onscreen menu, or by moving an
onscreen cursor to a designated corner of the screen. In response to the
user performing such an action 202, the current state of the user
interface is saved 203, the user interface is temporarily inactivated
(and/or faded 204), an animation is played 205 to introduce the
dashboard, and the dashboard of the present invention is displayed 206.
If applicable, a previous state of the dashboard is retrieved, so that
the dashboard can be displayed in the same configuration as the last time
the user saw it.

[0068] In one embodiment, the dashboard is overlaid on the existing
desktop user interface; the user interface may be darkened, brightened,
blurred, distorted, or otherwise altered so as to emphasize that it is
temporarily inactivated. The existing desktop may be visible behind the
dashboard. In another embodiment, the existing desktop is not visible
while the dashboard is active. In another embodiment, the desktop is
shrunk to a small portion of the screen while the dashboard is active,
and can be reactivated by clicking on it. In another embodiment, the
desktop is shrunk and presented as a widget similar to the widgets
described herein; the desktop can be reactivated by clicking on the
widget.

[0069] The dashboard (also referred to herein as a "unified interest
layer") includes a number of elements, referred to herein as "widgets".
These widgets generally include software accessories for performing
useful, commonly needed functions. Examples of widgets include, without
limitation, a calendar, a calculator, an address book, a package tracker,
a weather module, and the like. In one embodiment, some widgets may
interact with remote sources of information, such as servers, to provide
information; for example, a weather module may retrieve live weather data
from a remote server. Widgets may be interactive, so that a user performs
common input operations (such as clicking a mouse or typing on a
keyboard) to utilize the functionality of a widget.

[0070] The user interacts with and/or configures widgets as desired 207.
In one embodiment, the user can move widgets around the screen, and can
resize widgets if applicable. Some widgets may be resizable, and some may
be of fixed size; the widget author may specify whether a widget can be
resized. Some widgets may automatically resize themselves based on the
amount or nature of the data being displayed. In one embodiment, widgets
may overlap one another. In another embodiment, widgets do not overlap
one another; if the user attempts to move one widget to the position
occupied by another widget, one of the widgets may automatically move out
of the way to make room. In one embodiment, the position, configuration,
and size of widgets are saved when the dashboard is dismissed, so that
the same state can be restored the next time the dashboard is invoked.

[0071] When the user wishes to dismiss 208 the dashboard and return to the
normal user interface, he or she does so by invoking a dismissal command.
In various embodiments, the user hits a function key or key combination
(which may be the same or different than the key or combination used to
activate the dashboard), or clicks on a close box or other icon, or
clicks on negative space within the dashboard (in other words, a space
between widgets), or moves an onscreen cursor to a predefined corner of
the screen. In another embodiment, the dashboard is automatically
dismissed after some predetermined period of time without any user
activity, or upon some other trigger event. An animation may be played
209 to provide a transition as the dashboard is dismissed.

[0072] In one embodiment, when the dashboard is dismissed, the current
configuration of the widgets is stored so that it can be retrieved the
next time the dashboard is activated. In one embodiment, an animation is
played to dismiss the dashboard and re-introduce the user interface. The
user interface is restored 210 to its previous state, so that the user
can resume normal interaction with the software applications and
operating system of the computer.

[0073] In one embodiment, the dashboard is configurable. The user can
select any number of widgets to be displayed, for example by dragging the
widgets from a configuration bar (or other user interface element) onto a
location on the dashboard. In one embodiment, the configuration bar can
include different types of widgets, and can be categorized and/or
hierarchically organized. In one embodiment, in response to the user
dragging a widget onto the configuration bar, the widget is downloaded
from a server and installed (if it is not already installed on the user's
machine). In one embodiment, certain widgets may cost money, so that the
user must provide a credit card or some other payment means before the
widget is installed on the user's machine. In another embodiment, widgets
are already installed on the user's machine, but are only made visible
when they have been dragged from the configuration bar onto the
dashboard. One skilled in the art will recognize that the configuration
bar is merely an example of one type of user interface element for
configuring the dashboard, and that other configuration mechanisms can be
used without departing from the essential characteristics of the present
invention.

[0074] As mentioned above, various types of animations can be used to
emphasize and clarify transitions in connection with the present
invention. For example, activation of the dashboard can be signaled by a
"fly-in" animation, wherein the widgets move from the edge of the screen
inwards to their respective positions in the dashboard. Simultaneously,
the user interface can be darkened, blurred, distorted, or otherwise
altered to indicate that it is temporarily inactive. Dismissal of the
dashboard can be signaled by a "fly-out" animation, wherein the widgets
move towards the edge of the screen and then appear to fly off the
screen. Simultaneously, the user interface is restored to its normal
state. In one embodiment, when the user drags a widget from the
configuration bar onto the desktop, an animation such as a ripple effect
can be shown, to emphasize that the widget has been placed onto the
desktop in the selected location. The ripple effect distorts the
background temporarily to give the impression that the widget is being
placed into water. In one embodiment, the effect is implemented according
to animation and distortion techniques described in detail in the related
cross-referenced patent applications. In one embodiment, such animations
are configurable by the user.

[0075] In one embodiment, more than one dashboard is available. For
example, the user can configure one dashboard to contain widgets related
to work, and another for widgets related to personal matters. Different
trigger events (such as different key combinations) can be used for
triggering the various dashboards; alternatively, the user can select
from a pop-up menu which dashboard he or she wishes to activate. The
system of the present invention stores state information for each of the
dashboards. Different dashboards can contain one or more of the same
widgets; state information for a widget can be maintained separately for
each dashboard in which the widget appears, or it can be commonly
maintained across all dashboards in which the widget appears. In
addition, different dashboards can be available for different users of
computer 102, so that each user can only access the dashboard(s) he or
she created. A user can specify a dashboard as being available to other
users, if desired. A user can also specify, for any or all of the
dashboards he or she creates, whether other users are permitted to make
changes to the dashboard(s).

[0076] In one embodiment, some or all widgets are associated with related,
fully functional applications providing expanded versions of the
functionality of the corresponding widgets. These widgets include a
button, or icon, or other element, for quickly launching the associated
application. When the user clicks on the button, the dashboard is
dismissed, the normal desktop user interface is reactivated, and the
associated application is automatically launched. For example, as will be
described in more detail below, a music player widget can include a
button for launching a fully functional music player application
containing additional features beyond what is available in the widget.

[0077] In one embodiment, a button can be provided for accessing a
website, web page, or web-based application having functionality or
information related to a widget. When the user clicks on the button, the
dashboard is dismissed, the normal desktop user interface is reactivated,
a web browser is launched, and the web page (or the like) associated with
the widget is automatically launched. For example, a stock quote widget
may include a button for accessing a website that includes more detailed
information on a portfolio or on a particular stock. In another
embodiment, related fully functional applications, websites, web pages,
or web-based applications can be accessed by other means than a button
within the widget. For example, such functionality can be launched via an
on-screen icon or menu, or via a keystroke or key combination.

[0078] In one embodiment, the fully functional application or related
website provides context for a launched widget. For example, if the user
has highlighted a word in a document before activating a dictionary
widget, the dictionary widget's text field is automatically populated
with the highlighted word. In one embodiment, a word search is
automatically activated, and the results automatically displayed, so that
activating the dictionary widget causes a definition to be displayed
without any further user interaction. Similarly, if an email message is
open on the user's screen when an address book widget is launched, the
address book is automatically opened to a page corresponding to the
contact information for the sender of the email message. In one
embodiment, such prepopulation or automatic opening is not performed
under certain situations, such as for example if the widget is already
open to another page or entry. In one embodiment, the user can configure
the operation of the widget, including whether or not such prepopulation
or automatic opening occurs and under what circumstances it should occur.
One skilled in the art will recognize that there are many other
situations where a widget can use context information from a
currently-running application or website.

[0079] In one embodiment, some or all widgets have rollover elements;
these are user interface elements that appear when the onscreen cursor is
moved over the widget. The rollover elements disappear when the onscreen
cursor is moved so that it is no longer over the widget. In one
embodiment, rollover elements only appear if the cursor is held over the
widget for at least a predetermined period of time, such as half a
second. An example of a rollover element is a volume ring (not shown) for
music player application.

[0080] FIGS. 4 through 17D and 26 through 32 depict examples of dashboard
operations in response to various user commands; these Figures illustrate
various techniques and capabilities of the present invention.

[0081] FIG. 4 depicts a desktop user interface 400 prior to activation of
the dashboard. Desktop user interface 400 (referred to herein as
"desktop") is a conventional user interface as may be provided by an
operating system such as MacOS X. Desktop 400 has a background image,
menu bar 401, and other standard features. As is known in the art,
desktop 400 may also include windows, icons, and other elements (not
shown).

[0082] The user activates the dashboard by selecting an item from a menu,
or by clicking on an icon, or by pressing a function key or key
combination, or by some other means for invoking a command. FIG. 5
depicts an initial state for a dashboard, according to one embodiment. In
the example of FIG. 5, a configuration icon 501 is initially displayed.
Alternatively, upon activation, the dashboard can include one or more
default widgets. Alternatively, if the dashboard has previously been
activated and configured, the widgets are displayed as previously
configured. As shown in FIG. 5, the dashboard itself is not necessarily
visible as a distinct layer; rather its various components (such as
widgets, icon 501, and other features) are visible. In one embodiment,
these components are displayed in a transparent layer that allows desktop
400 to be seen through it. In one embodiment desktop 400 and its
components are darkened (or blurred, or otherwise visually modified)
while the dashboard is active, so as to emphasize that desktop 400 is
temporarily inactive. The user can easily reactivate desktop 400 and
dismiss the dashboard by simply clicking on an area of the screen where
no dashboard element is being displayed; in one embodiment, clicking on
this "negative space" causes the dashboard to be dismissed according to
techniques described in more detail below. In another embodiment, other
commands, key combinations, icons, or other user input is used to cause
the dashboard to be dismissed. In another embodiment, desktop 400 is not
visible while the dashboard is active.

[0083] In one embodiment, the user can move icon 501 to any location on
the screen by dragging it, and the position of icon 501 is persistent
from one invocation of the dashboard to the next.

[0084] The user clicks on icon 501 to activate configuration bar 601, as
shown in FIG. 6. Configuration bar 601 provides access to various widgets
that can be placed on the dashboard. In one embodiment, a text label is
shown for each available widget. In another embodiment, an icon is shown
for each available widget. If many widgets are available, they may be
arranged hierarchically by type, or alphabetically, or by any other
categorization methodology. For example, a number of categories may be
displayed; clicking on one of the categories causes a pull-down menu to
be displayed, listing a number of widgets in that category. In one
embodiment, a buy command 602 is also available, allowing the user to
select widgets from an online store or website. One skilled in the art
will recognize that the particular configuration and appearance of
configuration bar 601 in FIG. 6 is merely exemplary, and that many other
arrangements are possible. The user can dismiss configuration bar 601 by
clicking on dismissal icon 603. Referring now briefly to FIG. 31, a Done
button 3101 can also be provided for dismissing configuration bar 601.

[0085] In one embodiment, the user can move configuration bar 601 to any
location on the screen by dragging it, and the position of configuration
bar 601 is persistent from one invocation of the dashboard to the next.
Also, in one embodiment the state of configuration bar 601 (open or
closed) is persistent from one invocation of the dashboard to the next.

[0086] The user can drag widgets from configuration bar 601 onto the
surface of the dashboard (in other words, anywhere on the screen), using
standard drag-and-drop functionality for moving objects on a screen. FIG.
7 depicts user selection of a calculator widget from the configuration
bar, according to one embodiment. Calculator label 701 is highlighted, to
indicate that it has been selected by the user. FIG. 8 depicts the
dashboard after the calculator widget 801 has been placed on the screen.
In one embodiment, an animation, such as a ripple animation, is shown
when the user "drops" widget 801 by releasing a mouse button (or
equivalent input device) to place widget 801 at the desired location. The
user can move widget 801 after it has been placed, to any other desired
location, or can remove widget 801 from the screen, for example by
dragging it off the screen, or dragging it back onto configuration bar
601, or by invoking a remove command. The position, state, and
configuration of widget 801 are preserved when the dashboard is
dismissed, so that these characteristics are restored the next time the
dashboard is activated.

[0087] In one embodiment, multiple instances of some widgets can be
activated, by dragging the widget from configuration bar 601 onto the
dashboard surface two or more times. In another embodiment, only one
instance of each widget can be activated. In another embodiment, some
widgets can have multiple instances and others cannot.

[0088] Once calculator widget 801 has been placed on the dashboard, the
user can interact with it by entering numbers via a mouse or other
pointing device, or via a keyboard. Conventional operations for
calculator applications are available.

[0089] FIG. 9 depicts the screen after the user has dragged both a
calculator widget 801 and a music player widget 901 onto the dashboard,
according to one embodiment. Music player widget 901 is placed by
clicking and dragging from "iTunes" label 903 in configuration bar 601.
Music player widget 901, in this embodiment, provides a subset of the
functionality associated with a fully functional music player
application. In one embodiment, music player widget 901 includes button
902 for activating a fully functional music player application. Thus, the
user can easily launch an application that provides enhanced
functionality with respect to a widget.

[0090] In one embodiment, in response to the user clicking button 902 to
activate the full music player application, the dashboard is dismissed,
the normal desktop 400 is restored, and the full music player application
is launched. All of these steps take place automatically, without
requiring additional user intervention. FIG. 10 depicts the screen after
the user has activated the full music player application 1001 by clicking
on button 902 in music player widget 901, according to one embodiment.
The dashboard has been dismissed, and the various elements of desktop
400, including menu bar 401, are once again active.

[0091] In FIG. 11, the user has reactivated the dashboard (thus restoring
widgets 801 and 901 in their previous states and locations), and has
placed an address book widget 1101 by dragging it from label 1102. Again,
in one embodiment, a ripple animation is displayed when widget 1101 is
dropped onto its location on the dashboard.

[0092] The user can interact with address book widget 1101 as he or she
would normally interact with an address book application. For example, as
shown in FIG. 12, the user can type in the first few letters of a
person's name in field 1201; once sufficient information has been entered
to identify an individual, that individual's address card is displayed.

[0093] FIG. 13 depicts the dashboard after a number of widgets have been
placed, including notes widget 1301, calculator widget 801, music player
widget 901, and address book widget 1101. In one embodiment,
double-clicking in notes widget 1301 causes it to enter an edit mode
wherein text can be entered or edited. When not in edit mode, widget 1301
can be moved around the dashboard. In other embodiments, other types of
user actions (for example pressing modifier keys) can be used to
distinguish between text editing operations and widget-dragging
operations.

[0094] The user can dismiss configuration bar 601 by clicking on dismissal
icon 603. FIG. 14 depicts a dashboard after configuration bar 601 has
been closed, according to one embodiment. Configuration icon 501 is
displayed, which allows the user to reactivate configuration bar 601 as
desired.

[0095] The user can move widgets around the screen as desired. Widget
locations are preserved when the dashboard is dismissed, so that the
widgets reappear at the same location where they were left, when the
dashboard is activated. FIG. 15 depicts the dashboard after widgets 801,
901, 1101, 1301 have been moved to new positions.

[0096] As discussed above, in one embodiment a transition animation is
played when the dashboard is dismissed. FIGS. 16A through 16C are screen
shots depicting a "fly-out" transition animation, wherein widgets 801,
901, 1101, 1301 appear to fly off the edges of the screen when the
dashboard is dismissed. While they are flying off the edges of the
screen, widgets 801, 901, 1101, 1301 grow in size and fade, so as to
reinforce the appearance of movement and transition. At the same time,
desktop 400 and its features (such as menu bar 401) are restored to their
normal, non-faded appearance.

[0097] As discussed above, in one embodiment a transition animation is
played when the dashboard is activated. FIGS. 17A through 17D are screen
shots depicting a "fly-in" transition animation, wherein widgets 801,
901, 1101, 1301 appear to fly in from the edges of the screen when the
dashboard is activated. Widgets 801, 901, 1101, 1301 are faded and
enlarged when they first appear at the screen edges; they reduce in size
and become more solid in appearance while they are flying in, so as to
reinforce the appearance of movement and transition. At the same time,
desktop 400 and its features (such as menu bar 401) gradually fade into
the background.

[0098] In one embodiment, the system of the present invention includes the
capability to alert the user when a widget needs attention or has new
information to display to the user, even if the dashboard is not
currently active. For example, an icon on a "Dock", or taskbar, or other
user interface element commonly associated with a desktop user interface,
can blink or bounce or otherwise indicate an alert condition. A
distinctive sound can also be played. Alternatively, a dialog box can be
presented, or a text alert can be displayed. Whatever form it may take,
the alert can be of a generalized type or it may indicate the specific
widget that issued the alert, and may even have additional information
specifying the nature of the alert. The user can then activate the
dashboard (either by a dashboard activation command as described above,
or by clicking on an icon or button associated with the alert) to see the
widget that issued the alert. Alternatively, the dashboard can
automatically be activated in such a situation, or a dialog box can be
presented to allow the user to indicate whether or not the dashboard
should be activated.

[0099] For example, a package tracking widget may issue an alert when a
package has been delivered. The alert may be generalized, or it may
indicate that the package tracking widget is the source of the alert, or
it may even provide the delivery information. The user can dismiss the
alert, or activate the dashboard to see the widget and interact with it
to obtain more information. As another example, a traffic webcam widget
can issue an alert when an accident has occurred on the route covered by
the webcam.

[0100] In one embodiment, configuration bar 601 has several possible
states. Referring now to FIG. 26, there is shown an example of the
dashboard where the configuration bar is closed, so that configuration
icon 501 is displayed. Two stickies widgets 1301 are currently being
displayed, along with two clock widgets 2500A, 2500B.

[0101] Clicking on configuration icon 501 causes configuration bar 601 to
be displayed in a first state, as shown in FIG. 27. The first state
includes labels 2701 for various widgets that are designated as
"favorites"; in one embodiment, these are a subset of all of the widgets
currently installed on the user's machine. Thus, in this state, the user
is presented with only those widgets that are commonly needed. As will be
seen, the user is able to configure this view so that it includes any
desired subset of installed widgets. In one embodiment, configuration bar
601 in this state includes a "More" label or icon. The user clicks on
this label or icon to cause configuration bar 601 to expand to its second
state, as shown in FIG. 28. Dismissal icon 603 causes configuration bar
601 to be dismissed, reverting to configuration icon 501 as shown in FIG.
26. In one embodiment, the on-screen position of icon 603 matches that of
icon 501, so that the user can easily open and close configuration bar
601 without moving the cursor around.

[0102] The user can drag labels 2701 onto the dashboard surface to place
widgets onto the dashboard. As described above, in one embodiment a
distinctive animation, such as a ripple effect, is shown to reinforce the
notion that the widget is being placed at the specified location.

[0103] Referring now to FIG. 28, there is shown an example of
configuration bar 601 in its second, expanded state, providing access to
additional widgets as well as the favorite widgets that were presented in
the first state. In this state, configuration bar 601 has two sections
2802, 2803. Section 2802 includes labels 2701 for favorite widgets; this
includes the same subset of widgets that is included in the first state
of configuration bar 601, as shown in FIG. 27. Section 2803 includes
labels 2701 for other widgets that are not included in the set of
favorite widgets. Dragging a label 2701 from section 2802 to 2803 causes
the corresponding widget to be removed from the favorites subset.
Dragging a label 2701 from section 2803 to 2802 causes the corresponding
widget to be added to the favorites subset. Dragging a label 2701 from
either section 2802 or 2803 onto the dashboard surface causes the
corresponding widget to be placed at the specified location. Dragging a
label 2701 from either section 2802 or 2803 onto trash icon 2801 causes
the label 2701 to be removed from configuration bar 601; in one
embodiment, this also causes the corresponding widget to be removed from
the dashboard (if it is currently open). In one embodiment, dragging a
label 2701 onto trash icon 2801 also causes the corresponding widget to
be deleted from the user's machine, or made unavailable. In one
embodiment, the user is presented with a dialog box to confirm that he or
she wishes to delete the widget. In one embodiment, the user can also
drag widgets onto trash icon 2801 to cause the widgets to be closed,
dismissed, and/or uninstalled. More gadgets label 2602 provides access to
a website, online store, or other resource for obtaining and installing
additional widgets; in one embodiment it offers functionality that is
similar to buy command 602 as described above in connection with FIG. 6.

[0104] In one embodiment the state of configuration bar 601 is persistent
from one invocation of the dashboard to the next.

[0105] Referring now to FIG. 30, there is shown an example of a dashboard
wherein some labels 2701A in configuration bar 601 have changed in
appearance, while other labels 2701B, 2701C are unchanged, according to
one embodiment. In one embodiment, when a widget is open, its
corresponding label 2701 on configuration bar 601 changes in appearance;
for example, it is grayed out or displayed in some other color. In
another embodiment, label 2701 is grayed out (or otherwise changed) only
if the widget is a single-instance widget (as described above); for
multiple-instance widgets, label 2701 remains unchanged when the widget
is opened. Such a technique provides an indication to the user as to
which labels 2701 can be used to activate a widget (either because they
are not currently open or because they are multiple-instance widgets) and
which labels 2701 are currently inactive (because they correspond to
single-instance widgets that have already been opened). In the example of
FIG. 30, address book 1101, calculator 801, calendar 1801, music player
901, and stock quote widget 1901 are open, single-instance widgets;
therefore their corresponding labels 2701A are grayed-out. Stickies 1301
and clock 2500 are open, multiple-instance widgets; therefore their
corresponding labels 2701B are unchanged. Labels 2701C are also
unchanged, since they correspond to widgets that are not currently open.

[0106] In another embodiment, labels 2701 corresponding to open
multiple-instance widgets have a different appearance than labels 2701
corresponding to widgets that are not currently open.

[0107] In another embodiment, when a widget is opened, its label 2701 is
removed from configuration bar 601. When the widget is closed, its label
2701 is restored in configuration bar 601. In another embodiment, when a
single-instance widget is opened, its label 2701 is removed from
configuration bar 601, but when a multiple-instance widget is opened, its
label 2701 remains on configuration bar 601. When the single-instance
widget is closed, its label 2701 is restored in configuration bar 601.
Removing and/or restoring labels 2701 can be accompanied by animations to
reinforce the transition from configuration bar 601 onto dashboard
surface and vice versa. For example, when closing a widget, the widget
can appear to be sucked into configuration bar 601 as the corresponding
label 2701 is restored.

[0108] If a widget is deleted or removed (by dragging it or its label to
trash icon 2801, for example), its label 2701 is removed from
configuration bar 601.

[0109] In one embodiment, the user can close a widget by clicking on a
close icon, or by dragging the widget back to configuration bar 601.
Referring now to FIG. 29, there is shown a screen shot depicting a
dashboard including close icon 2901 for closing widget 2500B. In one
embodiment, icon 2901 is a rollover icon; it appears when the user has
positioned the cursor over widget 2500B, and it disappears when the
cursor is no longer positioned over widget 2500B. In one embodiment,
rollover icon 2901 only appears if the cursor is held over widget 2500B
for at least a predetermined period of time, such as half a second. In
one embodiment, when a widget is closed, an animation is played to
reinforce the notion that the widget is closing. For example, the widget
may be momentarily distorted in such a way that it appears to be sucked
into close icon 2901, or onto configuration bar 601, before it disappears
from the screen. Other types of animations or effects may also be used,
such as a fade, or a wipe, or a shrinking effect. In one embodiment, the
user can configure which effect is desired, or if no effect is desired.

[0110] Widget 2500B also includes preferences icon 2902 for accessing
preferences controls for widget 2500B. In one embodiment, icon 2902 is a
rollover icon; it appears when the user has positioned the cursor over
widget 2500B, and it disappears when the cursor is no longer positioned
over widget 2500B (although it continues to be visible when the cursor is
moved over to icon 2902). In one embodiment, icon 2902 only appears if
the cursor is held over widget 2500B for at least a predetermined period
of time, such as half a second. Clicking on icon 2902 causes preferences
controls to be displayed. In one embodiment, preferences are entered
using a conventional dialog box (not shown) as is known in the art. In
another embodiment, clicking on icon 2902 causes widget 2500B to appear
to flip over, revealing its reverse side, which contains preferences
controls.

[0111] Referring now to FIG. 32, there is shown an example of the
dashboard where two widgets 2500A and 1301A have been flipped over,
revealing preferences controls 3201. In the example, preferences controls
3201 include menus for selecting a location (for clock widget 2500A), and
paper color selector and font selector (for stickies widget 1301A). One
skilled in the art will recognize that any type of controls, menus,
fields, or other elements can be included in preferences controls 3201.
The user can dismiss preferences controls 3201 by clicking on Done button
3203 or on close box 3202. In one embodiment, close box 3202 is a
rollover icon, so that it is only visible when the cursor is positioned
over widget 1301A (although it continues to be visible when the cursor is
moved over to close box 3202). In one embodiment, when preferences
controls 3201 are dismissed, a flip-over animation is again played, and
the normal appearance of the widget is restored (reflecting any changes
that were made via preferences controls 3201).

[0112] Referring now to FIG. 31, there is shown another example of a
dashboard wherein some labels 2701A in configuration bar 601 have changed
in appearance, while other labels 2701B, 2701C are unchanged, according
to one embodiment. Address book 1101, calculator 801, calendar 1801,
music player 901, and stock quote widget 1901 are open, single-instance
widgets; therefore their corresponding labels 2701A are grayed-out.
Stickies 1301A and 1301B are open, multiple-instance widgets; therefore
their corresponding label 2701B is unchanged. Labels 2701C, including
world clock label, are also unchanged, since they correspond to widgets
that are not currently open. In FIG. 31, the cursor (not shown) is
positioned over stickies widget 1301B, so that close box 2901 and
preferences icon 2902 are displayed, as described above in connection
with FIG. 29.

[0114] In one embodiment, flipping a widget over reveals other
information, fields, or controls in addition to (or instead of)
preferences fields and controls. One skilled in the art will recognize
that the reverse side of a widget can include any type of auxiliary
information, fields, or controls, and is not limited to a mechanism for
accessing preferences controls.

Widget Installation

[0115] In one embodiment, widgets are preinstalled on the user's computer,
so that dragging them onto the dashboard merely makes them active. In
another embodiment, widgets are not preinstalled, but are installed in
response to the user dragging them onto the dashboard. In another
embodiment, dragging a widget onto the desktop causes code for the widget
to be downloaded from a remote server and installed on the user's
machine. In another embodiment, installing a widget in this manner also
causes a fully functional application containing related functionality to
be automatically installed as well (although the user can be given the
option to decline such an installation); for example, installing a music
player widget can cause a fully functional music player application to be
installed as well. Authentication and payment may be prerequisites for
such operations in some embodiments.

[0116] For example, referring briefly to FIG. 28, in one embodiment the
user clicks on more gadgets label 2602 to access an online widget store
or website where widgets are available for purchase or for free download.
The user selects widget(s) for installation on his or her machine, and
pays via credit card (if required). The online store or website is
dismissed, the selected widget(s) are downloaded and installed, the
dashboard is automatically reactivated, and the selected widget appears
in configuration bar 601, ready to be dragged onto the dashboard surface.
Alternatively the new widget can automatically be placed on the dashboard
surface. Thus, the present invention provides an easy, seamless way to
install widgets.

[0117] In one embodiment, an online store or free distribution site is
provided for making widgets 303 available. Available widgets 303 can be
viewed, previewed, selected and installed from a website, or from a
configuration option within the dashboard. In one embodiment, users can
pay for widgets 303 using a credit card or any other conventional means
for online purchases. Widgets 303 are transmitted and installed on the
user's computer according to conventional means. In one embodiment,
widgets 303 are installed according to techniques describe in related
U.S. Utility patent application Ser. No. ______, for "User Interface for
Assisting in the Installation of an Asset," filed Jun. 22, 2004, the
disclosure of which is incorporated herein by reference.

[0118] In one embodiment, widgets such as 801 are implemented using HTML
technology with enhancements that are more fully described below and in
the related cross-referenced applications. One skilled in the art will
recognize, however, that any graphics technology can be used for
implementing widgets such as 801.

[0119] In one embodiment, widgets 303 are encrypted into a flat file that
is expandable in memory, either in whole or in parts. Widget 303 contents
are indexed so that particular resources can be accessed as needed.
Widgets 303 may be encrypted according to any conventional encryption
technology.

[0120] In one embodiment, clients 302 have complete control of resource
loading of the WebView. When a relative resource is requested, the client
302 converts the protocol to one specific to the process. In one
embodiment, the NSURL Protocol in Foundation is used to fetch data from
the encrypted source.

Software Architecture

[0121] Referring now to FIG. 3, there is shown an example of a software
architecture 300 for implementing the present invention according to one
embodiment. In the embodiment, the present invention operates in
connection with an operating system 109 as described above.

[0122] In one embodiment, software architecture 300 includes dashboard
server 301, dashboard client(s) 302, and widget(s) 303. Dashboard
configuration information 304 is used by server 301 and/or clients 302 to
specify the configuration options for displaying widgets 303. All of the
dashboard configuration information, including access levels and the like
(if applicable), is stored in dashboard configuration information 304. As
described above, such information may include dashboard configuration
information for two or more dashboards configured by the same user or by
different users.

[0123] In one embodiment, widgets 303 are displayed using HTML and related
web technology. Dashboard server 301 manages and launches dashboard
client 302 processes. Each dashboard client 302 loads a widget 303, which
in one embodiment is an HTML webpage and related resources needed to
display the page. In one embodiment, a client 302 is initiated for each
widget 303 to be displayed. In one embodiment, clients 302 display
widgets 303 without a conventional window frame, menu bar, or other
components typically associated with on-screen windows; this provides a
clean, straightforward display of the overall dashboard that avoids
confusion and clutter. Clients 302 display widgets 303 by rendering web
pages into a "WebView"; the size of each WebView is defined as metadata
associated with the corresponding widget 303. Server 301 is a window
server that provides data for rendering a layer that can be overlaid on
the normal desktop of the user interface. Widgets 303 are rendered into
the separate layer, and then that layer is drawn on top of the normal
desktop, so as to partially or completely obscure the desktop while the
dashboard is active.

Dashboard Server 301

[0124] Dashboard server 301 is a lightweight process that can stand alone
or be imbedded in another process. Server 301 can be located at computer
102, or at remote server 107. Server 301 provides the following
functionality:

[0125] Non-widget UI. In one embodiment, server 301 handles user interface
functionality that is not directly related to widgets. This includes, for
example: activation; deactivation; dashboard background; background
animations; and the like.

[0126] Window management. In one embodiment, server 301 acts as a
lightweight window server for the dashboard client 302 processes. Windows
are created in server 301 process and then passed to dashboard clients
302. Operations performed on windows go through dashboard server 301.
Such operations include, for example: resizing; moving; fetching of
position and size; and the like. One advantage to having window
operations pass through server 301 is that server 301 can then react to
widget 303 changes and update the overall environment. For example,
server 301 can cause displayed widgets 303 to bounce off of each other,
stick to sides of the screen, snap to grids, or the like.

[0127] Fast login. In one embodiment, dashboard clients 302 are launched
and then rendered into a window from dashboard server 301. Since this can
take some time, dashboard server 302 provides an initial image to be
rendered in the window while client 302 is launched, so as to improve
visual feedback and to make initial activation animation appear
instantaneous. As dashboard clients 302 load and render, they take over
the window and draw their content.

[0128] Event management. In one embodiment, server 301 acts as an event
server as well as a window server. Events come from the operating system
window server to dashboard server 301 and are routed to the appropriate
dashboard client 302. This indirection allows for a variety of features,
including: server-side dragging (even if a dashboard client 302 is hung);
filtering of events; insertion of server-generated events; and the like.
Dashboard clients 302 communicate with server 301 to describe control
regions, so that server 301 can initiate server-side drags correctly.

[0129] Loading widgets 303. In one embodiment, server 301 is responsible
for loading widgets 303. It maintains the list of widgets 303 to load
when starting up. In one embodiment, the dashboard client 302
corresponding to a particular widget 303 is not launched until the first
time the dashboard is activated.

[0130] Arbitration of widgets 303. In one embodiment, server 301 is the
arbitrator of dashboard clients 302. It controls the process and passes
information to and from each widget 303. If a widget 303 crashes,
dashboard server 301 re-launches the process automatically. It also
prevents crash loops where a widget 303 crashes repeatedly at startup. In
one embodiment, all communication to a widget 303 goes through dashboard
server 301 first.

[0131] CoreImage integration. In one embodiment, server 301 uses CoreImage
technology, as described in related U.S. Utility patent applications
cross-referenced above. Filters are applied to the background window of
the server to provide spotlight and ripple effects.

[0132] Widget 303 preference management. In one embodiment, server 301
stores, in configuration information 304 that is stored according to a
conventional file system, preferences associated with widgets 303, and
vends those preferences to widgets 303.

Dashboard Client 302

[0133] In one embodiment, each client 302 is a lightweight process that
uses, for example, objects defined as part of a development environment
such as Cocoa Application Framework (also referred to as the Application
Kit, or AppKit), described for example at Mac OS X Panther Release Notes
Cocoa Application Framework, available at
"http://developer.apple.com/documentation/ReleaseNotes/Cocoa/AppKit.html"-
). Clients 302 can be implemented as simplified browser screens that omit
conventional interface features such as a menu bar, window frame, and the
like. In one embodiment, clients 302 provide the following functionality
in implementing the present invention:

[0134] Control of the WebView. Client 302 creates a WebView and attaches
the HTML of widget 303 to the WebView. Client 302 acts as the delegate
for user interface requests made by the WebView. In one embodiment,
client 302 overrides much of AppKit's default behavior as it regards to
communication to server 301 and event handling. WebViews are generic
controls for viewing and manipulating HTML and XHTML; they are described,
for example, at Web Kit Reference for Objective-C, available at
"http://developer.apple.com/documentation/Cocoa/Reference/WebKit/ObjC_cla-
ssic/inde x.html".

[0135] JavaScript extensions. In one embodiment, client 302 inserts a
custom object in the JavaScript runtime of the WebView. This allows for a
variety of extensions for widgets 303, including without limitation:
copy/cut/paste; getting/setting preferences; notifications when
preferences have changed; opening a linked application (for example, a
widget 303 may include a button or other trigger that causes a
corresponding application to be launched); quitting; moving/resizing; and
the like.

[0136] Managing Plug-ins. Some widgets 303 use native code as part of
their implementations. In one embodiment, client 302 includes the
capability to interface with such native code and/or with databases and
data stores available locally or remotely. In one embodiment, widgets 303
also have the ability to create a custom AppKit NSView. A widget
developer can use a custom view to enable other types of animations, such
as OpenGL views, plug-ins such as Flash, and the like.

[0137] In one embodiment, plug-ins are implemented as follows. An Obj-C
bundle is loaded from a resources folder associated with widget 303. The
bundle has two methods on its Principal Class:

[0140] initWithWebView is called when the Dashboard Client starts up, and
webViewLoaded is called when the page finishes loading. The developer of
a plug-in can use the WebKit's scripting APIs to extend the JavaScript
for a particular widget 303.

Widget 303 Format

[0141] In one embodiment, each widget 303 is implemented as an HTML file.
The HTML file can reference other local and remote resources such as
style sheets, other HTML files, JavaScript files, images, and the like.
Widgets 303 can be implemented using, for example, a flat bundle file
format or a packaged HTML file format.

[0142] Flat Bundle. The Flat Bundle format has the following directory
structure:

[0143] My.widget (directory/Bundle)

[0144] Info.plist (file)

[0145] My.html (file)

[0146] My.png (file)

[0147] English.lproj (optional
directory)

[0148] Localizable.strings (file)

[0149] The Info.plist describes widget 303. It also provides an identifier
for widget 303, and points to the main HTML file and default PNG file.
The default PNG file is used as a temporary display while dynamic
elements are loaded from server 301. An example of a structure for
Info.plist is as follows:

[0150] My.html can reference any other local resource as well. In one
embodiment, the resources are specified relative to the HTML file's
location.

[0151] My.png can have any name, based on the "DefaultImage" key in the
Info.plist. This image is rendered by server 301 if there is no cached
representation.

[0152] The English.lproj and other localizable directories are for
localizable strings.

Widget 303 Location

[0153] In one embodiment, widgets 303 are stored locally in storage device
106 such as a hard drive. Per-machine widgets 303 are stored at, for
example:

[0154] /Library/Widgets/

[0155] /Applications/Widgets/

[0156] Widgets 303 can also be made available on a per-user basis,
particularly in situations where more than one user uses the same
computer 102. Per-user widgets 303 are stored, for example, at:

[0157]
˜/Widgets

[0158] ˜/Library/Widgets/

[0159] One skilled in the art will recognize that these configurations are
merely exemplary, and that any other file format or directory structure
can be used.

Widget 303 Development

[0160] In one embodiment, widgets 303 can be developed using WebKit,
described, for example, at Web Kit Reference for Objective-C, available
at "http://developer.apple.com/documentation/Cocoa/Reference/WebKit/ObjC_-
classic/inde x.html". Additional functionality can also be provided, such
as the ability to drag to and from web pages, detect control regions,
stop plug-ins and timers from firing when the dashboard is hidden, and
the like. In one embodiment, such additional functionality is provided
using an enhanced Canvas architecture, as described in related U.S.
Provisional patent application Ser. No. ______, for "Procedurally
Expressing Graphic Objects for Web Pages," filed Jun. 25, 2004, the
disclosure of which is incorporated herein by reference. In addition, web
extensions that are well known in the art can be used for providing
additional functionality such as drag-and-drop capability, detection of
control regions, and the like.

[0161] For widgets that involve additional, more detailed rendering than
is available from WebKit/HTML, a <canvas> tag is provided. A
CoreGraphics context is fetchable from the <canvas> tag, and
JavaScript is then used to draw into the context and effectively the HTML
page. Detailed description of this implementation can be found in the
related applications.

Remote Server 107 Access

[0162] In one embodiment, some or all widgets 303 communicate with a
remote server 107 in order to perform their functions. For example, a
weather widget requests current weather data from a remote server 107,
while a package tracking widget requests current data regarding package
locations from a remote server 107. Such communication takes place
according to well-known techniques for requesting and receiving
information across a network such as the Internet: widget 303 or client
302 forms a request for data, and transmits the request according to HTTP
or some other network protocol; server 107 responds to the request with
the information; and widget 303 uses the information in forming the
output that will be displayed to the user. In one embodiment, these
operations take place in response to JavaScript code within widget 303.
Server 107 can be a resource that is available generally to the public,
or it can be a proprietary source of information to which the user has
been given access. Where appropriate, authorization and/or user
verification can be required before server 107 transmits requested
information. If desired, the information can be transmitted across a
secure channel and/or encrypted prior to transmission, according to
techniques that are well known in the art.

Examples of Widgets 303

[0163] The following is a list of examples of widgets 303 that can be
provided using the techniques of the present invention. One skilled in
the art will recognize that many other types of widgets 303 can be
provided.

[0164] buddy list

[0165] calculator

[0166] date book

[0167] dictionary

[0168] online music store and music player

[0169] movie show times

[0170] news feed

[0171] package tracker

[0172] rolodex

[0173] sports scores

[0174] stickies

[0175] stock quotes

[0176] webcam

[0177] weather

[0178] world clock

[0179] currency converter

[0180] online auction viewer and tool

[0181] lottery

[0182] mini inbox for receiving email

[0183] puzzle

[0184] telephone directory (e.g., yellow pages)

[0185] FIGS. 18 through 25 depict examples of some of these types of
widgets 303. One skilled in the art will recognize that the particular
layout, appearance, and arrangement of each of these widgets 303 are
merely exemplary. In particular, any or all of these widgets 303 can
include a button for accessing a fully functional application having
expanded functionality, as described above in connection with FIGS. 9 and
10.

[0186] FIG. 18 depicts an example of a calendar widget 1801 according to
one embodiment, including current date 1802, calendar display 1803
showing current month, and appointments 1803A. In one embodiment, data
for the calendar is stored locally at computer 102; in another
embodiment, widget 1801 retrieves calendar data from a remote server 107.

[0187] FIG. 19 depicts an example of a stock quote widget 1901 according
to one embodiment, including several stock quotes 1902, a graph 1903 for
a selected stock, and an edit button 1904 for making changes to the
stocks to be included in widget 1901. In one embodiment, widget 1901
retrieves stock quote data from a remote server 107.

[0188] FIG. 20 depicts an example of a weather widget 2001 according to
one embodiment, including current temperature conditions 2002, current
time 2003, and forecast 2004. Widget 2001 can be configured to show
weather information for any one or more locations of interest to the
user. In one embodiment, widget 2001 retrieves weather data from a remote
server 107.

[0189] FIG. 21 depicts an example of a traffic webcam widget 2100,
including a current photograph 2102 (or live video feed) of a specified
location, and an identifier 2101 of the location according to one
embodiment. Widget 2100 can be configured to show images for any one or
more locations of interest to the user. In one embodiment, widget 2100
retrieves photographs and/or video from a remote server 107.

[0190] FIG. 22 depicts an example of a music player widget 901 according
to one embodiment, including now-playing indicator 909, counter 2202,
controls 2201 for pausing, playing, rewinding and fast-forwarding, and
button 902 for accessing a fully functional music player application, as
described above in connection with FIGS. 9 and 10. In one embodiment,
widget 901 retrieves music data from a remote server 107.

[0191] FIG. 23 depicts an example of a package tracking widget 2300
according to one embodiment, including a list of delivery services 2303,
one of which is currently selected. Package tracking information 2301 for
the selected delivery service is shown, including a name for each item
being delivered, current status, tracking number, and the date of the
last update for that item. Detailed tracking info 2302 is shown for a
selected item in 2301. The user can configure widget 2300 to add items to
be tracked, format the results, and the like. In one embodiment, widget
2300 retrieves package tracking data from a remote server 107.

[0192] FIG. 24 depicts an example of an address book widget 1101 according
to one embodiment. Widget 1101 includes the following information for an
individual: a name 2402, photograph 2401, and contact information 2403.
Arrows 2404 allow the user to navigate to other records in the address
book. Search field 1201 allows the user to search for names that begin
with or include the search terms. In one embodiment, data for the address
book is stored locally at computer 102; in another embodiment, widget
1101 retrieves address book data from a remote server 107.

[0193] FIG. 25 depicts an example of a clock widget 2500 according to one
embodiment, including a current time display 2501 (which can take any
form, digital and/or analog), and a location 2502 corresponding to the
current time display 2501. The user can configure widget 2500 to change
the time, location, and/or format of the display.

[0194] In one embodiment, clock widget 2500 changes in appearance
according to the time of day. For example, a light-colored face can be
shown during the day, and a dark face can be shown at night. Referring
again to FIG. 26, clock widget 2500A has a light-colored face because the
local time in San Francisco is 11:28 am, while clock widget 2500B has a
dark face because the local time in London is 7:28 pm. In one embodiment,
other distinguishing visual characteristics are used to denote day and
night. In one embodiment, local times from 6:00 am to 6:00 pm are
indicated as being daytime, while local times from 6:00 pm to 6:00 am are
indicated as being night time. In another embodiment, actual sunrise and
sunset times are used for controlling the appearance of clock widget 2500
(based on the selected location for the clock widget 2500, and further
based on sunrise/sunset information retrieved from stored tables or from
a resource such as a website). In another embodiment, a continuous
gradation is used, so that times near sunset or sunrise are shown in some
gradation between the dark and light-colored faces; such times may also
be shown in a pinkish hue to further reinforce the sunset or sunrise time
period.

[0195] FIG. 33 depicts an example of a calculator widget 801 according to
one embodiment, including numeric display 3301, keypad 3304, arithmetic
operator keys 3302, memory keys 3305, and equals key 3303. Keys 3302,
3303, 3304, and 3305 generally function in a manner similar to that of
conventional calculators and calculator accessories, except as noted
herein. Display 3301 shows results of calculations in a manner similar to
that of conventional calculators and calculator accessories, except as
noted herein.

[0196] In one embodiment, display 3301 lights up, or otherwise changes in
appearance, to indicate that calculator widget 801 is active. For
example, display 3301 may light up when the user first clicks somewhere
within widget 801, and may stay lit until the user dismisses widget 801
or clicks somewhere outside widget 801. While display 3301 is lit, widget
801 is active and can receive user input via the onscreen cursor or via a
keyboard or other input device.

[0197] In one embodiment, operator keys 3302 light up when lit, and stay
lit until the next key is pressed, so as to remind the user what
operation is being performed. For example, in FIG. 33 the division
operator key 3302 is lit, signifying that the user has clicked on that
key, and reminds the user that the current operation is a division
operation. In one embodiment, operator key 3302 stays lit until another
operator key 3302 is pressed, or until the clear button is pressed, or
until equals key 3303 is pressed; in another embodiment, operator key
3302 stays lit until any other key is pressed.

[0198] Referring now to FIGS. 34A and 34B, there is shown an example of a
dictionary/thesaurus widget 3400 according to one embodiment. A user can
type a word in text input field 3403, and can select dictionary or
thesaurus functionality by clicking on text labels 3401 or 3402,
respectively, to see either definition 3406 or synonyms 3408. If either
definition 3406 or synonyms 3408 do not fit within the bounds of widget
3400, widget 3400 can auto-resize accordingly, or can display arrows 3407
for accessing the rest of the information. Thumb index 3405 can also be
presented, allowing the user to quickly access other words that appear on
the same dictionary page as the entered word. In one embodiment, a
reverse lookup dictionary (not shown) can also be provided (the user
enters a definition or part thereof, and widget 303 responds with one or
more words that match the entry). In one embodiment, data for the
dictionary/thesaurus is stored locally at computer 102; in another
embodiment, the dictionary/thesaurus widget retrieves its data from a
remote server 107.

[0199] In one embodiment, the dashboard is also available to a user from a
remote location. Configuration information for the user's dashboard is
stored at a remote server, pursuant to a user command or automatically.
The user can then log in from a remote computer or other device, and be
presented with a web page that duplicates the user's dashboard as it
would be viewed from his or her own computer. Widgets 303 are provided
via HTML pages per the extended functionality described above. The user
can interact with widgets 303 in the same manner as from his or her own
computer.

[0200] In the above description, for purposes of explanation, numerous
specific details are set forth in order to provide a thorough
understanding of the invention. It will be apparent, however, to one
skilled in the art that the invention can be practiced without these
specific details. In other instances, structures and devices are shown in
block diagram form in order to avoid obscuring the invention.

[0201] In particular, one skilled in the art will recognize that other
architectures and graphics environments may be used, and that the present
invention can be implemented using graphics tools and products other than
those described above. In particular, the client/server approach is
merely one example of an architecture for providing the dashboard
functionality of the present invention; one skilled in the art will
recognize that other, non-client/server approaches can also be used.

[0202] Reference in the specification to "one embodiment" or "an
embodiment" means that a particular feature, structure, or characteristic
described in connection with the embodiment is included in at least one
embodiment of the invention. The appearances of the phrase "in one
embodiment" in various places in the specification are not necessarily
all referring to the same embodiment.

[0203] Some portions of the detailed description are presented in terms of
algorithms and symbolic representations of operations on data bits within
a computer memory. These algorithmic descriptions and representations are
the means used by those skilled in the data processing arts to most
effectively convey the substance of their work to others skilled in the
art. An algorithm is here, and generally, conceived to be a
self-consistent sequence of steps leading to a desired result. The steps
are those requiring physical manipulations of physical quantities.
Usually, though not necessarily, these quantities take the form of
electrical or magnetic signals capable of being stored, transferred,
combined, compared, and otherwise manipulated. It has proven convenient
at times, principally for reasons of common usage, to refer to these
signals as bits, values, elements, symbols, characters, terms, numbers,
or the like.

[0204] It should be borne in mind, however, that all of these and similar
terms are to be associated with the appropriate physical quantities and
are merely convenient labels applied to these quantities. Unless
specifically stated otherwise as apparent from the discussion, it is
appreciated that throughout the description, discussions utilizing terms
such as "processing" or "computing" or "calculating" or "determining" or
"displaying" or the like, refer to the action and processes of a computer
system, or similar electronic computing device, that manipulates and
transforms data represented as physical (electronic) quantities within
the computer system's registers and memories into other data similarly
represented as physical quantities within the computer system memories or
registers or other such information storage, transmission or display
devices.

[0205] The present invention also relates to an apparatus for performing
the operations herein. This apparatus may be specially constructed for
the required purposes, or it may comprise a general-purpose computer
selectively activated or reconfigured by a computer program stored in the
computer. Such a computer program may be stored in a computer readable
storage medium, such as, but is not limited to, any type of disk
including floppy disks, optical disks, CD-ROMs, and magnetic-optical
disks, read-only memories (ROMs), random access memories (RAMs), EPROMs,
EEPROMs, magnetic or optical cards, or any type of media suitable for
storing electronic instructions, and each coupled to a computer system
bus.

[0206] The algorithms and modules presented herein are not inherently
related to any particular computer or other apparatus. Various
general-purpose systems may be used with programs in accordance with the
teachings herein, or it may prove convenient to construct more
specialized apparatuses to perform the method steps. The required
structure for a variety of these systems will appear from the description
below. In addition, the present invention is not described with reference
to any particular programming language. It will be appreciated that a
variety of programming languages may be used to implement the teachings
of the invention as described herein. Furthermore, as will be apparent to
one of ordinary skill in the relevant art, the modules, features,
attributes, methodologies, and other aspects of the invention can be
implemented as software, hardware, firmware or any combination of the
three. Of course, wherever a component of the present invention is
implemented as software, the component can be implemented as a standalone
program, as part of a larger program, as a plurality of separate
programs, as a statically or dynamically linked library, as a kernel
loadable module, as a device driver, and/or in every and any other way
known now or in the future to those of skill in the art of computer
programming. Additionally, the present invention is in no way limited to
implementation in any specific operating system or environment.

[0207] It will be understood by those skilled in the relevant art that the
above-described implementations are merely exemplary, and many changes
can be made without departing from the true spirit and scope of the
present invention. Therefore, it is intended by the appended claims to
cover all such changes and modifications that come within the true spirit
and scope of this invention.

Patent applications by Gregory N. Christie, San Jose, CA US

Patent applications by Imran A. Chaudhri, San Francisco, CA US

Patent applications by John O. Louch, San Luis Obispo, CA US

Patent applications by Apple Inc.

Patent applications in class Network resource browsing or navigating

Patent applications in all subclasses Network resource browsing or navigating