Deprecation Warning

Hippocanvas is sort of deprecated. Initially, hippocanvas was to be the basic building block for all Activities, but it proved too immature to be used everywhere. Instead activity developers are encouraged to use the standard GTK components. However, hippocanvas does provide some features that are difficult or impossible with standard GTK, as used by Chat and a few other Sugar elements. Therefore, it is included in the build.
-Benjinam M. Schwartz

Introduction

HippoCanvas is a generic user interface element that can draw Cairo graphics, respond to key and mouse events, and lay out other widgets. It is currently used to implement a number of Sugar's custom widgets (toolbars, rounded buttons, etc.) and to lay out the screen.

On the OLPC, HippoCanvas, aka hippo, is a GTK widget and it can contain other GTK widgets, so the programmer can freely combine HippoCanvas and other widgets. While Sugar does not require that activities be written using HippoCanvas, those that do can look more visually consistent with other activities.

Rationale

HippoCanvas was originally designed to be a cross-platform UI layer built on top of other windowing systems. It is used in Sugar to work around deficiencies in GTK's layout system. [1] HippoCanvas also makes it easier to prototype custom widgets, and its Python interface can be somewhat simpler than native GTK widgets.