Inside Windows Sideshow
Dr. Neil Roodyn
Neil@Roodyn.com
What We Will Cover
• Introduce Windows SideShow • experience User • Writing a Windows SideShow gadget • Extending a Sidebar gadget • Managed Code SideShow gadgets
What is Windows SideShow?
• A new platform in Windows Vista • Enables developers to write gadgets (mini-applications) that format and send data to a variety of display devices connected to a computer • developers from writing device-specific code Frees • Provides extensibility ● Anyone can write gadgets using the API ● Anyone can build devices using the DDI • Provides end-user control of gadgets via Control Panel
10,000 Foot View
Gadget running on Windows Vista
• Gadget gets data from data source, such as application or web • Gadget output is device-independent XML (or any binary format) • Output is sent to devices via Windows SideShow APIs
10,000 Foot View
• Control Panel acts as switch, routing gadget data to devices • Based on user preferences
10,000 Foot View
Gadgets running on Windows Vista
Content Flow (push)
Navigation
Device
Device
Benefits of Supporting Windows SideShow
• Increase visibility of application or brand • Increase user interaction with content ● More scenarios ● More devices • technology leadership Show ● First-mover advantage for supporting SideShow now •eo sntaPs Is og o m A t t y uof nI ’ t i e e ys s a dn h e !
Sample Scenarios
• Cached/Offline scenarios: calendar, driving directions, e-mail, weather, traffic ● Data is cached on a device ● User interacts with content whether or not computer is available • Live/Online scenarios: media control, presentation control, instant messaging, notifications ● Data and events are sent during user interaction ● User interacts with content only when computer is on and connected
The Microsoft Gadget List
• Gadgets provided in Windows Vista
Media Player ● Windows Mail
● Windows
• io Cg … os mo nn
● Microsoft
Office 2007 and Microsoft Office
2003
• Outlook® Calendar, E-Mail, Contacts • Microsoft PowerPoint®
● Windows
Media Center Edition
Windows SideShow Gallery
• Central community for users and gadget developers • for ease of gadget discovery and Allows installation • accessible from Windows SideShow page Easily in Control Panel • http://gallery.live.com/default.aspx?l=7 Link: • Available in Beta on the Gallery now: ● Picture Viewer (beta)
SideShow-Compatible Devices
• device capable of connecting to a computer and Any displaying information supporting DDI
• A small display attached to a computer, but powered independently from the main system ● Separate processor and memory
• A simple text/bitmap display with limited interaction and custom UI
Example Devices
cell phone
• Laptop in-lid or bezel display • panel display Front • Keyboard display • phone or Pocket PC Cell • Picture frame • Remote control • alarm clock Smart • player MP3 • HDTV • or refridgerator display Wall
3r yl .v dy 5e i ” bs d ap i a
Windows SideShow-compatible devices
Attached Display
• Hardware ● ARM9 processor, running .NET MicroFramework ● 4 MB RAM, 4 MB Flash ● USB connection to host computer ● SMBus connection to embedded controller ● Power connection to computer battery • Computer ● Driver included with Windows Vista ● WinUSB as transport driver
Remote Control
• Prototypes first shown at CES 2006 • Hardware ● ARM7 running .NET MicroFramework ● Shell designed for Windows Media Center Edition ● Bluetooth connection to host computer, supporting Windows SideShow ● support for traditional remote functionality IR • Computer ● Microsoft-provided gadgets specifically for Windows Media Center Edition ● Supports existing and new gadgets
Picture Frame
• Hardware ● Digital picture frame ● Windows CE-based ● 800x480 resolution ● WiFi radio built-in ● Rendering of all content and notifications done locally • Computer ● Prototype driver uses UDP to communicate with frame ● Frame uses PnP-X to appear as physically connected device • http://www.alivingpicture.com/
How to Write Gadgets
• Windows SideShow C++ COM API
● Available
in Windows Vista ● Best for interacting with existing COM or native component
• Windows SideShow managed API
by Jeffrey Richter, available by Windows Vista launch ● Beta available shortly ● Best for interacting with existing managed component or Web services
● Written
• Windows Sidebar API
● Sidebar
gadgets are easily extended to Windows SideShow ● Accessible through HTML and JScript ● Limited subset of SideShow functionality is exposed
Simulator
• functional device simulator is included with Fully Windows Vista SDK ● VirtualSideShow.exe ● Located in
\Bin • same firmware as devices running .NET Runs MicroFramework
Types of Content
• Simple Content Format (SCF) ● New documented XML data format ● Simple layout and interaction for devices with varying capabilities ● Universal support for gadgets and devices • iCalendar ● Data format for calendaring content ● Device handles presentation, providing better experience • Custom data format ● Certain devices may support specific data formats for richer functionality
Choosing a Content Format (Endpoint)
• If gadget provides Calendar data, use iCalendar endpoint (content provided as iCal VEVENTs) • If gadget takes advantage of special hardware support, a custom device endpoint enables the device and gadget to communicate using any data type • gadgets use XML-based Simple Content Most Format (SCF), which is ● Device independent ● Easy to use to create content
Terminology
• Application ID ● GUID that represents gadget • Endpoint ID ● GUID that represents the content format used for communication between the gadget and device • Content ID ● 32-bit unsigned integer that identifies each piece of content received from a gadget ● Unique only within each gadget
Notifications
• Gadgets can send notifications in addition to content
immediately to user ● Contains title, message, and icon ● Automatically expires after specified time
● Shown
• Example:
● Incoming
Instant Message ● On-line auction notification ● Upcoming TV show
Online and Offline Gadgets
• Online-only ● Allows dynamic content in response to user input ● Gadget responds to events from device, typically causing action on the computer • Online or Offline ● Content is cached on device; it may be browsed even when the computer is offline (or not connected) ● Content cannot be modified if host computer is unavailable ● Gadget does not process events from device, except tvoti m d ’h o inm g t v c p e ei fh i a rc o d t s r ec c ns o es e n e
Events
• gadgets to respond to real-time user input on the Allow device ● example, gadgets provide content on-demand For in response to device events ● Only provided if the computer is on and the device is connected ● Content and type of application events depend on endpoint used by a gadget • Provide information on device connection and disconnection
Where the Gadget Lives
• Gadgets are standalone processes ● EXE or DLL running in the background ● Typically there is no UI ● Recommended to use the Windows SideShow Gadget Manager to run gadgets • Gadgets are part of an existing application, such as Outlook ● Typically, the existing application has a UI ● gadget updates content only when the The application is running
Gadget Manager
• Gadget Manager is part of Windows SideShow platform • gadgets when devices are Runs connected • Notifications are displayed in the system tray when new gadgets and devices are installed • is optional, but recommended Use
Gadget Metadata
• gadget adds registry entries used by Windows The SideShow • Entries contain: ● Unique ID for gadget (Application ID) ● Content format used (Endpoint ID) ● Online or offline gadget / cache algorithm ● Name and icon for gadget ● Property Page CLSID • Entries are written to one of the following locations: ● HKLM\Software\Microsoft\SideShow\Gadgets\ ● HKCU\Software\Microsoft\SideShow\Gadgets\
SCF – Simple Content Format
• Glance Content • Page Menu • Content Page • Page Dialog
SCF Glance Content
• Content ID 0 • Always UTF-8 encoded text • recommended, can be more or less 2 lines • Contains highest level summary data from gadget
Glance Content
SCF Menu Page
• page provides a list of items Menu • link to other content Items • used as a context menus Also
SCF Content Page
• Content page provides flow layout • Supports text and images ● Simple text formatting (emphasis, color, alignment) • override buttons for advanced Can navigation
DevConnections rocks! Coding is fun
SCF Dialog Page
• page provides simple dialog box with Dialog icon (for visual clue), title, message, buttons • Requires user input on a decision
Putting it all together
• Sample navigation hierarchy
Glance Content (Content Id = 0)
Menu page (Content Id = 1)
Menu items (Target Content I, ) d3 =, 2… 4
Content Page (Content Id = 4) Image content (Content Id = 51, 52...)
Extending a Sidebar Gadget
• Modify gadget.xml file to include an icon ● d s a i t n lt Ai =g ”< /m d o “e / i> e o e ● file should contain 48-,32-,16-px icons at 32bpp Icon with alpha channel • APIs in System.Gadget.SideShow Use ● setFriendlyName once as the first Windows Call SideShow call • Update data on desktop and on devices ● HTML used to present data on desktop ● Simple Content Format XML sent to devices
Extending a Sidebar Gadget to Windows SideShow
Windows SideShow Managed API
• Documentation in Windows SDK • Microsoft.SideShow.dll available for download soon ● Beta release by end of the year, RTM by Vista launch • Microsoft.SideShow and Microsoft.SideShow.SimpleContentFormat namespaces ● Extensible to support custom endpoints and content types ● Built-in support for SCF gadgets ● Helper object to generate SCF XML with validation ● Helper object for registering meta-data
Writing a Gadget in C#
Creating a Simple Gadget in C#
• GadgetRegistration object to write gadget Use metadata to registry • Instantiate ScfSideShowGadget object • glance data using Send ScfSideShowGadget.AddGlanceContent() • static members of Scf class to generate Use content and send using ScfSideShowGadget.AddContent() • event handler to exit gadget when all devices Add are removed
Call to Action
• Windows SideShow support into your applications Build and services! ● Extends the visibility and reach of your application, content, or service ● Makes users more productive in more places and scenarios ● Gadgets automatically work with a variety of devices by using standard content format ● APIs and XML-based content format are easy to use • Promotional opportunities are available with hardware partners and Microsoft
Resources
• Windows Vista SDK for Windows SideShow API ● http://msdn.microsoft.com/windowsvista/ ● documentation, Samples, Tools, Simulator API • Gadget Gallery on live.com ● http://gallery.live.com/default.aspx?l=7 • Forum ● http://microsoftgadgets.com/forums/13/ShowForum.a spx • Blog Team ● http://blogs.msdn.com/sideshow/ • Business contact: sshowext@microsoft.com
Next Steps
• Interesting scenarios?
● Get
the SDK and learn how to build your gadget ● questions or write in if you need help Post
• Writing a Sidebar Gadget?
your gadget to devices ● Look for updated samples and documentation
● Extend
• gadgets! Build
Thanks!
• Questions?