typedef std::vector<Screen *> ScreenList;
private:
- //! The display on which Openbox is running
- otk::Display _display;
-
// stuff that can be passed on the command line
//! Path to the config file to use/in use
/*!
Defaults to $(HOME)/.openbox/user.py
*/
std::string _scriptfilepath;
- //! The display requested by the user, or null to use the DISPLAY env var
- char *_displayreq;
//! The value of argv, i.e. how this application was executed
char **_argv;
//! Run the application in synchronous mode? (for debugging)
bool _sync;
//! Should Openbox run on a single screen or on all available screens?
bool _single;
+ //! Optimize for a remote/low-bandwidth connection to the display?
+ bool _remote;
//! A list of all managed clients
ClientMap _clients;
//! A list of all the managed screens
ScreenList _screens;
+
+ //! The number of managed screens
+ int _managed_count;
//! The action interface through which all user-available actions occur
Actions *_actions;
static void signalHandler(int signal);
public:
-#ifndef SWIG
//! Openbox constructor.
/*!
\param argc Number of command line arguments, as received in main()
Openbox(int argc, char **argv);
//! Openbox destructor.
virtual ~Openbox();
-#endif
//! Returns the state of the window manager (starting, exiting, etc)
inline RunState state() const { return _state; }
*/
inline Screen *screen(int num) {
assert(num >= 0); assert(num < (signed)ScreenCount(**otk::display));
- if (num >= (signed)_screens.size()) return 0;
+ if (num < 0 || num >= (signed)_screens.size()) return 0;
return _screens[num];
}
+ inline int managedScreenCount() const { return _managed_count; }
+
+ inline Screen *managedScreen(int num) {
+ assert(num >= 0); assert(num < _managed_count);
+ if (num < 0 || num >= _managed_count) return 0;
+ ScreenList::iterator it, end = _screens.end();
+ int i = -1;
+ for (it = _screens.begin(); it != end; ++it)
+ if (*it && ++i == num)
+ return *it;
+ }
+
//! Returns the mouse cursors used throughout Openbox
inline const Cursors &cursors() const { return _cursors; }
-#ifndef SWIG
//! The main function of the Openbox class
/*!
This function should be called after instantiating the Openbox class.
The Openbox::shutdown method will cause this function to exit.
*/
void eventLoop();
-#endif
//! Adds an Client to the client list for lookups
void addClient(Window window, Client *client);