add xterm 777 notification support. Closes T1765

This commit is contained in:
Boris Faure 2015-01-12 23:11:12 +01:00
parent bfa9cd30e7
commit 87d653ea4d
2 changed files with 57 additions and 0 deletions

View File

@ -82,6 +82,11 @@ ty_dbus_init(void)
eldbus_init();
if (!elm_need_sys_notify())
{
WRN("no elementary system notification support");
}
ty_dbus_conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
ty_e_object = eldbus_object_get(ty_dbus_conn,
"org.enlightenment.wm.service",

View File

@ -1140,6 +1140,49 @@ err:
}
static void
_handle_xterm_777_command(Termpty *ty EINA_UNUSED,
char *s, int len EINA_UNUSED)
{
#if (ELM_VERSION_MAJOR > 1) || (ELM_VERSION_MINOR >= 8)
char *cmd_end = NULL,
*title = NULL,
*title_end = NULL,
*message = NULL;
if (strncmp(s, "notify;", strlen("notify;")))
{
ERR("unrecognized xterm 777 command %s", s);
return;
}
if (!elm_need_sys_notify())
{
ERR("no elementary system notification support");
return;
}
cmd_end = s + strlen("notify");
if (*cmd_end != ';')
return;
*cmd_end = '\0';
title = cmd_end + 1;
title_end = strchr(title, ';');
if (!title_end)
{
*cmd_end = ';';
return;
}
*title_end = '\0';
message = title_end + 1;
elm_sys_notify_send(0, "dialog-information", title, message,
ELM_SYS_NOTIFY_URGENCY_NORMAL, -1,
NULL, NULL);
*cmd_end = ';';
*title_end = ';';
#endif
}
static int
_handle_esc_xterm(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
{
@ -1306,6 +1349,15 @@ _handle_esc_xterm(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
r, g, b, 0xff);
}
break;
case 777:
DBG("xterm notification support");
s = eina_unicode_unicode_to_utf8(p, &len);
if (s)
{
_handle_xterm_777_command(ty, s, len);
free(s);
}
break;
default:
// many others
ERR("unhandled xterm esc %d", arg);