diff options
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/config.c | 6 | ||||
| -rw-r--r-- | openbox/engine.c | 3 | ||||
| -rw-r--r-- | openbox/openbox.c | 19 | ||||
| -rw-r--r-- | openbox/plugin.c | 48 | ||||
| -rw-r--r-- | openbox/plugin.h | 3 |
5 files changed, 63 insertions, 16 deletions
diff --git a/openbox/config.c b/openbox/config.c index b9c24ded..0f6be9a3 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -27,8 +27,8 @@ void config_startup() config_def_set(config_def_new("engine", Config_String)); config_def_set(config_def_new("theme", Config_String)); config_def_set(config_def_new("font", Config_String)); + config_def_set(config_def_new("font.shadow", Config_Integer)); config_def_set(config_def_new("font.shadow.offset", Config_Integer)); - config_def_set(config_def_new("font.shadow.tint", Config_Integer)); config_def_set(config_def_new("titlebar.layout", Config_String)); /*g_datalist_foreach(&config_def, print_config, NULL);*/ @@ -54,15 +54,15 @@ void config_parse() load = TRUE; } g_free(path); - g_free(path); if (!load) { /* load the system wide rc */ path = g_build_filename(RCDIR, "rc3", NULL); if ((file = fopen(path, "r")) != NULL) { - cparse_go(path, file); + /*cparse_go(path, file);*/ fclose(file); } + g_free(path); } } diff --git a/openbox/engine.c b/openbox/engine.c index c4e24a39..c654d263 100644 --- a/openbox/engine.c +++ b/openbox/engine.c @@ -64,9 +64,8 @@ void engine_startup() ConfigValue engine; module = NULL; - g_message("ENGINE STARTUP"); + if (config_get("engine", Config_String, &engine)) { - g_warning("GOT ENGINE %s", engine.string); if (load(engine.string)) return; g_warning("Failed to load the engine '%s'", engine.string); diff --git a/openbox/openbox.c b/openbox/openbox.c index b32977b1..6645f5bb 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -147,23 +147,22 @@ int main(int argc, char **argv) config_startup(); render_startup(); font_startup(); - themerc_startup(); + plugin_startup(); + + /* load the plugins specified in the pluginrc */ + plugin_loadall(); + /* parse/load user options */ + config_parse(); + engine_startup(); event_startup(); screen_startup(); focus_startup(); client_startup(); grab_startup(); - plugin_startup(); - - /* XXX load all plugins!! */ - plugin_open("focus"); - plugin_open("keyboard"); - plugin_open("mouse"); - plugin_open("placement"); - plugin_open("resistance"); - config_parse(); + /* call startup for all the plugins */ + plugin_startall(); /* get all the existing windows */ client_manage_all(); diff --git a/openbox/plugin.c b/openbox/plugin.c index a8556fc7..e0067f22 100644 --- a/openbox/plugin.c +++ b/openbox/plugin.c @@ -94,9 +94,9 @@ gboolean plugin_open(char *name) g_warning("failed to load plugin '%s'", name); return FALSE; } + /* XXX p->plugin_set_config(); */ g_datalist_set_data_full(&plugins, name, p, (GDestroyNotify) plugin_free); - p->startup(); return TRUE; } @@ -104,3 +104,49 @@ void plugin_close(char *name) { g_datalist_remove_data(&plugins, name); } + +static void foreach_start(GQuark key, Plugin *p, gpointer *foo) +{ + p->startup(); +} + +void plugin_startall() +{ + g_datalist_foreach(&plugins, (GDataForeachFunc)foreach_start, NULL); +} + +void plugin_loadall() +{ + GIOChannel *io; + GError *err; + char *path, *name; + + path = g_build_filename(g_get_home_dir(), ".openbox", "pluginrc", NULL); + err = NULL; + io = g_io_channel_new_file(path, "r", &err); + g_free(path); + + if (io == NULL) { + path = g_build_filename(RCDIR, "pluginrc", NULL); + err = NULL; + io = g_io_channel_new_file(path, "r", &err); + g_free(path); + } + + if (io == NULL) { + /* load the default plugins */ + plugin_open("focus"); + plugin_open("keyboard"); + plugin_open("mouse"); + plugin_open("placement"); + plugin_open("resistance"); + } else { + /* load the plugins in the rc file */ + while (g_io_channel_read_line(io, &name, NULL, NULL, &err) == + G_IO_STATUS_NORMAL) { + plugin_open(name); + g_free(name); + } + g_io_channel_unref(io); + } +} diff --git a/openbox/plugin.h b/openbox/plugin.h index d5cb2f6f..8595fbac 100644 --- a/openbox/plugin.h +++ b/openbox/plugin.h @@ -4,6 +4,9 @@ void plugin_startup(); void plugin_shutdown(); +void plugin_loadall(); +void plugin_startall(); + gboolean plugin_open(char *name); void plugin_close(char *name); |
