On Tue, 2 Mar 2010 10:51:27 +1100
Carsten Haitzler (The Rasterman) <ras...@rasterman.com> wrote:
> On Mon, 1 Mar 2010 14:17:03 -0300 Gustavo Sverzut Barbieri
> <barbi...@profusion.mobi> said:
>
> > On Mon, Mar 1, 2010 at 2:00 PM, Carsten Haitzler
> > <ras...@rasterman.com> wrote:
> > > On Sun, 28 Feb 2010 17:22:13 +0100 Joel Klinghed
> > > <the...@spawned.biz> said:
> > >
> > >> Hi.
> > >>
> > >> The attached patch adds back some options I missed in the new
> > >> enlightenment_remote, namely:
> > >> -desks-get, -desktop-bg-add, -desktop-bg-del and
> > >> -desktop-bg-list.
> > >>
> > >> For this I added:
> > >> org.enlightenment.wm.Desktop.GetVirtualCount
> > >> org.enlightenment.wm.Desktop.Background.Add
> > >> org.enlightenment.wm.Desktop.Background.Del
> > >> org.enlightenment.wm.Desktop.Background.List
> > >
> > > don't mean to discourage.. but this has been aired on this list a
> > > few times now... these - they should go into a module that
> > > extends e's dbus calls - not into core. we didn't get rid of
> > > e_ipc_handlers.h just to have it all come back as dbus instead.
> > > extra modules to extend the dbus calls - load them if u want the
> > > extra dbus calls. :)
> >
> > And as Rasterman already said in couple of places, to avoid
> > exponential grow in number of modules just to handle dbus, we'd like
> > to see a patch that converts e/src/modules/msgbus_lang to a more
> > generic dbus helpers. At least the core calls could be added there
> > without the need to create another module. (ie: just mv msgbus_lang
> > to msgbus and add your stuff there)
>
> yeah. collect them together. not 1 module per call. like
> "msgbus-extras" for a whole lot of extra calls that are non-core but
> generally very useful - maybe a "msgbus-hacker" for stuff to twiddle
> deep down things that very few would ever want etc. etc.
>
Something along the lines of attached then?
Just named the new module msgbus, it includes old msgbus_lang and the
four functions I wanted. The patch does remove all references to
msgbus_lang but does not actually remove the files - also, I could not
figure out how to add a binary file to the patch in a nice way, so copy
msgbus_lang/e-module-msgbus_lang.edj to msgbus/e-module-msgbus.edj for
the module icon.
/Joel Klinghed
Index: src/modules/msgbus/msgbus_desktop.h
===================================================================
--- src/modules/msgbus/msgbus_desktop.h (revision 0)
+++ src/modules/msgbus/msgbus_desktop.h (revision 0)
@@ -0,0 +1,9 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef MSGBUS_DESKTOP_H
+#define MSGBUS_DESKTOP_H
+
+void msgbus_desktop_init(Eina_Array *ifaces);
+
+#endif /* MSGBUS_DESKTOP_H */
Index: src/modules/msgbus/msgbus_lang.c
===================================================================
--- src/modules/msgbus/msgbus_lang.c (revision 0)
+++ src/modules/msgbus/msgbus_lang.c (revision 0)
@@ -0,0 +1,47 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "e.h"
+#include "msgbus_lang.h"
+
+static DBusMessage *
+cb_langs(E_DBus_Object *obj, DBusMessage *message)
+{
+ DBusMessage *reply;
+ DBusMessageIter iter;
+ DBusMessageIter arr;
+ Eina_List * languages;
+ Eina_List * l;
+
+ memset(&arr, 0, sizeof(DBusMessageIter));
+
+ reply = dbus_message_new_method_return(message);
+ dbus_message_iter_init_append(reply, &iter);
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &arr);
+
+ languages = e_intl_language_list();
+ for (l = languages; l; l = l->next)
+ {
+ const char *str;
+
+ str = l->data;
+ dbus_message_iter_append_basic(&arr, DBUS_TYPE_STRING, &str);
+ }
+
+ dbus_message_iter_close_container(&iter, &arr);
+
+ return reply;
+}
+
+void msgbus_lang_init(Eina_Array *ifaces)
+{
+ E_DBus_Interface* iface;
+
+ iface = e_dbus_interface_new("org.enlightenment.wm.Language");
+ if (iface)
+ {
+ e_dbus_interface_method_add(iface, "List", "", "as", cb_langs);
+ e_msgbus_interface_attach(iface);
+ eina_array_push(ifaces, iface);
+ }
+}
Index: src/modules/msgbus/module.desktop.in
===================================================================
--- src/modules/msgbus/module.desktop.in (revision 0)
+++ src/modules/msgbus/module.desktop.in (revision 0)
@@ -0,0 +1,31 @@
+[Desktop Entry]
+Type=Link
+Name=DBus Extension
+Name[cs]=DBus rozÅ¡ÃÅenÃ
+Name[de]=
+Name[eo]=DBus kromaĵo
+Name[es]=Extensión DBus
+Name[fr]=Extension DBus
+Name[hu]=DBus kiterjesztés
+Name[it]=Estensione DBus
+Name[ja]=
+Name[pt]=
+Name[pt_BR]=
+Name[tr]=DBus Uzantısı
+Name[zh_CN]=
+Name[zh_TW]=
+Comment[cs]=<title>DBus rozÅ¡ÃÅenà - Jazyk</title>
+Comment[de]=
+Comment[eo]=<title>DBus kromaĵo por allokigo</title>
+Comment[es]=
+Comment[fr]=<title>Module Extension DBus</title>
+Comment[hu]=<title>DBus kiterjesztés</title>
+Comment[it]=<title>Estensione DBus</title>
+Comment[ja]=
+Comment[pt]=
+Comment[pt_BR]=
+Comment[tr]=<title>DBus uzantısı</title>
+Comment[zh_CN]=
+Comment[zh_TW]=
+Icon=e-module-msgbus
+X-Enlightenment-ModuleType=system
Index: src/modules/msgbus/e-module-msgbus.edj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: src/modules/msgbus/e-module-msgbus.edj
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Index: src/modules/msgbus/msgbus_lang.h
===================================================================
--- src/modules/msgbus/msgbus_lang.h (revision 0)
+++ src/modules/msgbus/msgbus_lang.h (revision 0)
@@ -0,0 +1,9 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef MSGBUS_LANG_H
+#define MSGBUS_LANG_H
+
+void msgbus_lang_init(Eina_Array *ifaces);
+
+#endif /* MSGBUS_LANG_H */
Index: src/modules/msgbus/e_mod_main.c
===================================================================
--- src/modules/msgbus/e_mod_main.c (revision 0)
+++ src/modules/msgbus/e_mod_main.c (revision 0)
@@ -0,0 +1,50 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "e.h"
+#include "e_mod_main.h"
+#include "msgbus_lang.h"
+#include "msgbus_desktop.h"
+
+/* actual module specifics */
+static Eina_Array* ifaces = NULL;
+
+/* module setup */
+EAPI E_Module_Api e_modapi =
+{
+ E_MODULE_API_VERSION,
+ "IPC Extension"
+};
+
+EAPI void *
+e_modapi_init(E_Module *m)
+{
+ ifaces = eina_array_new(5);
+
+ msgbus_lang_init(ifaces);
+ msgbus_desktop_init(ifaces);
+
+ return m;
+}
+
+EAPI int
+e_modapi_shutdown(E_Module *m)
+{
+ E_DBus_Interface* iface;
+ Eina_Array_Iterator iter;
+ size_t i;
+ EINA_ARRAY_ITER_NEXT(ifaces, i, iface, iter)
+ {
+ e_msgbus_interface_detach(iface);
+ e_dbus_interface_unref(iface);
+ }
+ eina_array_free(ifaces);
+ ifaces = NULL;
+ return 1;
+}
+
+EAPI int
+e_modapi_save(E_Module *m)
+{
+ return 1;
+}
Index: src/modules/msgbus/Makefile.am
===================================================================
--- src/modules/msgbus/Makefile.am (revision 0)
+++ src/modules/msgbus/Makefile.am (revision 0)
@@ -0,0 +1,37 @@
+MAINTAINERCLEANFILES = Makefile.in
+MODULE = msgbus
+
+# data files for the module
+filesdir = $(libdir)/enlightenment/modules/$(MODULE)
+
+# the module .so file
+INCLUDES = -I. \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src/modules/$(MODULE) \
+ -I$(top_srcdir)/src/bin \
+ -I$(top_srcdir)/src/lib \
+ -I$(top_srcdir)/src/modules \
+ @e_cflags@
+
+pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
+
+files_DATA = \
+e-module-$(MODULE).edj \
+module.desktop
+
+EXTRA_DIST = $(files_DATA)
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = e_mod_main.c \
+ e_mod_main.h \
+ msgbus_lang.c \
+ msgbus_lang.h \
+ msgbus_desktop.c \
+ msgbus_desktop.h
+
+module_la_LIBADD = @e_libs@ @dlopen_libs@
+module_la_LDFLAGS = -module -avoid-version
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+uninstall:
+ rm -rf $(DESTDIR)$(libdir)/enlightenment/modules/$(MODULE)
Index: src/modules/msgbus/msgbus_desktop.c
===================================================================
--- src/modules/msgbus/msgbus_desktop.c (revision 0)
+++ src/modules/msgbus/msgbus_desktop.c (revision 0)
@@ -0,0 +1,131 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "e.h"
+#include "msgbus_desktop.h"
+
+static DBusMessage *
+cb_virtual_desktops(E_DBus_Object *obj, DBusMessage *msg)
+{
+ DBusMessage* reply;
+ DBusMessageIter iter;
+
+ reply = dbus_message_new_method_return(msg);
+ dbus_message_iter_init_append(reply, &iter);
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,
+ &(e_config->zone_desks_x_count));
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,
+ &(e_config->zone_desks_y_count));
+
+ return reply;
+}
+
+static DBusMessage*
+cb_desktop_bgadd(E_DBus_Object *obj, DBusMessage *msg)
+{
+ DBusMessageIter iter;
+ int container, zone, desk_x, desk_y;
+ char* path;
+
+ dbus_message_iter_init(msg, &iter);
+ dbus_message_iter_get_basic(&iter, &container);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_get_basic(&iter, &zone);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_get_basic(&iter, &desk_x);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_get_basic(&iter, &desk_y);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_get_basic(&iter, &path);
+
+ e_bg_add(container, zone, desk_x, desk_y, path);
+ e_bg_update();
+ e_config_save_queue();
+
+ return dbus_message_new_method_return(msg);
+}
+
+static DBusMessage*
+cb_desktop_bgdel(E_DBus_Object *obj, DBusMessage *msg)
+{
+ DBusMessageIter iter;
+ int container, zone, desk_x, desk_y;
+
+ dbus_message_iter_init(msg, &iter);
+ dbus_message_iter_get_basic(&iter, &container);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_get_basic(&iter, &zone);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_get_basic(&iter, &desk_x);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_get_basic(&iter, &desk_y);
+
+ e_bg_del(container, zone, desk_x, desk_y);
+ e_bg_update();
+ e_config_save_queue();
+
+ return dbus_message_new_method_return(msg);
+}
+
+static DBusMessage*
+cb_desktop_bglist(E_DBus_Object *obj, DBusMessage *msg)
+{
+ Eina_List *list;
+ E_Config_Desktop_Background *bg;
+ DBusMessage *reply;
+ DBusMessageIter iter;
+ DBusMessageIter arr;
+
+ reply = dbus_message_new_method_return(msg);
+ dbus_message_iter_init_append(reply, &iter);
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(iiiis)", &arr);
+
+ EINA_LIST_FOREACH(e_config->desktop_backgrounds, list, bg)
+ {
+ DBusMessageIter sub;
+
+ if (bg == NULL || bg->file == NULL)
+ {
+ continue;
+ }
+
+ dbus_message_iter_open_container(&arr, DBUS_TYPE_STRUCT, NULL, &sub);
+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->container));
+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->zone));
+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->desk_x));
+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->desk_y));
+ dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &(bg->file));
+ dbus_message_iter_close_container(&arr, &sub);
+ }
+ dbus_message_iter_close_container(&iter, &arr);
+
+ return reply;
+}
+
+void msgbus_desktop_init(Eina_Array *ifaces)
+{
+ E_DBus_Interface *iface;
+
+ iface = e_dbus_interface_new("org.enlightenment.wm.Desktop");
+ if (iface)
+ {
+ e_dbus_interface_method_add(iface, "GetVirtualCount", "", "ii",
+ cb_virtual_desktops);
+ e_msgbus_interface_attach(iface);
+ eina_array_push(ifaces, iface);
+ }
+
+ iface = e_dbus_interface_new("org.enlightenment.wm.Desktop.Background");
+ if (iface)
+ {
+ e_dbus_interface_method_add(iface, "Add", "iiiis", "",
+ cb_desktop_bgadd);
+ e_dbus_interface_method_add(iface, "Del", "iiii", "",
+ cb_desktop_bgadd);
+ e_dbus_interface_method_add(iface, "List", "", "a(iiiis)",
+ cb_desktop_bglist);
+ e_msgbus_interface_attach(iface);
+ eina_array_push(ifaces, iface);
+ }
+}
Index: src/modules/msgbus/e_mod_main.h
===================================================================
--- src/modules/msgbus/e_mod_main.h (revision 0)
+++ src/modules/msgbus/e_mod_main.h (revision 0)
@@ -0,0 +1,13 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef E_MOD_MAIN_H
+#define E_MOD_MAIN_H
+
+EAPI extern E_Module_Api e_modapi;
+
+EAPI void *e_modapi_init (E_Module *m);
+EAPI int e_modapi_shutdown (E_Module *m);
+EAPI int e_modapi_save (E_Module *m);
+
+#endif
Index: src/modules/Makefile.am
===================================================================
--- src/modules/Makefile.am (revision 46915)
+++ src/modules/Makefile.am (working copy)
@@ -114,8 +114,8 @@
SUBDIRS += conf_profiles
endif
-if USE_MODULE_MSGBUS_LANG
-SUBDIRS += msgbus_lang
+if USE_MODULE_MSGBUS
+SUBDIRS += msgbus
endif
if USE_MODULE_CONF_ENGINE
@@ -292,7 +292,7 @@
conf_intl \
conf_imc \
conf_profiles \
-msgbus_lang \
+msgbus \
conf_engine \
conf_applications \
conf_desks \
Index: configure.ac
===================================================================
--- configure.ac (revision 46909)
+++ configure.ac (working copy)
@@ -478,7 +478,7 @@
AC_E_OPTIONAL_MODULE([conf_intl], true)
AC_E_OPTIONAL_MODULE([conf_imc], true)
AC_E_OPTIONAL_MODULE([conf_profiles], true)
-AC_E_OPTIONAL_MODULE([msgbus_lang], true)
+AC_E_OPTIONAL_MODULE([msgbus], true)
AC_E_OPTIONAL_MODULE([conf_engine], true)
AC_E_OPTIONAL_MODULE([conf_applications], true)
AC_E_OPTIONAL_MODULE([conf_desks], true)
@@ -579,8 +579,8 @@
src/modules/conf_imc/module.desktop
src/modules/conf_profiles/Makefile
src/modules/conf_profiles/module.desktop
-src/modules/msgbus_lang/Makefile
-src/modules/msgbus_lang/module.desktop
+src/modules/msgbus/Makefile
+src/modules/msgbus/module.desktop
src/modules/conf_engine/Makefile
src/modules/conf_engine/module.desktop
src/modules/conf_applications/Makefile
Index: data/tools/enlightenment_remote
===================================================================
--- data/tools/enlightenment_remote (revision 46909)
+++ data/tools/enlightenment_remote (working copy)
@@ -30,6 +30,10 @@
-default-profile-get Get the default configuration profile
-default-profile-set OPT1 Set the default configuration profile to OPT1
+ -desks-get Get the number of virtual desktops
+ -desktop-bg-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 = bg file path
+ -desktop-bg-del OPT1 OPT2 OPT3 OPT4 Delete a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y.
+ -desktop-bg-list List all current desktop bg definitions
Note: This is a new implementation of enlightenment_remote,
for more information about it see the '--help-new' option.
@@ -113,8 +117,68 @@
unset result value
}
+#=== FUNCTION ================================================================
+# NAME: ERGMI
+# DESCRIPTION: Get a (multiple) values (integer)
+# PARAMETERS: interface/method call
+# RETURNS: values (integer)
+#===============================================================================
+ERGMI(){
+ result="$( dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" )"
+ result="$( echo "$result" | sed 's/int32//g' )"
+ for value in $result
+ do
+ echo -n "$value "
+ done
+ echo ""
+ unset result value
+}
+#=== FUNCTION ================================================================
+# NAME: ERGMST
+# DESCRIPTION: Get a (multiple) struct value
+# PARAMETERS: interface/method call
+# RETURNS: struct values
+#===============================================================================
+ERGMST(){
+ result="$( dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" )"
+ result="${result##*array \[}"
+ result="${result%%]*}"
+ result="$( echo "$result" | sed -e 's/int32//g' -e 's/struct {//g' )"
+ for value in $result
+ do
+ if test "$value" = "}"; then
+ echo
+ else
+ echo -n "$value "
+ fi
+ done
+ echo ""
+ unset result value
+}
+#=== FUNCTION ================================================================
+# NAME: ERCIIIIS
+# DESCRIPTION: eremote call with int, int, int, int, string parameter
+# PARAMETERS: interface/method call, int, int, int, int, string
+# RETURNS:
+#===============================================================================
+ERCIIIIS(){
+ dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" int32:"$2" int32:"$3" int32:"$4" int32:"$5" string:"$6"
+}
+
+#=== FUNCTION ================================================================
+# NAME: ERCIIIIS
+# DESCRIPTION: eremote call with int, int, int, int parameter
+# PARAMETERS: interface/method call, int, int, int, int
+# RETURNS:
+#===============================================================================
+ERCIIII(){
+ dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" int32:"$2" int32:"$3" int32:"$4" int32:"$5"
+}
+
+
+
#-------------------------------------------------------------------------------
# E Restart
#-------------------------------------------------------------------------------
@@ -195,10 +259,40 @@
}
+#-------------------------------------------------------------------------------
+# E Virtual desktop get
+#-------------------------------------------------------------------------------
+er_desktop_get(){
+ ERGMI org.enlightenment.wm.Desktop.GetVirtualCount
+}
+#-------------------------------------------------------------------------------
+# E Desktop background add
+#-------------------------------------------------------------------------------
+er_desktop_bg_add(){
+ ERCIIIIS org.enlightenment.wm.Desktop.Background.Add "$2" "$3" "$4" "$5" "$6"
+}
+#-------------------------------------------------------------------------------
+# E Desktop background del
+#-------------------------------------------------------------------------------
+er_desktop_bg_del(){
+ ERCIIII org.enlightenment.wm.Desktop.Background.Del "$2" "$3" "$4" "$5"
+}
+#-------------------------------------------------------------------------------
+# E Desktop background list
+#-------------------------------------------------------------------------------
+er_desktop_bg_list(){
+ ERGMST org.enlightenment.wm.Desktop.Background.List
+}
+
+
+
+
+
+
#=== FUNCTION ================================================================
# NAME: Main
# DESCRIPTION: We start there and go to the desired option
@@ -248,6 +342,18 @@
-default-profile-set)
er_default_profile_set "$@"
;;
+ -desks-get)
+ er_desktop_get
+ ;;
+ -desktop-bg-add)
+ er_desktop_bg_add "$@"
+ ;;
+ -desktop-bg-del)
+ er_desktop_bg_del "$@"
+ ;;
+ -desktop-bg-list)
+ er_desktop_bg_list
+ ;;
# This entry needs to be allways the last option of the list (*)
@@ -314,7 +420,6 @@
-border-shade-speed-set OPT1 Set the shading speed (pixels/sec)
-border-shade-speed-get Get the shading speed (pixels/sec)
-desks-set OPT1 OPT2 Set the number of virtual desktops (X x Y desks OPT1 = X, OPT2 = Y)
- -desks-get Get the number of virtual desktops
-maximize-policy-set OPT1 Set the maximize policy. OPT1 = FULLSCREEN, SMART, EXPAND or FILL
-maximize-policy-get Get maximize policy
-maximize-manipulation-set OPT1 Allow manipulation, 1 for enabled 0 for disabled
@@ -345,9 +450,6 @@
-window-resist-get Get window resist threshold
-gadget-resist-set OPT1 Set gadget resist threshold (0-100)
-gadget-resist-get Get gadget resist threshold
- -desktop-bg-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 = bg file path
- -desktop-bg-del OPT1 OPT2 OPT3 OPT4 Delete a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y.
- -desktop-bg-list List all current desktop bg definitions
-winlist-warp-while-selecting-set OPT1 Set winlist (alt+tab) warp while selecting policy
-winlist-warp-while-selecting-get Get winlist (alt+tab) warp while selecting policy
-winlist-warp-at-end-set OPT1 Set winlist (alt+tab) warp at end policy
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel