// initialize all the screens
OBScreen *screen;
- screen = new OBScreen(0);
- if (screen->managed()) {
- _screens.push_back(screen);
- // XXX: "change to" the first workspace on the screen to initialize stuff
- } else
- delete screen;
+ int i = _single ? DefaultScreen(otk::OBDisplay::display) : 0;
+ int max = _single ? i + 1 : ScreenCount(otk::OBDisplay::display);
+ for (; i < max; ++i) {
+ screen = new OBScreen(i);
+ if (screen->managed())
+ _screens.push_back(screen);
+ else
+ delete screen;
+ }
if (_screens.empty()) {
printf(_("No screens were found without a window manager. Exiting.\n"));
_scriptfilepath = argv[i];
} else if (arg == "-sync") {
_sync = true;
+ } else if (arg == "-single") {
+ _single = true;
} else if (arg == "-version") {
showVersion();
::exit(0);
printf(_("Usage: %s [OPTIONS...]\n\
Options:\n\
-display <string> use display connection.\n\
+ -single run on a single screen (default is to run every one).\n\
-rc <string> use alternate resource file.\n\
-menu <string> use alternate menu file.\n\
-script <string> use alternate startup script file.\n\
+ -sync run in synchronous mode (for debugging).\n\
-version display version and exit.\n\
-help display this help text and exit.\n\n"), _argv[0]);
printf(_("Compile time options:\n\
Debugging: %s\n\
Shape: %s\n\
- Xinerama: %s\n"),
+ Xinerama: %s\n\
+ Xkb: %s\n"),
#ifdef DEBUG
_("yes"),
#else // !DEBUG
#endif // SHAPE
#ifdef XINERAMA
- _("yes")
+ _("yes"),
#else // !XINERAMA
- _("no")
+ _("no"),
#endif // XINERAMA
+
+#ifdef XKB
+ _("yes")
+#else // !XKB
+ _("no")
+#endif // XKB
);
}
}
// call the python Focus callbacks
- EventData *data = new_event_data(_focused_screen->number(),
- c ? c->window() : 0,
- EventFocus, 0);
- Openbox::instance->bindings()->fireEvent(data);
- Py_XDECREF((PyObject*)data);
+ EventData data(_focused_screen->number(), c, EventFocus, 0);
+ Openbox::instance->bindings()->fireEvent(&data);
}
void Openbox::execute(int screen, const std::string &bin)