EMpathy
O Empathy e' um aplicativo de chat com diversos protocolos e suporte a audio e video. No Unity do Ubuntu 11.04, este aplicativo faz parte do desktop, podendo ser acessado atravez do icone indicador ou applet no canto superior direito do sistema (icone no formato de uma nuvem de chat).
Ver tambem a pagina wiki VideoConferência
Compilacao Ubuntu 11.04
Bibliotecas necessárias
gnome-common >= 2.3.0
gettext
libglib2.0-dev
gtk-doc-tools
libxml2-dev
libtelepathy-glib-dev
libmissioncontrol-client-dev
libtelepathy-farsight-dev
libx11-dev
libgtk2.0-dev
libcanberra-gtk-dev
libgstreamer-plugins-base0.10-dev
libebook1.2-dev
libnotify-dev
libunique-dev
libgnome-keyring-dev
Métodos para obtenção das dependencias
primeiro de tudo:
$ sudo aptitude build-dep empathy
Esse comando instalará várias dependencias, mas nem sempre todas.
então tente para as que faltam:
@ sudo aptitude install <nome da dep> ou $ sudo apt-get install <nome da dep>
Eu particularmente prefiro o aptitude ao apt-get
caso ainda faltem dependencias, só pegando na internet e instalando manualmente =/
Videos de Compilação
Video 1 - Primeira tentativa
Video 2 - Instalando Dependências
Video 3 - EMpathy Compilado
Dependencias Adicionais Necessarias via Git
Vala / valac teve que ser instalado do git:
git clone git://git.gnome.org/vala
Folks teve que ser instalado do git:
git clone git://git.gnome.org/folks
Libnotify
git clone git://git.gnome.org/libnotify
Telepathy / telepathy-glib / telepathy-logger
git clone git://anongit.freedesktop.org/telepathy/telepathy-glib git clone git://anongit.freedesktop.org/telepathy/telepathy-logger
Gnome-keyring / gcr-3 / p11-kit-1
git clone git://anongit.freedesktop.org/p11-glue/p11-kit git clone git://git.gnome.org/gnome-keyring
Erros de Compilacao
Existe um bug no Ubuntu 11.04 natty. Quando rodamos make, o seguinte erro aparece:
/bin/grep: /lib/x86_64-linux-gnu/libgcrypt.la: No such file or directory /bin/sed: can't read /lib/x86_64-linux-gnu/libgcrypt.la: No such file or directory libtool: link: `/lib/x86_64-linux-gnu/libgcrypt.la' is not a valid libtool archive
Para resolver, veja na pagina do bug do Ubuntu: https://bugs.launchpad.net/ubuntu/+source/libgcrypt11/+bug/751142
O que eu terminei fazendo (Usuário:V1z) foi um link simbolico, ja que o pacote libgcrypt ta bugado:
cd /lib/x86_64-linux-gnu ln -s /usr/lib/x86_64-linux-gnu/libgcrypt.la
Estudos
O que é Vala
Vala é uma nova linguagem de programacão que tem como objetivo trazer características de uma linguagem de programacão moderna para os desenvolvedores GNOME sem usar uma ABI diferente comparado as aplicacões e bibliotecas escritas em C.
Valac, o compilador Vala, é um compilador "self-hosting" que traduz código Vala para código C e cabecalhos. Valac usa o sistema de tipo do GObject para criar classes e insterfaces declaradas no código-fonte Vala.
A linguagem Vala é parecida com C#, apenas com alguns ajustes para se encaixar melhor no C/GObject.
Valac produz código C e arquivos de cabecalho a partir de código Vala como se você tivesse escrito sua biblioteca ou aplicacão diretamente em C.
Uma boa IDE para desenvolver em Vala é o Mono-Develop
Source-Code
O código está dividido em pastas:
- /src : Se encontram os principais arquivos de código.
- /libempathy-gtk : Se encontram os códigos responsáveis pela UI.
- /libempathy : Se encontram os códigos mais "baixo nível". O código que "faz a coisa funcionar" propiamente dito.
main()
local: /src/empathy.c (linha: 704)
Arquivos/Funcões Importantes (na caça ao bug #645522)
empathy-contact-selector
local: /libempathy-gtk/empathy-contact-selector.c
descrição: Responsável pela seleção de contatos da lista. (Uma forma de reproduzir o bug é selecionando qualquer contato quando a "view offline contacts" estiver ativo.)
empathy-main-window
local: /src/empathy-main-window.c
descrição: Janela principal do EMpathy
Resolvendo o Bug #655270
- trata-se da primeira mensagem CRITICAL. Portanto, fiz: diff --git a/src/empathy.c b/src/empathy.c index 6e2b165..8ca94ac 100644 --- a/src/empathy.c +++ b/src/empathy.c @@ -725,6 +725,7 @@ main (int argc, char *argv[]) "flags", G_APPLICATION_HANDLES_COMMAND_LINE, NULL); + g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL); retval = g_application_run (G_APPLICATION (app), argc, argv); notify_uninit (); Mais comentarios: - agora o bug da um coredump q posso usar no ddd - ddd empathy core - (up up up...) chega-se em empathy_app_finalize, linha gtk_widget_destroy(self->window), em empathy.c:175 - isso ainda nao resolveu muita coisa; apenas confirmou a solucao esperada. TODO: ver as funcoes de self->window que sao rodadas no destroy. - vamos entender o que acontece com contrl-F e o [X] ao lado da caixa de texto - sera que usando view->find tambem da o mesmo pau? sim! - menu item "Find in Contact List" - busca no codigo fonte por essa string nao retorna! procurei '\<edit\>' - na verdade essa string do menu item esta' em src/empathy-main-window.ui. - Isto parece ser do glade, mas e' de GtkUIManager, o qual e' uma versao simplificada do esquema xml do glade para apenas menus e toolbars: http://live.gnome.org/GnomeLove/UIManagerTutorial - Para efeitos do codigo, estamos trabalhando com 'edit_search_contacts' - a UI chamou isto de um objeto GtkAction. - GtkAction nao aparece no gnome2 guide. - Ver o esquema do GtkUIManager. - alias, o empathy nao parece ser uma 100% gnome app, apesar de estar no core. - Callback: em empathy-main-window.c:1525 - main_window_edit_search_contacts_cb (GtkCheckMenuItem *item, - conectado em empathy_main_window_init por empathy_builder_connect, - empathy-main-window.c:2226 - empathy_builder_connect (gui, window,......... "edit_search_contacts", "activate", main_window_edit_search_contacts_cb, - gui e' um GtkBuilder * (glade?) - window e' um EmpathyMainWindow (filho de GtkWindow) - main_window_edit_search_contacts_cb so' chama: - empathy_individual_view_start_search(priv->individual_view) - individual_view e' um objeto filho de GtkTreeView - estou pensando que isto representa os contatos. - esta funcao faz a caixa de busca aparecer - gtk_widget_show(GTK_WIDGET(priv->search_widget)); - ** e' exatamente neste estado que nao se pode dar um quit no aplicativo