Recent Changes - Search:



Deprecated

Architecture

 Next

Edit this page to change styles

--- Boxes and outlines ---

--- Headers beyond ordinary "!" level headers

--- Stegi specific stylings ---

--- Text warnings, notices, hilights ---

--- Directory paths ---

--- Calendar specific --- The BeagleBox Architecture is a detailed description of various components of the software stack. Since most of the software stack is off the shelf, this architecture focuses on integration issues and any custom software components.

Table of Contents

The User Interface

The BeagleBox UI is known as BUI (pronounced Boo-ee). BUI has multiple requirements.

BeagleBox UI (BUI) prototype: Web Video menu
  • Manage windows in stacked order.
    • There should only be two windows and they should both be full screen.
    • Two windows allows fast restart of apps if already in BG window
    • Two windows allows loading web site without having watch it load
  • Alpha blended, vertically scrolling menus
    • Left side: "Web Video" menu
    • Right side: "Applications" menu
  • A keyboard application for text entry
  • On screen display (OSD)
    • Alpha blended
    • Display progress: "Loading...", etc.
    • Information overlay at top of screen, similar to Sony Bravia info box
  • Configuration tools

The goal for BUI is a Sony Bravia styled UI, where menu options are icons that slide vertically in the display. Menus will be alpha blended with the background. This requires use of the XComposite extension in the server. The X server will probably be integrated with features of the TI OMAP processor using TI libraries.

The graphics subsystem will run on buildroot's modular X.org packages, which is the full version of the X.org server. OpenGL will provide hardware acceleration where needed. Applications will run using either GTK+ or Qt toolkits.

BUI is a fork of the Matchbox UI, including window manager and panel. BUI will provide four components:

  1. bui-wm
  2. bui-panel
  3. bui-keyboard
  4. bui-osd

The window manager, panel and keyboard will be based on components from Matchbox. The OSD component will be a new feature of BUI not available in Matchbox. A simple session manager will be used to launch the system.

Matchbox's web site is not well maintained. There are lots of broken links. But the environment and source appears well designed and structured and should provide a strong base for BUI. Matchbox's developers seem to have been absorbed by Intel, Moblin and now Meego. Because of the lack of active development on Matchbox, and because of its focus on handhelds and not set top boxes, forking Matchbox is required to create BUI.

Stacked Window Management

Applications will be full screen when running. In order to speed startup times two windows will always be open. The top (visible) window in the stack is the active window. The bottom (invisible) window is used to start up a new application or load a new web page. When the display is ready the window is moved to the top of the stack.


BeagleBox UI (BUI) prototype: Applications menu

Sliding Menus

Two menus are required for BUI. Each menu is normally hidden off to one side of the display and, when posted, slides in from that side of the screen. The menu contents slide vertically within the menu, in a ring format. Initially arrow keys on a keyboard will drive the menu interaction though future versions may support other input options (a Wii Remote, for example).

The menu will consist of uniform icons that hold screen shots of applications and/or web sites. Application screen shots should be easy to generate. Generating web site screen shots will require background processes to get updated shots automatically.

Alpha Blended Menus

MatchBox is based on GTK+ so it supports XComposite, which makes it possible to create alpha blended menus through the use of a compositing window manager such as xcompmgr. Matchbox is primarily, though not exclusively, designed for handhelds or small desktops. BUI is specific for use on televisions. Meego uses Mutter, the next-generation MetaCity window manager, over the Clutter library to get visual effects on the desktop. The use of Clutter with BUI is a possibility, but requires the use of hardware accelerated OpenGL support. XComposite support does not require specific hardware support (it only requires CPU and RAM) so OpenGL for alpha blended menus is overkill. That said, the use of OpenGL may be required for other features such as video playback.

Note that xcompmgr is a proof-of-concept compositing manager. It is rumored to have memory leaks. However, cleaning it up might be a worthy sub-project for BeagleBox development.

On screen keyboard

