Enlightenment ha crecido más que un Administrador / Gestor de ventanas [1][2]. Tiene muchos sistemas que han crecido por si mismos para apoyar el desarrollo de la siguiente versión (0.17) y todo el esfuerzo está entrando en la solidificación de estos sistemas para hacer más estable el desarrollo sobre ellos. Esto ha conducido a mucho código producido lejos y más allá de un Administrador de ventana. La idea es compartir tanto código como sea posible con otros programas, y así que un ejército pequeño de bibliotecas compartidas se ha desarrollado para Enlightenment. Esta introducción procura cubrir algunos de éstas (especialmente las más interesantes) para dar una buena penetración en porqué existen, lo que hacen, cómo utilizarlos, y adonde van.
Referimos a estos sistemas como las "Bibliotecas de la fundación de Enlightenment" (Enlightenment Foundation Libraries) o EFL por sus siglas en ingles, pues son la fundación del proyecto y actualmente el contener todo el trabajo duro. El intento es tener bibliotecas que sean extremadamente fáciles de utilizar y de aprender, eso optimiza automáticamente para el programador en lo posible y ahorra el tiempo y el esfuerzo del programador a largo plazo. Creemos que hemos alcanzado muchas de estas metas y que tenemos algunos aspectos muy únicos que pueden estar de gran interés a los reveladores fuera del proyecto de crear algunas herramientas interesantes y asombrosas.
Enlightenment
Enlightenment es el Administrador de Ventanas y el Shell del Escritorio. Esto es lo que piensa la mayoría de la gente que es solamente Enlightenment. Eso solo la punta del iceberg por mucho aunque Enlightenment es el sofware insignia en el proyecto. Es actualmente mucho mas reciente que cualquier otra parte de las EFL.
Enlightenment, Como DR0.17 (que no se ha lanzado todavía. Las ultimas capturas de CVS son 0.16.999) es nuestro Administrador de Ventanas de "siguiente generacion". No utiliza ninguna extension avanzada de X disponible en algún Servidor X nuevo[1][2], todavía, pues se está esforzando ser al revés-compatible a todo los Servidores X incluso en las máquinas más viejas.
Esta siendo diseñado no solo para nuevas características, sino también para trabajar en los dispositivos con poco poder de procesamientos, así como los sistemas de más de mayor capacidad de procesamiento de hoy en día. No es el mejor o el mas rápido pero esta cerca a la máxima velocidad y cerca del mínimo por tamaño (comparado a sus contrapartes que tienen funcionalidad equivalente), pero sobretodo a cosas que se esfuerza ser hermoso.
Creemos que tu escritorio no debe ser una monstruosidad. Debe ser funcional Y hermoso. Enlightenment permite que modifiques enteramente la mirada para requisitos particulares de ella vía temas a un grado que la mayoría de los otros Administradores de Ventanas tan solo pueden soñar, especialmente hacerlo a la misma velocidad y eficacia. Enlightenment aun no es listo para el lanzamiento a los usuarios, así que mantenemos el desarrollo sobre todo sin apoyo, pero no desaprobamos su instalación para que puedan saborear lo que esta por venir.
Evas
Evas es un Display Canvas. Esto es diferente al usual "modo inmediato" del sistema de visualización que la mayoría de los programadores están acostumbrados y que existen en el Xlib, GDI e incluso los niveles de OpenGL al hacer la programación de los gráficos. La diferencia es que el programador tiene que llamar rutinas PARA DIBUJAR la pantalla o actualizar dibujando una operación a la vez, por ejemplo dibujar lineas, pegar imágenes dibujar cajas o pegar texto. Cuando la pantalla necesita una actualización estas operaciones son hechas otra vez por el código, normalmente del elemento del fondo hasta el que esta sobre todo (algoritmo de los pintores).
Este es el "modo inmediato"de dibujado. Evas es diferente. Es estructural por naturaleza, así que en vez del dibujo, describes el contenido del canvas (o la escena) en términos de primitivos (imágenes, líneas, cajas, polígonos, secuencias de texto etc.) y características (color, el apilar, tamaño, etc.). El dibujo sí mismo es manejado por el canvas, que actúa como máquina del estado, haciendo no realmente ningún "trabajo duro"hasta que se ejecuta una llamada del render canvas, en cuyo caso evalúa el anterior y el estado actual y pone al día apropiadamente la pantalla sin el que programador tenga que saber se hace esto.
Evas es una pieza base de las EFL. Es el renderizador y el motor del administrador de display que esta bajo cualquier cosa veas en pantalla. Hace todo el trabajo de administrar todos los objetos mostrados, su estado, estados de cambio, el nivel de las capas, renderizado y escalamiento, carga de la imagen, renderizado de texto, optimizado de la tubería de manejo, optimizando la tubería de la exhibición para evitar el trabajo y más. Hace los muchos del trabajo difícil del display y es portable más allá del X.
Incluso funciona en el framebuffer directamente sin necesitar X, debajo de Qtopia de Trolltech, en DirectFB, puede renderizar a un buffer de memoria, y puede usar OpenGL para acelerar el renderizado. Es extremadamente flexible y de gran alcance, ahorrando mucho tiempo escribir las rutinas de dibujo repetidoras las cuales a menudo no lo hacen óptimamente. Esto evita el tiempo, el cuidado y el esfuerzo que la mayoría de los programadores no desearían pasar, porque distraen del trabajo importante.
Pero a pesar de todas las cosas que Evas pueda hacer, no es muy grande. Se ha mantenido pequeño, para hacerlo viable NO SOLO para el uso en escritorios pesados sino también en los dispositivos limitados de recursos tales como PDA, los teléfonos móviles y los teléfonos inteligentes, los sistemas estéreos, los reproductores de DVD, los sistemas de PVR/DVR y más.
Ya se han portado a teléfonos móviles y sistemas PVR/DVR probando su capacidad de mostrar estas exhibiciones muy agradablemente con efectos hermosos. El desarrollador no tiene que cambiar cómo crea código para un dispositivo o su escritorio pues el API y el renderizado son igual, así que no hay ambientes o emuladores especiales del desarrollo necesarios. Esto ahorra tiempo y esfuerzo, permitiendo que el código del escritorio y de dispositivo se comparta y sea mantenido fácilmente. También puesto que Evas oculta los detalles de los dispositivos, y virtualiza la exhibición en un nivel de objeto, el programador no necesita cuidar cómo renderizar cosas. Pueden utilizar un sistema estándar que sea universal a través de todos las instancias de Evas.
Evas proporciona la alpha blending, escalamiento de alta calidad de imágenes, anti-aliased texto truetype, gradientes, líneas, polígonos y más. La lista de objetos apoyados está creciendo, y puede ser extendida vía objetos elegantes. Tiene un mecanismo del interfaz a tener en cuenta para que los datos de vídeo sean dirigidos eficientemente (que es lo que emotion explota) y más.
Ecore
Ecore es un grupo modular de bibliotecas muy ligadas que proporcionan funcionalidad core event loop y tareas relacionadas. Como core event loop proporciona la conversión de sistemas señales en acontecimientos, para evitar tener que tener código reentrante, manejo básico del descriptor de archivo, monitoreo y paso de control hacia una apropiada rutina de callback donde se necesiten, manejo de temporizadores, llamadas idle, y otra infraestructura general y codigo loop.
También proporciona fáciles wrappers alrededor de sistemas comunes tales como X, Evas (para la disposición y combinación con X), el frame-buffer, administración de la configuración, inter comunicación de proceso, manejo de socket, programación cliente/del servidor, las conversiones de codificación del texto (e.g. EUCJP a UTF8), dirección de trabajo diferida y más. Esta biblioteca es un ahorrador grande de tiempo y la biblioteca base que se puede utilizar para hacer todas los cosas básicas que se necesita hacer, con código y esfuerzo mínimos.
La mejor manera de describir Ecore está como el cemento entre los ladrillos. Lleva a cabo cosas juntas muy agradable. En ejemplos posteriores mucho de la disposición y de la infraestructura es gracias a Ecore. Edje
Edje
Edje es una de las partes más únicas de EFL, combinando muchas cosas que Shockwave / FLASH puede hacer con algunas cosas que no puede, sino que en vez de ser diseñado como reproductor, se diseño como una biblioteca esclava que se utilizará por un aplicación para mejorar el contenido de las aplicaciones vía ficheros externos de datos comprimidos. Se está ampliando continuamente, y gracias a su diseño limpio es fácil mejorar. Este es el motor detrás de los temas de Enlightenment 0.17 y más allá. Formaliza temas de Enlightenment de una manera simple y constante.
Una lista rápida de sus características:
Imágenes Bitmap escalables
Imágenes en linea altamente comprimidas
Compresión sin perdida y con poca perdida con o sin canal alfa
fuentes comprimidas en linea truetype
Múltiples Efectos de fuentes incorporados
Redimensionado automático de fuentes basado en tamaño o en area
Compresión de texto y cortado basado en elipsis
Objetos rectángulo
Sistema configurable de esquema de color
La capacidad de embedir objetos de Edje con objetos Edje
Lenguaje Embryo-script para interacciones complejas
Scripts encajonados para no hacer demasiado daño
Alpha blending
Etiquetas completamente escalables y de tamaño modificable y métricas de la interfaz
Tweened animation completamente calculadas para reproducción ultra suave
Edje incluye actualmente un archivo de formato de fuente como el de C (que usa braces y la anidados similares a la sintaxis de C con anidado como el de XML) conocido como archivos de "EDC"que se compilan en los archivos binarios de "EET"que entonces son utilizados por la biblioteca de Edje para mostrarlos como un png o JPEG no son la "fuente"ellos mismos, son una representación comprimida, amistosa para la maquina de una imagen. Igual va para los archivos de EET.
El plan al largo plazo es proporcionar una nueva versión de la vieja herramienta Etcher que fue producida como un prototipo precursor para Edje (llamado Ebits) que dio a usuario una herramienta GUI de gran alcance para crear tales archivos y para corregirlos. Puesto que Edje es de mayor alcance y complejo de lo que Ebits nunca seria, este trabajo todavía no se ha hecho, sino está en la mesa de planeación.
Embryo
Embryo es una máquina virtual y un compilador basados en el lenguaje de programación Small. Ha tenido muchos bugs reparados y mucho trabajo de portabilidad. Hechos al motor y al compilador. Se ha hecho más pequeño y más simple haciéndolo ideal para la inclusión en cualquier programa que deseara utilizar pedazos pequeños de "script logic"con un sistema más complejo, pero no desea traer recursos masivos requeridos como lo hacen otros idiomas tales como Perl, Python, Java, rubí, etc.
El motor del Embryo es minúsculo. El motor de la base es menos de 1700 líneas de código limpio de C, con la máquina virtual entera incluyendo rutinas básicas de la manipulación y rutinas matemáticas, headers y el código para uso general siendo solamente 3000 líneas de código. Los requisitos de la memoria para una escritura están sobre 8-16Kb de RAM, y se ejecutan muy rápidamente mientras que se compilan ya en bytecode.
Los scripts Embryo se encajonan asi que no pueden accesar archivos totalmente, así que no pueden tener acceso a archivos, no asignan memoria, no tienen acceso a la red, procesos de control ni hacen cualquier cosa que no se ha concedido explícitamente a ellos como llamada de función nativa exportada. Por lo tanto una escritura del Embryo por naturaleza es muy segura además de ser pequeña y muy rápida. El único daño que puede hacer está vía cualquier llamada de función a un programa puede proporcionar deje al script interconectar con el sistema, y éste es el mismo peligro inherente en TODOS lo sistemas. La ventaja es que el programador no necesita preocuparse de problemas fuera de esto.
No importa que no esten ya que compilaremos el imlib2 de cvs y se colocaran los archivos en el lugar de los anteriores (cuando se hace esto se adquiere una mejor calidad en las imagenes y las aplicaciones que usan imlib son mas rapidas) porque el imlib que esta en CVS es una libreria mas nueva y claro al compilarse se hace con optimizacion para el sistema, para que urpmi no sobre escriba los archivos compilado de la imlib cvs se debe agregar lo siguiente en el archivo /etc/skip.list :
Código :
# Here you can specify the packages that won't be upgraded automatically # for example, to exclude all apache2 packages : # /apache2/
Ahora que ya tenemos todas las dependencias instaladas debemos bajar el codigo de Enlightenment del servidor cvs, puedes crear un directorio y luego entras a el para que cuando ejecutes los comandos siguientes las fuentes se descarguen a ese directorio caso contrario se descargaran al directorio actual donde te encuentras:
Código :
cvs -z3 -d:pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17
Código :
cvs -z3 -d:pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e_modules
Con esos dos comandos habras bajado Enlightenment 17 y sus modulos pero si te animas a bajar mas puedes bajar mas software de Enlightenment muchos de estos programas no estan terminados y tienen fines experimentales por el momento:
Código :
cvs -z3 -d:pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co misc
Ahora que tenemos todo listo entramos en los directorios descargados y comenzamos a compilar el orden de compilacion es el siguiente:
e17/apps/e Administrador de Ventanas y Shell Grafico
e17/apps/e_utils Aplicaciones para Administrar "amigablemente" E17
Modulos e_modules/ Modulos que agregan funcionalidades a Enlightenment estos se deben compilar como usuarios normales para que se instalen en tu home
Para la compilacion solo necesitamos ejecutar el script autogen.sh dentro de cada directorio del paquete que queramos compilar.
Código :
./autogen.sh
Puedes pasarle parametros a autogen como si fuera configure si no le pones ninguno enviara las cosas a /usr/local caso contrario los enviara a donde le especifiques los dos parametros mas importantes son libdir y bindir, directorio de librerias y de binarios respectivamente.
Los puedes especificar asi:
Código :
./autogen.sh --bindir=/usr/bin --libdir=/usr/lib
Si no colocas un path a librerias y / o binarios tendras que agregar /usr/local/bin a tu path en .bash_profile en tu home y /usr/local/lib a tu /etc/ld.so.conf
Luego de la configuracion del autogen se digitan los ya conocidos comandos:
Código :
make make install
Cuando llegues a E necesitas especificar unos parametros: