// load config values
python_exec(SCRIPTDIR"/config.py"); // load openbox config values
+ // run all of the python scripts
+ python_exec(SCRIPTDIR"/builtins.py"); // builtin callbacks
+ // run the user's script
+ python_exec(_scriptfilepath.c_str());
// initialize all the screens
OBScreen *screen;
::exit(1);
}
- // run all of the python scripts, including the user's
- python_exec(SCRIPTDIR"/globals.py"); // create/set global vars
- python_exec(SCRIPTDIR"/clientmotion.py"); // moving and resizing clients
- python_exec(SCRIPTDIR"/clicks.py"); // titlebar/root clicks and dblclicks
- python_exec(_scriptfilepath.c_str());
-
ScreenList::iterator it, end = _screens.end();
for (it = _screens.begin(); it != end; ++it) {
(*it)->manageExisting();
{
_state = State_Exiting; // time to kill everything
- delete _bindings;
- delete _actions;
-
std::for_each(_screens.begin(), _screens.end(), otk::PointerAssassin());
+ delete _bindings;
+ delete _actions;
delete _property;
python_destroy();
}
}
+void Openbox::execute(int screen, const std::string &bin)
+{
+#ifdef __EMX__
+ // XXX: whats this for? windows?
+ spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", bin.c_str(), NULL);
+#else // __EMX__
+ if (screen >= ScreenCount(otk::OBDisplay::display))
+ screen = 0;
+ const std::string &dstr =
+ otk::OBDisplay::screenInfo(screen)->displayString();
+
+ if (! fork()) {
+ setsid();
+ int ret = putenv(const_cast<char *>(dstr.c_str()));
+ assert(ret != -1);
+ ret = execl("/bin/sh", "/bin/sh", "-c", bin.c_str(), NULL);
+ exit(ret);
+ }
+#endif // __EMX__
+}
+
}