The key component of BeagleBox is the viewing of video over the Internet. In order for users to select web sites with content of interest they need to be able to type in URLs and save the entry. Matchbox includes an on screen keyboard. This application will be integrated into BUI to allow user configuration of URLs. The keyboard can be used by other applications as well.


BeagleBox UI (BUI) prototype: On Screen Display (OSD)

On screen display

An OSD application will provide functionality similar to the panel: slide into view using alpha blending with the background. The content of the OSD depends on the function. For the web browser it will show the configured URL. For applications other data will be displayed. The OSD will be mapped into multiple display regions allowing different types of content to be displayed.

Configuration Tools

URL configurations will need CRUD (create, read, update and delete) capabilities. This implies configuration tools included in BUI menus. URls and applications can also be temporarily disabled.

Other configuration options include:

  1. Network connection
  2. URL screenshot capture scheduling

External Tools

Surf will be used as the web browser for BeagleBox. Surf comes from suckless.org. A number of other useful tools and scripts are available from suckless.org that may improve the user experience. The most important feature is the ability to script the URL the browser should load by using X properties. This allows two copies of surf to run: a foreground (active) window showing the current URL and a background (inactive) window that moves to the front after a new page is loaded in it.

For this to work surf will need to be able to output something (text, signal, something) so we know page is loaded and we can raise window to top of stack.

There may be other tools on suckless.org that may be useful.

Off the shelf integration

BeagleBox will integrate existing open source media solutions. This includes the following features.

  • WebKit enabled browser
  • MythTV / MythWeb

WebKit enabled browser

Midori is nice but surf is even more lightweight and fits the idea of a browser that isn't a browser.

Surf is very lightweight and can be used to view a single site with no menus or typical browser controls. This makes it ideal for use in BeagleBox.

Surf supports integration of an Adobe Flash Player. However, Adobe does not yet have a freely available flash player for the ARM platform. A project is underway that may provide this in the future. Till that time, an alternative flash player is required.

Currently there are two flash projects that may provide the needed support:

Both will have to be investigated to determine their support for popular web video sites.

MythTV / MythWeb

MythTV provides a variety of useful media tools, too many to be ignored for a project like BeagleBox. However, it requires a large number of prerequisite items to run on the local hardware. Additionally, BeagleBox is specific to viewing online content and not for handling live broadcasts. Adding a TV tuner to support a MythTV backend adds cost to an already pricey DIY project. And there are no viable MythTV client-only packages available. It is unclear if attempting to create buildroot packages or ipkg/RPMs for a MythTV client for BeagleBox will be of serious benefit given the specific goals of Internet TV viewing.

That said, there is a simple way to get access to MythTV video content other than LiveTV: MythWeb. Since this option requires no special applications on BeagleBox other than configuration of the MythWeb URL it seems appropriate to include MythWeb in the testing and compliance list.

In a future release, integration of a MythTV client seems a reasonable goal along with integration of other meaningful video-based 3rd party applications.

BeagleBox Libraries

The BeagleBox API will provide a mechanism for easily integrating new applications into the menu system. This feature may not be required depending on the features currently provided by Matchbox.

Testing and Compliance

In order to be useful BeagleBox needs to be verified against a set of popular video sites. The following sites are an initial list that may be extended.

Additional Research (to be integrated into Architecture)

  • Plan
    1. Perform analysis on Matchbox to make plans
    2. Relabel from Matchbox to BUI
        * Purpose: to prevent confusion about which is which
        * Keep credits, licensing in place
  • Component Work
    1. WM - see research page
    2. Panel
        * Remove cruft from panel
            * Remove existing applets.  Only one applet needed: scrolling menu
        * Fix panel so it works properly
            * BadWindow on 64bit F11 - what about 64bit F13 and 32bit F13?
            * Review Stanislav's bug list
                * Which are for panel?
                * Which are for WM?
                * Which are for Keyboard?
    3. keyboard
        * Review
        * make work plan
            * May require better sizing to fit screens
            * center on display
    4. Architect OSD
        * make work plan
Edit - History - Print - Recent Changes - Search
Page last modified on August 19, 2010, at 08:41 PM