#include "e.h"
-/* local subsystem functions */
-static void _e_msgbus_request_name_cb(void *data, const Eldbus_Message *msg,
- Eldbus_Pending *pending);
-
-static Eldbus_Message *_e_msgbus_core_version_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_core_restart_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_core_shutdown_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-
-static Eldbus_Message *_e_msgbus_module_load_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_module_unload_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_module_enable_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_module_disable_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_module_list_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-
-static Eldbus_Message *_e_msgbus_profile_set_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_profile_get_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_profile_list_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_profile_add_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-static Eldbus_Message *_e_msgbus_profile_delete_cb(const Eldbus_Service_Interface *iface,
- const Eldbus_Message *msg);
-
-#define E_MSGBUS_WIN_ACTION_CB_PROTO(NAME) \
- static Eldbus_Message * _e_msgbus_window_##NAME##_cb(const Eldbus_Service_Interface * iface, \
- const Eldbus_Message * msg)
+#define PATH "/org/enlightenment/wm/RemoteObject"
-E_MSGBUS_WIN_ACTION_CB_PROTO(list);
-E_MSGBUS_WIN_ACTION_CB_PROTO(close);
-E_MSGBUS_WIN_ACTION_CB_PROTO(kill);
-E_MSGBUS_WIN_ACTION_CB_PROTO(focus);
-E_MSGBUS_WIN_ACTION_CB_PROTO(iconify);
-E_MSGBUS_WIN_ACTION_CB_PROTO(uniconify);
-E_MSGBUS_WIN_ACTION_CB_PROTO(maximize);
-E_MSGBUS_WIN_ACTION_CB_PROTO(unmaximize);
+/* local subsystem functions */
+static void _e_msgbus_request_name_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending);
-/* local subsystem globals */
-static E_Msgbus_Data *_e_msgbus_data = NULL;
+static Eldbus_Message *_e_msgbus_core_version_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_core_restart_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_core_shutdown_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
-static const Eldbus_Method core_methods[] = {
+static const Eldbus_Method core_methods[] =
+{
{ "Version", NULL, ELDBUS_ARGS({"s", "version"}), _e_msgbus_core_version_cb, 0 },
{ "Restart", NULL, NULL, _e_msgbus_core_restart_cb, 0 },
{ "Shutdown", NULL, NULL, _e_msgbus_core_shutdown_cb, 0 },
{ NULL, NULL, NULL, NULL, 0}
};
-static const Eldbus_Method module_methods[] = {
- { "Load", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_load_cb, 0 },
- { "Unload", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_unload_cb, 0 },
- { "Enable", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_enable_cb, 0 },
- { "Disable", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_disable_cb, 0 },
- { "List", NULL, ELDBUS_ARGS({"a(si)", "modules"}),
- _e_msgbus_module_list_cb, 0 },
- { NULL, NULL, NULL, NULL, 0}
-};
-
-static const Eldbus_Method profile_methods[] = {
- { "Set", ELDBUS_ARGS({"s", "profile"}), NULL, _e_msgbus_profile_set_cb, 0 },
- { "Get", NULL, ELDBUS_ARGS({"s", "profile"}), _e_msgbus_profile_get_cb, 0 },
- { "List", NULL, ELDBUS_ARGS({"as", "array_profiles"}),
- _e_msgbus_profile_list_cb, 0 },
- { "Add", ELDBUS_ARGS({"s", "profile"}), NULL, _e_msgbus_profile_add_cb, 0 },
- { "Delete", ELDBUS_ARGS({"s", "profile"}), NULL, _e_msgbus_profile_delete_cb, 0 },
- { NULL, NULL, NULL, NULL, 0}
-};
-
-static const Eldbus_Method window_methods[] = {
- { "List", NULL, ELDBUS_ARGS({"a(si)", "array_of_window"}),
- _e_msgbus_window_list_cb, 0 },
- { "Close", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_close_cb, 0 },
- { "Kill", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_kill_cb, 0 },
- { "Focus", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_focus_cb, 0 },
- { "Iconify", ELDBUS_ARGS({"i", "window_id"}), NULL,
- _e_msgbus_window_iconify_cb, 0 },
- { "Uniconify", ELDBUS_ARGS({"i", "window_id"}), NULL,
- _e_msgbus_window_uniconify_cb, 0 },
- { "Maximize", ELDBUS_ARGS({"i", "window_id"}), NULL,
- _e_msgbus_window_maximize_cb, 0 },
- { "Unmaximize", ELDBUS_ARGS({"i", "window_id"}), NULL,
- _e_msgbus_window_unmaximize_cb, 0 },
- { NULL, NULL, NULL, NULL, 0}
-};
-
-#define PATH "/org/enlightenment/wm/RemoteObject"
-
static const Eldbus_Service_Interface_Desc core_desc = {
"org.enlightenment.wm.Core", core_methods, NULL, NULL, NULL, NULL
};
-static const Eldbus_Service_Interface_Desc module_desc = {
- "org.enlightenment.wm.Module", module_methods, NULL, NULL, NULL, NULL
-};
-
-static const Eldbus_Service_Interface_Desc profile_desc = {
- "org.enlightenment.wm.Profile", profile_methods, NULL, NULL, NULL, NULL
-};
-
-static const Eldbus_Service_Interface_Desc window_desc = {
- "org.enlightenment.wm.Window", window_methods, NULL, NULL, NULL, NULL
-};
+/* local subsystem globals */
+static E_Msgbus_Data *_e_msgbus_data = NULL;
/* externally accessible functions */
EINTERN int
return 0;
}
- _e_msgbus_data->iface = eldbus_service_interface_register(_e_msgbus_data->conn,
- PATH, &core_desc);
- eldbus_service_interface_register(_e_msgbus_data->conn, PATH, &module_desc);
- eldbus_service_interface_register(_e_msgbus_data->conn, PATH, &profile_desc);
- eldbus_service_interface_register(_e_msgbus_data->conn, PATH, &window_desc);
- eldbus_name_request(_e_msgbus_data->conn, "org.enlightenment.wm.service",
- 0, _e_msgbus_request_name_cb, NULL);
+ _e_msgbus_data->iface = eldbus_service_interface_register
+ (_e_msgbus_data->conn, PATH, &core_desc);
+ eldbus_name_request(_e_msgbus_data->conn,
+ "org.enlightenment.wm.service",
+ 0, _e_msgbus_request_name_cb, NULL);
return 1;
}
if (_e_msgbus_data->conn)
{
eldbus_name_release(_e_msgbus_data->conn,
- "org.enlightenment.wm.service", NULL, NULL);
+ "org.enlightenment.wm.service",
+ NULL, NULL);
eldbus_connection_unref(_e_msgbus_data->conn);
}
eldbus_shutdown();
E_API Eldbus_Service_Interface *
e_msgbus_interface_attach(const Eldbus_Service_Interface_Desc *desc)
{
- if (!_e_msgbus_data->iface)
- return NULL;
+ if (!_e_msgbus_data->iface) return NULL;
return eldbus_service_interface_register(_e_msgbus_data->conn, PATH, desc);
}
_e_msgbus_core_restart_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
const Eldbus_Message *msg)
{
- e_sys_action_do(E_SYS_RESTART, NULL);
+ ERR("DBus restart API disabled for security reasons");
+// e_sys_action_do(E_SYS_RESTART, NULL);
return eldbus_message_method_return_new(msg);
}
_e_msgbus_core_shutdown_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
const Eldbus_Message *msg)
{
- e_sys_action_do(E_SYS_EXIT, NULL);
- return eldbus_message_method_return_new(msg);
-}
-
-/* Modules Handlers */
-static Eldbus_Message *
-_e_msgbus_module_load_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- char *module;
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
-
- if (!eldbus_message_arguments_get(msg, "s", &module))
- return reply;
-
- if (!e_module_find(module))
- {
- e_module_new(module);
- e_config_save_queue();
- }
-
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_module_unload_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- char *module;
- E_Module *m;
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
-
- if (!eldbus_message_arguments_get(msg, "s", &module))
- return reply;
-
- if ((m = e_module_find(module)))
- {
- e_module_disable(m);
- e_object_del(E_OBJECT(m));
- e_config_save_queue();
- }
-
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_module_enable_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- char *module;
- E_Module *m;
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
-
- if (!eldbus_message_arguments_get(msg, "s", &module))
- return reply;
-
- if ((m = e_module_find(module)))
- {
- e_module_enable(m);
- e_config_save_queue();
- }
-
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_module_disable_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- char *module;
- E_Module *m;
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
-
- if (!eldbus_message_arguments_get(msg, "s", &module))
- return reply;
-
- if ((m = e_module_find(module)))
- {
- e_module_disable(m);
- e_config_save_queue();
- }
-
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_module_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- Eina_List *l;
- E_Module *mod;
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- Eldbus_Message_Iter *main_iter, *array;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL);
- main_iter = eldbus_message_iter_get(reply);
- EINA_SAFETY_ON_NULL_RETURN_VAL(main_iter, reply);
-
- eldbus_message_iter_arguments_append(main_iter, "a(si)", &array);
- EINA_SAFETY_ON_NULL_RETURN_VAL(array, reply);
-
- EINA_LIST_FOREACH(e_module_list(), l, mod)
- {
- Eldbus_Message_Iter *s;
- const char *name;
- int enabled;
-
- name = mod->name;
- enabled = mod->enabled;
-
- eldbus_message_iter_arguments_append(array, "(si)", &s);
- if (!s) continue;
- eldbus_message_iter_arguments_append(s, "si", name, enabled);
- eldbus_message_iter_container_close(array, s);
- }
- eldbus_message_iter_container_close(main_iter, array);
-
- return reply;
-}
-
-/* Profile Handlers */
-static Eldbus_Message *
-_e_msgbus_profile_set_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- char *profile;
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
-
- if (!eldbus_message_arguments_get(msg, "s", &profile))
- return reply;
-
- e_config_save_flush();
- e_config_profile_set(profile);
- e_config_profile_save();
- e_config_save_block_set(1);
- e_sys_action_do(E_SYS_RESTART, NULL);
-
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_profile_get_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- const char *profile;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL);
- profile = e_config_profile_get();
- eldbus_message_arguments_append(reply, "s", profile);
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_profile_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- Eina_List *l;
- char *name;
- Eldbus_Message *reply;
- Eldbus_Message_Iter *array, *main_iter;
-
- reply = eldbus_message_method_return_new(msg);
- EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL);
-
- main_iter = eldbus_message_iter_get(reply);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(main_iter, reply);
-
- eldbus_message_iter_arguments_append(main_iter, "as", &array);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(array, reply);
-
- l = e_config_profile_list();
- EINA_LIST_FREE(l, name)
- {
- eldbus_message_iter_basic_append(array, 's', name);
- free(name);
- }
- eldbus_message_iter_container_close(main_iter, array);
-
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_profile_add_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- char *profile;
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
-
- if (!eldbus_message_arguments_get(msg, "s", &profile))
- return reply;
- e_config_profile_add(profile);
-
- return reply;
-}
-
-static Eldbus_Message *
-_e_msgbus_profile_delete_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- char *profile;
-
- if (!eldbus_message_arguments_get(msg, "s", &profile))
- return eldbus_message_method_return_new(msg);
- if (!strcmp(e_config_profile_get(), profile))
- return eldbus_message_error_new(msg,
- "org.enlightenment.DBus.InvalidArgument",
- "Can't delete active profile");
- e_config_profile_del(profile);
+ ERR("DBus shutdown API disabled for security reasons");
+// e_sys_action_do(E_SYS_EXIT, NULL);
return eldbus_message_method_return_new(msg);
}
-
-/* Window handlers */
-static Eldbus_Message *
-_e_msgbus_window_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
-{
- const Eina_List *l;
- E_Client *ec;
- Eldbus_Message *reply;
- Eldbus_Message_Iter *main_iter, *array;
-
- reply = eldbus_message_method_return_new(msg);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(reply, NULL);
-
- main_iter = eldbus_message_iter_get(reply);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(main_iter, reply);
-
- eldbus_message_iter_arguments_append(main_iter, "a(si)", &array);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(array, reply);
-
- EINA_LIST_FOREACH(e_comp->clients, l, ec)
- {
- Eldbus_Message_Iter *s;
-
- if (e_client_util_ignored_get(ec)) continue;
-
- eldbus_message_iter_arguments_append(array, "(si)", &s);
- if (!s) continue;
- eldbus_message_iter_arguments_append(s, "si", ec->icccm.name,
- e_client_util_win_get(ec));
- eldbus_message_iter_container_close(array, s);
- }
- eldbus_message_iter_container_close(main_iter, array);
-
- return reply;
-}
-
-#define E_MSGBUS_WIN_ACTION_CB_BEGIN(NAME) \
- static Eldbus_Message * \
- _e_msgbus_window_##NAME##_cb(const Eldbus_Service_Interface * iface EINA_UNUSED, \
- const Eldbus_Message * msg) \
- { \
- E_Client *ec; \
- int xwin; \
- \
- if (!eldbus_message_arguments_get(msg, "i", &xwin)) \
- return eldbus_message_method_return_new(msg); \
- ec = e_pixmap_find_client(E_PIXMAP_TYPE_X, xwin); \
- if (ec) \
- {
-#define E_MSGBUS_WIN_ACTION_CB_END \
- } \
- \
- return eldbus_message_method_return_new(msg); \
- }
-
- E_MSGBUS_WIN_ACTION_CB_BEGIN(close)
- e_client_act_close_begin(ec);
- E_MSGBUS_WIN_ACTION_CB_END
-
- E_MSGBUS_WIN_ACTION_CB_BEGIN(kill)
- e_client_act_kill_begin(ec);
- E_MSGBUS_WIN_ACTION_CB_END
-
- E_MSGBUS_WIN_ACTION_CB_BEGIN(focus)
- e_client_activate(ec, 1);
- E_MSGBUS_WIN_ACTION_CB_END
-
- E_MSGBUS_WIN_ACTION_CB_BEGIN(iconify)
- e_client_iconify(ec);
- E_MSGBUS_WIN_ACTION_CB_END
-
- E_MSGBUS_WIN_ACTION_CB_BEGIN(uniconify)
- e_client_uniconify(ec);
- E_MSGBUS_WIN_ACTION_CB_END
-
- E_MSGBUS_WIN_ACTION_CB_BEGIN(maximize)
- e_client_maximize(ec, e_config->maximize_policy);
- E_MSGBUS_WIN_ACTION_CB_END
-
- E_MSGBUS_WIN_ACTION_CB_BEGIN(unmaximize)
- e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
- E_MSGBUS_WIN_ACTION_CB_END
src/modules/msgbus/e_mod_main.c \
src/modules/msgbus/msgbus_audit.c \
src/modules/msgbus/msgbus_desktop.c \
-src/modules/msgbus/msgbus_lang.c
+src/modules/msgbus/msgbus_lang.c \
+src/modules/msgbus/msgbus_module.c \
+src/modules/msgbus/msgbus_profile.c \
+src/modules/msgbus/msgbus_window.c
PHONIES += msgbus install-msgbus
msgbus: $(msgbuspkg_LTLIBRARIES) $(msgbus_DATA)
#include "e_mod_main.h"
/* actual module specifics */
-static Eina_Array* ifaces = NULL;
+static Eina_Array *ifaces = NULL;
/* module setup */
E_API E_Module_Api e_modapi =
E_API void *
e_modapi_init(E_Module *m)
{
- ifaces = eina_array_new(5);
-
+ ifaces = eina_array_new(10);
msgbus_lang_init(ifaces);
msgbus_desktop_init(ifaces);
msgbus_audit_init(ifaces);
-
+ msgbus_module_init(ifaces);
+ msgbus_profile_init(ifaces);
+ msgbus_window_init(ifaces);
return m;
}
E_API int
e_modapi_shutdown(E_Module *m EINA_UNUSED)
{
- Eldbus_Service_Interface* iface;
+ Eldbus_Service_Interface *iface;
Eina_Array_Iterator iter;
size_t i;
+
EINA_ARRAY_ITER_NEXT(ifaces, i, iface, iter)
eldbus_service_interface_unregister(iface);
eina_array_free(ifaces);
void msgbus_lang_init(Eina_Array *ifaces);
void msgbus_desktop_init(Eina_Array *ifaces);
void msgbus_audit_init(Eina_Array *ifaces);
+void msgbus_module_init(Eina_Array *ifaces);
+void msgbus_profile_init(Eina_Array *ifaces);
+void msgbus_window_init(Eina_Array *ifaces);
/**
* @addtogroup Optional_Control
tmp = ecore_timer_dump();
if (!tmp)
- eldbus_message_arguments_append(reply, "s",
- "Not enable, recompile Ecore with ecore_timer_dump.");
- else
- eldbus_message_arguments_append(reply, "s", tmp);
-
+ eldbus_message_arguments_append
+ (reply, "s", "Not enable, recompile Ecore with ecore_timer_dump.");
+ else eldbus_message_arguments_append(reply, "s", tmp);
return reply;
}
if (_log_dom == -1)
{
- _log_dom = eina_log_domain_register("msgbus_audit", EINA_COLOR_BLUE);
- if (_log_dom < 0)
- EINA_LOG_ERR("could not register msgbus_audit log domain!");
+ _log_dom = eina_log_domain_register("msgbus_audit", EINA_COLOR_BLUE);
+ if (_log_dom < 0)
+ EINA_LOG_ERR("could not register msgbus_audit log domain!");
}
iface = e_msgbus_interface_attach(&audit);
- if (iface)
- eina_array_push(ifaces, iface);
+ if (iface) eina_array_push(ifaces, iface);
}
{
Eldbus_Message *reply = eldbus_message_method_return_new(msg);
eldbus_message_arguments_append(reply, "ii", e_config->zone_desks_x_count,
- e_config->zone_desks_y_count);
+ e_config->zone_desks_y_count);
DBG("GetVirtualCount: %d %d",
e_config->zone_desks_x_count, e_config->zone_desks_y_count);
-
return reply;
}
zone = e_zone_current_get();
DBG("show desktop %d,%d from zone %p.", x, y, zone);
e_zone_desk_flip_to(zone, x, y);
-
return reply;
}
{
DBG("desklock requested");
e_desklock_show(EINA_FALSE);
-
return eldbus_message_method_return_new(msg);
}
{
DBG("deskunlock requested");
e_desklock_hide();
-
return eldbus_message_method_return_new(msg);
}
const char *path;
Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- if (!eldbus_message_arguments_get(msg, "iiis", &zone, &desk_x,
- &desk_y, &path))
+ if (!eldbus_message_arguments_get(msg, "iiis", &zone,
+ &desk_x, &desk_y, &path))
{
ERR("could not get Add arguments");
return reply;
}
- DBG("add bg zone=%d, pos=%d,%d path=%s",
- zone, desk_x, desk_y, path);
+ DBG("add bg zone=%d, pos=%d,%d path=%s", zone, desk_x, desk_y, path);
e_bg_add(zone, desk_x, desk_y, path);
e_bg_update();
e_config_save_queue();
-
return reply;
}
int zone, desk_x, desk_y;
Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- if (!eldbus_message_arguments_get(msg, "iii", &zone, &desk_x,
- &desk_y))
+ if (!eldbus_message_arguments_get(msg, "iii", &zone, &desk_x, &desk_y))
{
ERR("could not get Del arguments");
return reply;
}
- DBG("del bg zone=%d, pos=%d,%d",
- zone, desk_x, desk_y);
+ DBG("del bg zone=%d, pos=%d,%d", zone, desk_x, desk_y);
e_bg_del(zone, desk_x, desk_y);
e_bg_update();
e_config_save_queue();
-
return reply;
}
Eldbus_Message *reply = eldbus_message_method_return_new(msg);
Eldbus_Message_Iter *main_iter, *array;
- if (!reply)
- return NULL;
+ if (!reply) return NULL;
main_iter = eldbus_message_iter_get(reply);
- if (!main_iter)
- return reply;
+ if (!main_iter) return reply;
if (!eldbus_message_iter_arguments_append(main_iter, "a(iiiis)", &array))
return reply;
{
Eldbus_Message_Iter *s;
- if (!bg || !bg->file)
- {
- continue;
- }
+ if (!bg || !bg->file) continue;
DBG("Background zone=%d pos=%d,%d path=%s",
bg->zone, bg->desk_x, bg->desk_y, bg->file);
eldbus_message_iter_arguments_append(array, "(iiiis)", &s);
eldbus_message_iter_container_close(array, s);
}
eldbus_message_iter_container_close(main_iter, array);
-
return reply;
}
static const Eldbus_Method desktop_methods[] = {
- { "GetVirtualCount", NULL, ELDBUS_ARGS({"i", "desk_x"}, {"i", "desk_y"}),
- cb_virtual_desktops, 0 },
- { "Show", ELDBUS_ARGS({"i", "desk_x"}, {"i", "desk_y"}), NULL,
- cb_desktop_show, 0 },
- { "ShowByName", ELDBUS_ARGS({"s", "desk_name"}), NULL,
- cb_desktop_show_by_name, 0 },
+ { "GetVirtualCount", NULL, ELDBUS_ARGS({"i", "desk_x"}, {"i", "desk_y"}), cb_virtual_desktops, 0 },
+ { "Show", ELDBUS_ARGS({"i", "desk_x"}, {"i", "desk_y"}), NULL, cb_desktop_show, 0 },
+ { "ShowByName", ELDBUS_ARGS({"s", "desk_name"}), NULL, cb_desktop_show_by_name, 0 },
{ "Lock", NULL, NULL, cb_desktop_lock, 0 },
{ "Unlock", NULL, NULL, cb_desktop_unlock, 0 },
{ NULL, NULL, NULL, NULL, 0 }
};
static const Eldbus_Method background_methods[] = {
- { "Add",
- ELDBUS_ARGS({"i", "zone"}, {"i", "desk_x"}, {"i", "desk_y"}, {"s", "path"}),
- NULL, cb_desktop_bgadd, 0 },
- { "Del", ELDBUS_ARGS({"i", "zone"}, {"i", "desk_x"}, {"i", "desk_y"}),
- NULL, cb_desktop_bgdel, 0 },
+ { "Add", ELDBUS_ARGS({"i", "zone"}, {"i", "desk_x"}, {"i", "desk_y"}, {"s", "path"}), NULL, cb_desktop_bgadd, 0 },
+ { "Del", ELDBUS_ARGS({"i", "zone"}, {"i", "desk_x"}, {"i", "desk_y"}), NULL, cb_desktop_bgdel, 0 },
{ "List", ELDBUS_ARGS({"a(iiis)", "array_of_bg"}), NULL, cb_desktop_bglist, 0 },
{ NULL, NULL, NULL, NULL, 0 }
};
if (_log_dom == -1)
{
- _log_dom = eina_log_domain_register("msgbus_desktop", EINA_COLOR_BLUE);
- if (_log_dom < 0)
- EINA_LOG_ERR("could not register msgbus_desktop log domain!");
+ _log_dom = eina_log_domain_register("msgbus_desktop", EINA_COLOR_BLUE);
+ if (_log_dom < 0)
+ EINA_LOG_ERR("could not register msgbus_desktop log domain!");
}
iface = e_msgbus_interface_attach(&desktop);
- if (iface)
- eina_array_push(ifaces, iface);
- iface = NULL;
+ if (iface) eina_array_push(ifaces, iface);
iface = e_msgbus_interface_attach(&bg);
- if (iface)
- eina_array_push(ifaces, iface);
+ if (iface) eina_array_push(ifaces, iface);
}
eldbus_message_iter_basic_append(array, 's', str);
}
eldbus_message_iter_container_close(main_iter, array);
-
return reply;
}
static const Eldbus_Method methods[] = {
- {
- "List", NULL, ELDBUS_ARGS({"as", "langs"}), cb_langs, 0
- },
+ { "List", NULL, ELDBUS_ARGS({"as", "langs"}), cb_langs, 0 },
{ NULL, NULL, NULL, NULL, 0 }
};
void msgbus_lang_init(Eina_Array *ifaces)
{
Eldbus_Service_Interface *iface;
+
if (_log_dom == -1)
{
- _log_dom = eina_log_domain_register("msgbus_lang", EINA_COLOR_BLUE);
- if (_log_dom < 0)
- EINA_LOG_ERR("could not register msgbus_lang log domain!");
+ _log_dom = eina_log_domain_register("msgbus_lang", EINA_COLOR_BLUE);
+ if (_log_dom < 0)
+ EINA_LOG_ERR("could not register msgbus_lang log domain!");
}
iface = e_msgbus_interface_attach(&lang);
- if (iface)
- eina_array_push(ifaces, iface);
+ if (iface) eina_array_push(ifaces, iface);
}
--- /dev/null
+#include "e_mod_main.h"
+
+static int _log_dom = -1;
+#undef DBG
+#undef WARN
+#undef INF
+#undef ERR
+#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
+#define WARN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__)
+#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)
+#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__)
+
+static Eldbus_Message *_e_msgbus_module_load_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_module_unload_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_module_enable_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_module_disable_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_module_list_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static const Eldbus_Method module_methods[] = {
+ { "Load", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_load_cb, 0 },
+ { "Unload", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_unload_cb, 0 },
+ { "Enable", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_enable_cb, 0 },
+ { "Disable", ELDBUS_ARGS({"s", "module"}), NULL, _e_msgbus_module_disable_cb, 0 },
+ { "List", NULL, ELDBUS_ARGS({"a(si)", "modules"}), _e_msgbus_module_list_cb, 0 },
+ { NULL, NULL, NULL, NULL, 0}
+};
+
+static const Eldbus_Service_Interface_Desc module = {
+ "org.enlightenment.wm.Module", module_methods, NULL, NULL, NULL, NULL
+};
+
+/* Modules Handlers */
+static Eldbus_Message *
+_e_msgbus_module_load_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ char *module;
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+
+ if (!eldbus_message_arguments_get(msg, "s", &module)) return reply;
+
+ if (!e_module_find(module))
+ {
+ e_module_new(module);
+ e_config_save_queue();
+ }
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_module_unload_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ char *module;
+ E_Module *m;
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+
+ if (!eldbus_message_arguments_get(msg, "s", &module)) return reply;
+
+ if ((m = e_module_find(module)))
+ {
+ e_module_disable(m);
+ e_object_del(E_OBJECT(m));
+ e_config_save_queue();
+ }
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_module_enable_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ char *module;
+ E_Module *m;
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+
+ if (!eldbus_message_arguments_get(msg, "s", &module)) return reply;
+
+ if ((m = e_module_find(module)))
+ {
+ e_module_enable(m);
+ e_config_save_queue();
+ }
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_module_disable_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ char *module;
+ E_Module *m;
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+
+ if (!eldbus_message_arguments_get(msg, "s", &module)) return reply;
+
+ if ((m = e_module_find(module)))
+ {
+ e_module_disable(m);
+ e_config_save_queue();
+ }
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_module_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ Eina_List *l;
+ E_Module *mod;
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ Eldbus_Message_Iter *main_iter, *array;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL);
+ main_iter = eldbus_message_iter_get(reply);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(main_iter, reply);
+
+ eldbus_message_iter_arguments_append(main_iter, "a(si)", &array);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(array, reply);
+
+ EINA_LIST_FOREACH(e_module_list(), l, mod)
+ {
+ Eldbus_Message_Iter *s;
+ const char *name;
+ int enabled;
+
+ name = mod->name;
+ enabled = mod->enabled;
+
+ eldbus_message_iter_arguments_append(array, "(si)", &s);
+ if (!s) continue;
+ eldbus_message_iter_arguments_append(s, "si", name, enabled);
+ eldbus_message_iter_container_close(array, s);
+ }
+ eldbus_message_iter_container_close(main_iter, array);
+
+ return reply;
+}
+
+void msgbus_module_init(Eina_Array *ifaces)
+{
+ Eldbus_Service_Interface *iface;
+
+ if (_log_dom == -1)
+ {
+ _log_dom = eina_log_domain_register("msgbus_module", EINA_COLOR_BLUE);
+ if (_log_dom < 0)
+ EINA_LOG_ERR("could not register msgbus_module log domain!");
+ }
+
+ iface = e_msgbus_interface_attach(&module);
+ if (iface) eina_array_push(ifaces, iface);
+}
--- /dev/null
+#include "e_mod_main.h"
+
+static int _log_dom = -1;
+#undef DBG
+#undef WARN
+#undef INF
+#undef ERR
+#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
+#define WARN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__)
+#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)
+#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__)
+
+static Eldbus_Message *_e_msgbus_profile_set_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_profile_get_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_profile_list_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_profile_add_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+static Eldbus_Message *_e_msgbus_profile_delete_cb(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg);
+
+static const Eldbus_Method profile_methods[] = {
+ { "Set", ELDBUS_ARGS({"s", "profile"}), NULL, _e_msgbus_profile_set_cb, 0 },
+ { "Get", NULL, ELDBUS_ARGS({"s", "profile"}), _e_msgbus_profile_get_cb, 0 },
+ { "List", NULL, ELDBUS_ARGS({"as", "array_profiles"}), _e_msgbus_profile_list_cb, 0 },
+ { "Add", ELDBUS_ARGS({"s", "profile"}), NULL, _e_msgbus_profile_add_cb, 0 },
+ { "Delete", ELDBUS_ARGS({"s", "profile"}), NULL, _e_msgbus_profile_delete_cb, 0 },
+ { NULL, NULL, NULL, NULL, 0}
+};
+
+static const Eldbus_Service_Interface_Desc profile = {
+ "org.enlightenment.wm.Profile", profile_methods, NULL, NULL, NULL, NULL
+};
+
+/* Profile Handlers */
+static Eldbus_Message *
+_e_msgbus_profile_set_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ char *profile;
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+
+ if (!eldbus_message_arguments_get(msg, "s", &profile))
+ return reply;
+
+ e_config_save_flush();
+ e_config_profile_set(profile);
+ e_config_profile_save();
+ e_config_save_block_set(1);
+ e_sys_action_do(E_SYS_RESTART, NULL);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_profile_get_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ const char *profile;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL);
+ profile = e_config_profile_get();
+ eldbus_message_arguments_append(reply, "s", profile);
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_profile_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ Eina_List *l;
+ char *name;
+ Eldbus_Message *reply;
+ Eldbus_Message_Iter *array, *main_iter;
+
+ reply = eldbus_message_method_return_new(msg);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL);
+
+ main_iter = eldbus_message_iter_get(reply);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(main_iter, reply);
+
+ eldbus_message_iter_arguments_append(main_iter, "as", &array);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(array, reply);
+
+ l = e_config_profile_list();
+ EINA_LIST_FREE(l, name)
+ {
+ eldbus_message_iter_basic_append(array, 's', name);
+ free(name);
+ }
+ eldbus_message_iter_container_close(main_iter, array);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_profile_add_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ char *profile;
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+
+ if (!eldbus_message_arguments_get(msg, "s", &profile))
+ return reply;
+ e_config_profile_add(profile);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_msgbus_profile_delete_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ char *profile;
+
+ if (!eldbus_message_arguments_get(msg, "s", &profile))
+ return eldbus_message_method_return_new(msg);
+ if (!strcmp(e_config_profile_get(), profile))
+ return eldbus_message_error_new(msg,
+ "org.enlightenment.DBus.InvalidArgument",
+ "Can't delete active profile");
+ e_config_profile_del(profile);
+ return eldbus_message_method_return_new(msg);
+}
+
+void msgbus_profile_init(Eina_Array *ifaces)
+{
+ Eldbus_Service_Interface *iface;
+
+ if (_log_dom == -1)
+ {
+ _log_dom = eina_log_domain_register("msgbus_profile", EINA_COLOR_BLUE);
+ if (_log_dom < 0)
+ EINA_LOG_ERR("could not register msgbus_profile log domain!");
+ }
+
+ iface = e_msgbus_interface_attach(&profile);
+ if (iface) eina_array_push(ifaces, iface);
+}
--- /dev/null
+#include "e_mod_main.h"
+
+static int _log_dom = -1;
+#undef DBG
+#undef WARN
+#undef INF
+#undef ERR
+#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
+#define WARN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__)
+#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)
+#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__)
+
+#define E_MSGBUS_WIN_ACTION_CB_PROTO(NAME) \
+ static Eldbus_Message * _e_msgbus_window_##NAME##_cb(const Eldbus_Service_Interface * iface, const Eldbus_Message * msg)
+
+E_MSGBUS_WIN_ACTION_CB_PROTO(list);
+E_MSGBUS_WIN_ACTION_CB_PROTO(close);
+E_MSGBUS_WIN_ACTION_CB_PROTO(kill);
+E_MSGBUS_WIN_ACTION_CB_PROTO(focus);
+E_MSGBUS_WIN_ACTION_CB_PROTO(iconify);
+E_MSGBUS_WIN_ACTION_CB_PROTO(uniconify);
+E_MSGBUS_WIN_ACTION_CB_PROTO(maximize);
+E_MSGBUS_WIN_ACTION_CB_PROTO(unmaximize);
+
+static const Eldbus_Method window_methods[] = {
+ { "List", NULL, ELDBUS_ARGS({"a(si)", "array_of_window"}), _e_msgbus_window_list_cb, 0 },
+ { "Close", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_close_cb, 0 },
+ { "Kill", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_kill_cb, 0 },
+ { "Focus", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_focus_cb, 0 },
+ { "Iconify", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_iconify_cb, 0 },
+ { "Uniconify", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_uniconify_cb, 0 },
+ { "Maximize", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_maximize_cb, 0 },
+ { "Unmaximize", ELDBUS_ARGS({"i", "window_id"}), NULL, _e_msgbus_window_unmaximize_cb, 0 },
+ { NULL, NULL, NULL, NULL, 0}
+};
+
+static const Eldbus_Service_Interface_Desc window = {
+ "org.enlightenment.wm.Window", window_methods, NULL, NULL, NULL, NULL
+};
+
+/* Window handlers */
+static Eldbus_Message *
+_e_msgbus_window_list_cb(const Eldbus_Service_Interface *iface EINA_UNUSED,
+ const Eldbus_Message *msg)
+{
+ const Eina_List *l;
+ E_Client *ec;
+ Eldbus_Message *reply;
+ Eldbus_Message_Iter *main_iter, *array;
+
+ reply = eldbus_message_method_return_new(msg);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(reply, NULL);
+
+ main_iter = eldbus_message_iter_get(reply);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(main_iter, reply);
+
+ eldbus_message_iter_arguments_append(main_iter, "a(si)", &array);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(array, reply);
+
+ EINA_LIST_FOREACH(e_comp->clients, l, ec)
+ {
+ Eldbus_Message_Iter *s;
+
+ if (e_client_util_ignored_get(ec)) continue;
+
+ eldbus_message_iter_arguments_append(array, "(si)", &s);
+ if (!s) continue;
+ eldbus_message_iter_arguments_append(s, "si", ec->icccm.name,
+ e_client_util_win_get(ec));
+ eldbus_message_iter_container_close(array, s);
+ }
+ eldbus_message_iter_container_close(main_iter, array);
+
+ return reply;
+}
+
+#define E_MSGBUS_WIN_ACTION_CB_BEGIN(NAME) \
+ static Eldbus_Message * \
+ _e_msgbus_window_##NAME##_cb(const Eldbus_Service_Interface *iface EINA_UNUSED, \
+ const Eldbus_Message *msg) { \
+ E_Client *ec; \
+ int xwin; \
+ if (!eldbus_message_arguments_get(msg, "i", &xwin)) \
+ return eldbus_message_method_return_new(msg); \
+ ec = e_pixmap_find_client(E_PIXMAP_TYPE_X, xwin); \
+ if (ec) {
+#define E_MSGBUS_WIN_ACTION_CB_END \
+ } \
+ return eldbus_message_method_return_new(msg); \
+ }
+
+E_MSGBUS_WIN_ACTION_CB_BEGIN(close)
+ e_client_act_close_begin(ec);
+E_MSGBUS_WIN_ACTION_CB_END
+
+E_MSGBUS_WIN_ACTION_CB_BEGIN(kill)
+ e_client_act_kill_begin(ec);
+E_MSGBUS_WIN_ACTION_CB_END
+
+E_MSGBUS_WIN_ACTION_CB_BEGIN(focus)
+ e_client_activate(ec, 1);
+E_MSGBUS_WIN_ACTION_CB_END
+
+E_MSGBUS_WIN_ACTION_CB_BEGIN(iconify)
+ e_client_iconify(ec);
+E_MSGBUS_WIN_ACTION_CB_END
+
+E_MSGBUS_WIN_ACTION_CB_BEGIN(uniconify)
+ e_client_uniconify(ec);
+E_MSGBUS_WIN_ACTION_CB_END
+
+E_MSGBUS_WIN_ACTION_CB_BEGIN(maximize)
+ e_client_maximize(ec, e_config->maximize_policy);
+E_MSGBUS_WIN_ACTION_CB_END
+
+E_MSGBUS_WIN_ACTION_CB_BEGIN(unmaximize)
+ e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
+E_MSGBUS_WIN_ACTION_CB_END
+
+void msgbus_window_init(Eina_Array *ifaces)
+{
+ Eldbus_Service_Interface *iface;
+
+ if (_log_dom == -1)
+ {
+ _log_dom = eina_log_domain_register("msgbus_window", EINA_COLOR_BLUE);
+ if (_log_dom < 0)
+ EINA_LOG_ERR("could not register msgbus_window log domain!");
+ }
+
+ iface = e_msgbus_interface_attach(&window);
+ if (iface) eina_array_push(ifaces, iface);
+}