+class Screen;
+class Client;
+class Actions;
+class Bindings;
+
+//! Mouse cursors used throughout Openbox
+struct Cursors {
+ Cursor session; //!< The default mouse cursor
+ Cursor move; //!< For moving a window
+ Cursor ll_angle; //!< For resizing the bottom left corner of a window
+ Cursor lr_angle; //!< For resizing the bottom right corner of a window
+ Cursor ul_angle; //!< For resizing the top left corner of a window
+ Cursor ur_angle; //!< For resizing the right corner of a window
+};
+
+class Openbox;
+
+//! The single instance of the Openbox class for the application
+/*!
+ Since this variable is globally available in the application, the Openbox
+ class does not need to be passed around to any of the other classes.
+*/
+extern Openbox *openbox;
+
+//! The main class for the Openbox window manager
+/*!
+ Only a single instance of the Openbox class may be used in the application. A
+ pointer to this instance is held in the Openbox::instance static member
+ variable.
+ Instantiation of this class begins the window manager. After instantiation,
+ the Openbox::eventLoop function should be called. The eventLoop method does
+ not exit until the window manager is ready to be destroyed. Destruction of
+ the Openbox class instance will shutdown the window manager.
+*/
+class Openbox : public otk::EventDispatcher, public otk::EventHandler