Catégorie : Environnement de bureau     Tags :      0 Commentaire

    Retrouvez cet article dans : Linux Magazine 89

    Alors qu’une guerre sévère fait rage entre Gnome et KDE qui se veulent être des environnements de bureau complets, Enlightenment se fait une place de plus en plus grande au sein de nos distributions, en proposant un desktop shell simple, performant, flexible et thématisable.

    Introduction

    Enlightenment DR17 (Development Release), alias E17, est l’évolution naturelle du très connu Enlightenment 16. Ce projet est en développement depuis 2000, date de release de la version 16. Le but initial pour le développeur principal, alias Rasterman [1], et de son équipe [2] a été de fournir un ensemble de bibliothèques dynamiques entièrement nouvelles, appelées EFL (Enlightenment Foundation Libraries) comme une brique sur laquelle un maximum de programmes, dont E lui-même, peuvent s’appuyer. L’optique suivie lors du développement des EFL est " simplicité de l’API " [13] (par exemple, Emotion, la bibliothèque de lecture multimédia permet d’écrire un lecteur de DVD en 17 lignes de code C [3]) et " optimisation " (Enlightenment tourne sans problème sur des configurations matérielles réduites, ce qui lui a permis d’être choisi par les développeurs de chez Sony comme gestionnaire de fenêtres par défaut de la distribution Linux proposée sur la prochaine PS3).
    Enlightenment est un desktop shell, c’est-à-dire qu’il ne gère " que " l’affichage de fenêtres, mais il le fait bien ! Ainsi, ne vous attendez pas à voir apparaître des icônes sur le fond d’écran lorsque vous branchez votre clé USB (il est possible de gérer les montages à chaud dans votre distribution, mais, dans ce cas, ça n’est pas géré par Enlightenment). Enlightenment mise avant tout sur la rapidité et la simplicité. Les actions se font principalement via des menus contextuels comme dans Fluxbox : un clic droit sur le bureau vous donnera accès à la liste des applications favorites, tandis qu’un clic gauche vous donnera accès au menu global. Toujours dans l’optique de simplicité, il suffit d’approcher le curseur de la souris du bord de l’écran pour changer de bureau ! Comment vous procurer ce gestionnaire de fenêtres fabuleux ? Eh bien, suivez-nous, on vous montre le chemin !

    Figure 1 : E17, sobre et efficace

    Cet article a pour but de vous aider à :

    • compiler et installer E17, les EFL et les applications construites avec ces bibliothèques ;
    • configurer et prendre en main E17.

    De plus, nous allons, par l’intermédiaire du processus d’installation, décrire l’utilité des bibliothèques et logiciels disponibles.

    2. Installation

    Afin qu’aucun lecteur ne soit lésé, nous allons vous décrire l’installation de E17 à partir du code source disponible sur le dépôt CVS du projet. Nous verrons vers la fin de l’article comment utiliser un script qui fait tout le travail à votre place, ainsi que les méthodes d’installation de paquets sous Ubuntu et Debian (cf. un peu plus loin), et via Emerge pour Gentoo.
    Tout d’abord, nous commencerons par récupérer le code source complet de notre fameux gestionnaire de fenêtres. Pour cela, il vous faudra un client CVS (installé par défaut sur la majorité des distributions, sinon, nous vous laissons le soin de l’installer par les moyens fournis par votre distribution préférée).
    E17 dispose de trois modules principaux sur le dépôt CVS :

    • e17 : répertoire principal du projet, dans lequel se trouvent trois sous-répertoires qui nous intéressent : apps (applications), libs (EFL), proto (applications et bibliothèques en développement actif) ;
    • misc : répertoire avec quelques projets basés sur les EFL, indépendants de Enlightenment ;
    • e_modules : répertoire des modules E17. Les modules sont équivalents aux applets dans Gnome ; c’est-à-dire des petits programmes servant à étendre les fonctionnalités de E.

    Pour récupérer ces sources (en prenant exemple sur notre arborescence) :

    cd ~/repositories/e17
    cvs -qz3 -d:pserver:anonymous:@anoncvs.enlightenment.org:/var/cvs/e co e17 misc e_modules

    Cette manipulation va créer les trois répertoires de sources. Avant d’attaquer la procédure de compilation, nous allons mettre à jour quelques variables d’environnement en supposant que le répertoire d’installation soit ~/e17 :

    PATH : export PATH=~/e17/bin/:$PATH
    LD_LIBRARY_PATH : export LD_LIBRARY_PATH=~/e17/lib/:$LD_LIBRARY_PATH

    Vous pouvez bien sûr ajouter ceci dans les fichiers de configuration de votre shell. Une fois cette manipulation faite, nous allons commencer par compiler les bibliothèques du projet, appelées " Enlightenment Foundation Libraries ", alias EFL. Pour ce faire, allez dans le répertoire e17/lib des sources fraîchement récupérées et entrez successivement dans les répertoires listés ci-dessous pour y exécuter les commandes suivantes :

    ./autogen.sh --prefix=~/e17
    make all install clean

    Attention :

    Veillez à respecter l’ordre d’apparition dans le tableau ci-dessous en raison des dépendances entre les bibliothèques. De plus, vous aurez très certainement d’autres problèmes de dépendances avec des bibliothèques ou logiciels tiers, nécessaires à la compilation de l’ensemble. Nous vous fournissons ci-dessous une liste que nous espérons des plus complètes :

    automake1.9 autoconf libtool gettext pkg-config build-essential flex bison byacc x11proto-core-dev libfreetype6-dev libjpeg62-dev libpng12-dev libtiff4-dev libungif4-dev zlib1g-dev libbz2-dev libid3tag0-dev libncurses5-dev libgtk1.2-dev libglu1-mesa-dev libxrender-dev libfontconfig-dev libdirectfb-dev librsvg2-dev libcurl3-dev libxdamage-dev libxprintutil-dev libxine-dev libltdl3-dev libtag1-dev libsqlite3-dev libtagc0-dev libsmbclient-dev libcdio-dev libglade2-dev

    2.1 Les bibliothèques

    /img-articles/lm/89/art-2/t1.jpg

    Note :

    Chaque bibliothèque dispose d’au moins un programme de test et de divers outils. Ils sont pour le moment compilés en même temps que la bibliothèque (certains ont été extraits de la compilation – c’est le cas pour edje, ecore, evas, eet et embryo – il faut alors jeter un œil dans le répertoire e17/test pour les compiler à part, via un appel à make). En voilà une liste non exhaustive (nous vous laissons le soin de jeter un œil dans votre répertoire d’installation) :

    • Imlib2 :
      • imlib2_test : test global d’imlib2 ;
      • imlib2_show : autre test d’imlib2 ;
      • imlib2_poly : test de dessin de polygones;
      • imlib2_bumpmap : test de rendu d’un bump mapping sur une image [7].
    • Evas :
      • evas_gl_x11_test : test de l’utilisation d’evas en mode fenêtré avec rendu OpenGL ;
      • evas_software_x11_test : test de l’utilisation d’evas en mode fenêtré avec rendu logiciel.
    • Ecore :
      • ecore_evas_test : test de l’imbrication d’evas et d’ecore ;
      • ecore_test : test d’utilisation d’ecore, gestion des évènements de la souris et d’un timer.
    • Edje :
      • edje : visualiseur de fichiers .edj (extension de fichier binaire edje);
      • edje_cc : compilateur de fichier .edj à partir d’un fichier .edc (extension de fichier source edje) ;
      • edje_decc : décompilateur de fichiers .edj ;
    • Esmart :
      • esmart_test : affichage d’une image sur un fond en fausse transparence.
    • Emotion :
      • emotion_test (à lancer avec au moins deux vidéos en paramètres) : les vidéos étant de simples objets evas, il est possible de modifier leur canal alpha, et ainsi de les rendre plus ou moins transparentes !
    • Ewl :
      • ewl_embed_test : test d’imbrication evas/ewl (cliquez sur " open ") ;
      • ewl_test : visualisation, codes et tutoriels sur les widgets d’ewl.

    /img-articles/lm/89/art-2/fig-2.jpg

    Figure 2 : emotion/evas/edje en action, jolie la transparence ;-)

    2.2 Les applications

    Ensuite, nous allons compiler les applications qui vont utiliser les bibliothèques construites ci-avant. Dirigez-vous dans le répertoire e17/apps de l’arborescence des sources. La compilation s’effectue avec les mêmes commandes que précédemment, toujours de préférence dans l’ordre d’apparition dans le tableau ci-dessous.

    2.2.1 Le répertoire e17/apps

    Ce répertoire contient les applications qui composent Enlightenment. Bien que la plupart soient encore en développement, elles sont considérées comme assez stables pour être diffusées.

    /img-articles/lm/89/art-2/fig-2.jpg

    Une application (autre que E) des plus représentatives de la puissance des EFL est certainement eclair. Comme énoncé dans le tableau ci-contre, eclair est un lecteur multimédia basé sur edje (le moteur de création de thèmes).

    2.2.2 Le répertoire e17/proto

    Ce répertoire contient des applications et bibliothèques considérées comme encore trop sujettes à modification

    /img-articles/lm/89/art-2/fig-2.jpg

    Figure 3 : eclair en action

    Note :

    Il existe un petit utilitaire sympathique, compilé en même temps que eclair qui se nomme : eclair_wsz2edj. Ce petit utilitaire permet de convertir n’importe quel thème Winamp [15] en un skin pour eclair.

    pour être intégrées directement à Enlightenment, mais certaines sont assez avancées pour que nous puissions vous proposer de les installer. Les commandes de compilation sont toujours les mêmes !

    /img-articles/lm/89/art-2/t3.jpg

    /img-articles/lm/89/art-2/fig-4.jpg

    Figure 4 : enterminus, le shell basé sur les EFL

    2.2.3 Les modules

    Les modules sont des extensions de fonctionnalités d’enlightenment se trouvant dans le répertoire e_modules. Suivant l’état du dépôt CVS, certains peuvent ne pas compiler. Nous vous fournissons une liste ci-dessous, de modules dont le code est stable depuis quelques temps :

    /img-articles/lm/89/art-2/t4.jpg

    Toute cette compilation devrait vous prendre environ 40-50 minutes. Il se peut que vous ne soyez pas motivé pour compiler tout cela à la main. La tâche peut paraître fastidieuse. Pour vous aider, il existe un script qui le fait pour vous ; son utilisation vous est expliquée ci-dessous.

    2.3 Installation par un script

    De nombreux scripts permettant une compilation et une installation aisées d’enlightenment ont fleuri un peu partout sur la toile. Nous allons ici utiliser le script officiel écrit par Morlenxus, un membre de l’équipe de développement d’enlightenment : easy_e17.sh.
    Tout d’abord, récupérez le script :

    wget http://omicron.homeip.net/projects/easy_e17/easy_e17.sh

    Pour que la compilation se passe bien, il vous faut installer les mêmes dépendances que pour la compilation à la main (cf. chapitre 2), étant donné que ce sont les mêmes manipulations qui sont effectuées (elles vous sont juste cachées).
    Le script n’a pas à être lancé en root, il suffit que sudo soit installé et que votre utilisateur ait le droit d’exécuter sudo. Le script détectera si vous êtes connecté en tant que root, ou vous demandera votre mot de passe pour sudo (utilisé pour l’installation).
    Lancez le script, il vous fait tout (récupération des sources, compilation et installation... mais pas la vaisselle, dommage) !

    ./easy_e17.sh -i

    Voilà, vous êtes parti pour 40-50 minutes, mais le résultat en vaut le coup ! Une fois le traitement terminé, déconnectez-vous, votre gestionnaire de connexion devrait vous proposer une nouvelle entrée dans la liste des sessions disponibles : enlightenment !

    2.4 Dépôts Ubuntu et Debian

    2.4.1 Debian x86 et x86_64

    Ajoutez les dépôts binaires dans /etc/apt/sources.list :

    deb http://edevelop.org/debian/ unstable main

    Il se peut que vous ayez un message d’information lors de la mise à jour des paquets concernant la clé non trouvée. Ce message n’est pas très grave, mais peut devenir pénible à la longue. Pour y remédier, copiez la chaîne de caractères de la clé et utilisez les commandes suivantes :

     gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys la_cle
     gpg --armor --export la_cle | apt-key add -

    Enfin, une recherche du mot clé e17 dans Synaptic ou un petit apt-get install e17 devraient faire l’affaire. Déconnectez-vous de la session, une nouvelle session vous sera proposée dans gdm pour vous connecter à enlightenment !
    Si vous souhaitez utiliser le gestionnaire de connexion entrance, installez-le via Apt_get ou Synaptic, le script d’installation vous demandera quel gestionnaire de connexion vous souhaitez utiliser : choisissez alors entrance.
    Si vous souhaitez par la suite revenir en arrière, un petit dpkg-reconfigure gdm vous proposera le même choix.

    2.4.2 Ubuntu Dapper

    Grâce au travail de Lut!n et Sp4rky, les utilisateurs d’Ubuntu disposent d’un dépôt régulièrement mis à jour.
    Dans un premier temps, téléchargez la clé de Lut!n pour authentifier le dépôt :

     wget http://lut1n.ifrance.com/repo_key.asc

    Puis installez-la (ce n’est pas obligatoire, mais ça vous évitera entre autres les messages de clé non trouvée lors de la mise à jour de la liste des paquets via Synaptic ou Apt-get) :

     * sudo apt-key add repo_key.asc

    Ajoutez les dépôts binaires et sources dans /etc/apt/sources.list :

    deb http://edevelop.org/ubuntu dapper e17
    deb-src http://edevelop.org/ubuntu dapper e17

    Enfin, une recherche du mot clé " enlightenment " dans Synaptic, ou un petit apt-get install enlightenment devraient faire l’affaire. Déconnectez-vous de la session, une nouvelle session vous sera proposée dans gdm pour vous connecter à Enlightenment !
    Si vous souhaitez utiliser le gestionnaire de connexion entrance, installez-le via Apt_get ou Synaptic, le script d’installation vous demandera quel gestionnaire de connexion vous souhaitez utiliser : choisissez alors entrance.
    Si vous souhaitez par la suite revenir en arrière, un petit dpkg-reconfigure gdm (ou tout autre) vous proposera le même choix.

    2.5 Gentoo et FreeBSD

    Nous n’entrerons pas dans les détails de l’installation, mais des ports sont disponibles sous Gentoo et FreeBSD. N’hésitez pas à parcourir vos arborescences !

    2.6 Autres distributions

    Il se peut que des volontaires aient effectué un travail similaire pour votre distribution préférée, mais, dans ce cas, ces travaux n’ayant pas été recensés sur edevelop, nous ne vous en faisons pas part (par méconnaissance sans doute). Si c’est le cas, n’hésitez pas à communiquer ces initiatives auprès de la communauté Enlightenment !

    3. Lancement de E et prise en main

    Dans cette partie, nous allons voir comment lancer E de différentes manières et nous allons nous familiariser avec les outils que propose ce desktop manager.

    3.1 Lancement de E

    Il y a trois façons de lancer E :

    • utiliser le gestionnaire de connexion Entrance ;
    • configurer votre gestionnaire de connexion favori (gdm, kdm, xdm...) afin de rajouter une entrée pour E;
    • utiliser la commande startx en mode console.

    /img-articles/lm/89/art-2/fig-5.jpg

    Figure 5 : Le gestionnaire de connexion entrance

    3.1.2 Configuration de gdm

    Nous allons prendre comme exemple le gestionnaire de connexion du projet Gnome : gdm. Pour pouvoir lancer E via gdm, rendez-vous dans le répertoire : /usr/share/xsessions/ (vous allez avoir besoin de votre compte root). Dans ce répertoire, éditez un fichier Enlightenment.desktop et recopiez ceci :

    [Desktop Entry]
    Encoding=UTF-8
    Name=E17
    Exec=/home/john/e17/bin/enlightenment #Chemin vers votre propre binaire.
    Icon=
    Type=Application

    Relancez ensuite gdm et dans le choix de sessions, vous trouverez une nouvelle entrée E17.

    3.1.3 Startx

    Si vous ne possédez pas d’accès root ou que vous avez tout simplement la flemme d’éditer la configuration de votre gestionnaire de connexion, il vous suffit de créer un fichier à la racine de votre compte : .xinitrc. Ce fichier contiendra cette unique ligne

     /home/john/e17/bin/enlightenment #Chemin vers votre propre binaire.

    Il suffit alors de couper votre session X courante : [Ctrl]+[Alt]+[F1], puis en root d’exécuter la commande /etc/init.d/gdm stop (ou tout autre gestionnaire de connexion), ce qui aura pour effet d’arrêter l’interface graphique X. En tant que simple utilisateur, tapez ensuite startx pour la relancer directement, le fichier .xinitrc sera automatiquement pris en compte.

    Une fois vos différentes manipulations faites, vous pouvez lancer E. Vous allez apercevoir une magnifique animation au ralenti. Les images ne vous donneront qu’un aperçu de la chose. Nous vous invitons à visionner une vidéo disponible sur le site de Rasterman [8]. Cette dernière n’est pas à jour avec les versions actuelles de E, mais elle donne un bon aperçu du rendu. Une fois E lancé, vous pouvez cliquer avec le bouton gauche de votre souris pour naviguer dans les panels de configuration (figure 6).

    3.2 E_Utils

    Si vous avez suivi la procédure d’installation, nous avons compilé des utilitaires tels que e17setroot qui permet de définir manuellement votre fond d’écran. Cette application est très utile si vous utilisez des logiciels manipulant la fausse transparence (ETerm, etc.).

    $ e17setroot [options] monWallpaper.png

    Attention :

    Si vous lisez en parallèle de cet article d’autres tutoriels sur internet, il se peut que vous tombiez sur des termes qui sont désuets depuis le début du mois de septembre. Notamment, la notion de " eap " (pour E Application). Ce format était un format binaire afin de garantir les performances du bureau. Un binaire eap était un binaire de description d’un autre exécutable, un lien vers une autre application. Ce format a été remplacé par la norme de fichiers .desktop prodiguée par freedesktop.org [9] et utilisée dans Gnome, KDE...

    3.3 Configuration des icônes

    Il y a plusieurs façons de configurer les icônes présentes. Par l’intermédiaire du Menu E (clic gauche) -> Configuration -> Applications. Par ce chemin, vous arrivez sur un panneau de configuration, avec la liste des " bar " pouvant accepter des raccourcis.
    Si les interfaces graphiques pour configurer votre système ne sont pas votre tasse de thé, il y a bien évidemment une alternative à ce panneau.
    Pour pouvoir configurer le tout à la main. Il va falloir quelques informations supplémentaires. Le répertoire de configuration de E se trouve dans : ~/.e. Les applications sont dans ~/.e/applications/all. Dans ce dernier répertoire, vous aurez la liste de tous les fichiers à extension .desktop. Si vous voulez configurer votre module ibar, il vous suffit

    /img-articles/lm/89/art-2/fig-6.jpg

    Figure 6 : Le bureau et le menu accessible via un clic sur le bouton gauche de la souris, plus quelques modules (de gauche à droite et de haut en bas : uptime, weather, mem, net, pager, mail, température, ibar, ibox, horloge).

    de vous diriger vers : ~/.e/e/applications/bar/default et de faire :

    Note :

    Le fichier .order est le fichier qui représente l’ordre d’affichage des icônes dans le cas d’une barre de lancement, et l’ordre de lancement des applications dans le cas du démarrage de E (~/.e/e/applications/startup).

    Il se peut aussi que vous ayez des applications dont les fichiers .desktop n’aient pas été générés par E ou par menu_update : ceci arrive principalement pour les applications installées dans votre arborescence personnelle. Nous allons prendre l’exemple d’eclipse que nous avons installé dans : ~/bin/eclipse. Tout d’abord, lancez eclipse (ou tout autre application de votre choix) et éditez un fichier qui s’appellera eclipse.desktop dans ~/.e/e/applications/all.

    01: [Desktop Entry]
    02: Encoding=UTF-8
    03: Name=Eclipse
    04: X-Enlightenment-IconPath=/home/john/bin/Eclipse/eclipse/icon.xpm
    05: Exec=/home/john/bin/eclipse #Chemin vers votre propre binaire.
    06: Icon=eclipse.xpm #Icône associé à votre propre binaire.
    07: Type=Application

    3.4 Ajout de modules

    Par défaut, même si vous n’avez pas compilé les modules cités plus haut, vous en avez quelques-uns de disponibles. Nous allons vous montrer la manipulation à effectuer pour activer ou désactiver un module.

    Pour commencer, il y a un peu de terminologie à connaître :

    • Les modules : ce sont des applications lancées dans E17 pour étendre ses fonctionnalités ;
    • Le " shelf " : Le shelf est un conteneur de modules. Il est représenté par des barres le long des côtés de l’écran. L’agencement des shelves se fait via cette manipulation :
      • Menu Contextuel de E (clic gauche) -> Configuration -> Shelves (vous devez en avoir un par défaut) -> Configure
      • Dans ce panneau de configuration, vous pouvez agencer le shelf comme vous le souhaitez.

    Avant de pouvoir ajouter des modules, il faut que vous configuriez le manager de modules afin de préciser si un module est actif ou non. Pour ce faire :

    • Menu Contextuel de E (clic gauche) -> Configuration -> Modules

    Vous vous trouvez dans un menu avec la liste des noms de modules sur la gauche. Pour en activer un ou en désactiver un, il vous suffit de choisir parmi une des deux cases à cocher : " Activé " ou " Désactivé "

    Attention :

    Il se peut que la traduction française ne soit pas complète.

    Une fois cette manipulation faite, vous pouvez ajouter autant d’instances de modules à autant de shelfs que vous le souhaitez. Pour ce faire, faites la manipulation précédente concernant le shelf, et sur la droite, vous trouverez un bouton " Éditer le contenu ". Pressez ce bouton et ajoutez les modules que vous souhaitez.
    Maintenant, il se peut que vous fassiez partie des utilisateurs de Gnome et que vous souhaitiez que les applications gtk que vous exécutez sous E17 utilisent votre style gtk favori. C’est le sujet de la prochaine partie.

    3.5 Intégration de gtk

    Pour obtenir une meilleure intégration de gtk au sein de votre nouvel environnement, il y a deux solutions :
     Si vous avez Gnome d’installé avec votre thème gtk préféré : décrivez un fichier desktop (cf. ci-dessus) permettant de lancer l’application gnome-settings-daemon dans le répertoire ~/.e/e/applications/all/, éditez le fichier .order du répertoire ~/.e/e/applications/startup afin d’y mettre cette entrée. Ce fichier desktop devra ressembler à ceci :

    [Desktop Entry]
    Name=gnome-settings-daemon
    Application=gnome-settings-daemon
    Exec=gnome-settings-daemon
    Icon=””
    • Relancez alors votre environnement et vous y verrez votre thème gtk de Gnome sous E.
    • Vous pouvez par ailleurs utiliser le binaire : gtk-theme-switch2 (du paquet gtk-theme-switch sous Debian ou Ubuntu) disponible dans la majorité des distributions. Pour trouver des thèmes gtk sympas : [15]. Décompressez les dans ~/.themes et lancez le petit utilitaire installé précédemment. Nous vous laissons alors le choix de votre thème.

    3.6 Thèmes

    Tout d’abord, il se pourrait que le thème par défaut ne vous plaise pas du tout (un des points forts du Libre n’est-il pas la diversité ?), ou que vous souhaitiez en utiliser d’autres (ce qui est mon cas). Nous allons donc voir en détail comment faire pour en changer. Le site de la communauté propose des thèmes sympas [10] et [11]. Téléchargez les fichiers .edj et copiez-les dans le répertoire ~/.e/e/themes. Pour ensuite activer le thème :

    •  Menu Contextuel de E (clic gauche) -> Configuration -> Thème

    A partir de là, il vous suffit de choisir le thème que vous voulez. Observons tout de même que si une partie du thème ne vous plaît pas, il vous est possible de l’éditer de cette manière :

    • Faites : edje_decc montheme.edj ;
    • Entrez dans le répertoire montheme et faites vos modifications. Ce répertoire est constitué d’images au format png et de fichiers source edje ;
    • Une fois vos modifications terminées, exécutez : ./build.sh. Ce script vous regénère le fichier montheme.edj. Vous pouvez alors le déplacer dans le répertoire de thèmes de E pour commencer à l’utiliser.

    Note :

    Vous pouvez passer par cette interface pour ajouter un thème via le bouton " Import ".

    4. Petit exemple EFL

    Dans tout cet article, nous vous avons parlé des Enlightenment Foundation Libraries. Il est temps que vous, lecteur intéressé par un peu de développement, y mettiez un peu du vôtre ;-). Nous allons exposer un simple tutoriel ci-dessous avec ewl dont le comportement sera des plus simples. L’interface est composée d’un champ de saisie et d’un bouton. Vous cliquez sur le bouton et une fenêtre modale apparaît par-dessus, avec comme texte ce que vous avez saisi précédemment.
    Pour des raisons de lisibilité au sein du magazine, nous n’allons pas vous décrire les fichiers d’en-tête dans lesquels se trouvent seulement les déclarations des fonctions. Nous ne décrivons que les fichiers sources. Vous trouverez la totalité de l’exemple à cette adresse [12].

    4.1 Fichier principale.c

    Ce fichier de sources se donne pour objectif de définir l’interface principale de cette petite application. Il y a un bouton de label " Saluer " et un champ de saisie de texte. Nous définissons, par ailleurs, une gestion d’évènements assez simple. Ceci est décrit par la définition de fonctions de callback.

     01: /* Fonction appelée lors d’un clic sur le bouton "Saluer" */
    02: void callback_ouverture_modale(Ewl_Widget *widget, void *evenement, void *donnees)
    03: {
    04:     creer_popup(widget, evenement, donnees);
    05: }
    06:
    07: /* Fonction appelée lors de la fermeture de la fenêtre principale, donc de l’application */
    08: void destroy_cb(Ewl_Widget *widget, void *evenement, void *donnees)
    09: {
    10:     /* Destruction de la fenêtre */
    11:     ewl_widget_destroy(widget);
    12:     /* Arrêt de la boucle d’exécution */
    13:     ewl_main_quit();
    14: }
    15:
    16:
    17: void creer_fenetre()
    18: {
    19:     Ewl_Widget *win, *vbox, *button, *saisie, *texte;
    20:
    21:     /* Création de la fenêtre principale */
    22:     win = ewl_window_new();
    23:     ewl_window_title_set(EWL_WINDOW(win), "Test EWL 1/2 : saisie");
    24:     ewl_window_name_set(EWL_WINDOW(win), "EWL_WINDOW");
    25:     ewl_window_class_set(EWL_WINDOW(win), "EWLWindow");
    26:     ewl_object_size_request(EWL_OBJECT(win), 300, 75);
    27:     ewl_callback_append(win, EWL_CALLBACK_DELETE_WINDOW, destroy_cb, NULL);
    28:     ewl_widget_show(win);
    29:
    30:     /* Création d’une boîte d’alignement vertical pour positionner nos widgets */
    31:     vbox = ewl_vbox_new();
    32:     ewl_container_child_append(EWL_CONTAINER(win), vbox);
    33:     ewl_widget_show(vbox);
    34:
    35:     /* Création du label pour demander la saisie du prénom */
    36:     texte = ewl_text_new();
    37:     ewl_widget_name_set(texte, "texte0");
    38:     ewl_text_selectable_set(EWL_TEXT(texte), TRUE);
    39:     ewl_container_child_append(EWL_CONTAINER(vbox), texte);
    40:     ewl_text_text_insert(EWL_TEXT(texte), “Entrez votre prénom :", 0);
    41:     ewl_widget_show(texte);
    42:
    43:     /* Création de la zone de saisie */
    44:     saisie = ewl_entry_new();
    45:     ewl_text_text_set(EWL_TEXT(saisie), " ");
    46:     ewl_text_color_set(EWL_TEXT(saisie), 0, 0, 0, 255);
    47:     ewl_object_padding_set(EWL_OBJECT(saisie), 5, 5, 0, 0);
    48:     ewl_container_child_append(EWL_CONTAINER(vbox), saisie);
    49:     ewl_widget_show(saisie);
    50:
    51:     /* Création du bouton d’appel de la popup */
    52:     button = ewl_button_new();
    53:     ewl_button_label_set(EWL_BUTTON(button), "Saluer");
    54:     ewl_container_child_append(EWL_CONTAINER(vbox), button);
    55:     ewl_callback_append(button, EWL_CALLBACK_CLICKED, callback_ouverture_modale, saisie);
    56:     ewl_widget_show(button);
    57:
    58:     /* Lancement de la boucle d’exécution */
    59:     ewl_main();
    60: }

    4.2 Fichier popup.c

    Ce fichier de sources représente l’interface de la fenêtre " popup ".

     01: /* Fonction appelée à la fermeture de la popup */
    02: void callback_fermeture(Ewl_Widget *widget, void *evenement, void *donnees)
    03: {
    04:     Ewl_Embed *emb;
    05:
    06:     /* On récupere le widget de la fenêtre à fermer */
    07:     emb = ewl_embed_widget_find(widget);
    08:     /* Destruction de la fenêtre */
    09:     ewl_widget_destroy(EWL_WIDGET(emb));
    10: }
    11:
    12: /* Création de la popup */
    13: void creer_popup(Ewl_Widget *widget, void *evenement, void *donnees)
    14: {
    15:     Ewl_Embed *emb;
    16:     Ewl_Widget *win, *vbox, *bouton, *texte;
    17:
    18:    /* On récupère un pointeur sur la fenêtre principale pour définir la popup comme modale par rapport à elle */
    19:     emb = ewl_embed_widget_find(widget);
    20:
    21:     /* Création de la popup */
    22:     win = ewl_window_new();
    23:     ewl_window_title_set(EWL_WINDOW(win), "Test EWL 2/2 : salutation");
    24:     ewl_object_size_request(EWL_OBJECT(win), 300, 50);
    25:     ewl_callback_append(win, EWL_CALLBACK_DELETE_WINDOW, callback_fermeture, NULL);
    26:     ewl_widget_show(win);
    27:
    28:     /* Création d’une boîte d’alignement vertical pour positionner nos widgets */
    29:     vbox = ewl_vbox_new();
    30:     ewl_container_child_append(EWL_CONTAINER(win), vbox);
    31:     ewl_widget_show(vbox);
    32:
    33:     /* Création du label pour afficher la salutation */
    34:     texte = ewl_text_new();
    35:     ewl_widget_name_set(texte, "texte1");
    36:     ewl_text_selectable_set(EWL_TEXT(texte), TRUE);
    37:     ewl_container_child_append(EWL_CONTAINER(vbox), texte);
    38:
    39:     /* Affichage du texte de salutation + le prénom
    saisi-> portion de code pas sécurisé */
    40:     int tailleChaine = 10 + strlen(
       ewl_text_text_get(EWL_TEXT(donnees)));
    41:     char* chaine = (char*) malloc(sizeof(char)*tailleChaine);
    42:     sprintf(chaine, "Bonjour %s!", ewl_text_text_get(
       EWL_TEXT(donnees)));
    43:     chaine[strlen(chaine)] = ‘\0’;
    44:
    45:     ewl_text_text_insert(EWL_TEXT(texte), chaine, 0);
    46:     ewl_widget_show(texte);
    47:
    48:     /* Création du bouton de fermeture de la popup */
    49:     bouton = ewl_button_new();
    50:     ewl_button_label_set(EWL_BUTTON(bouton), "Fermer");
    51:     ewl_callback_append(bouton, EWL_CALLBACK_CLICKED,
       callback_fermeture, NULL);
    52:     ewl_container_child_append(EWL_CONTAINER(vbox), bouton);
    53:     ewl_widget_show(bouton);
    54:
    55:     /* Mise de la popup en mode modal par rapport
    à la fenêtre principale */
    56:     ewl_window_modal_for(EWL_WINDOW(win), EWL_WINDOW(emb));
    57: }

    Fichier main.c

    C’est le point d’entrée de l’application.

    01: int main(int argc, char* argv[])
    02: {
    03:     /* Initialisation de ewl */
    04:     if (!ewl_init(&argc, argv))
    05:     {
    06:         fprintf(stderr, “Impossible d’initialiser ewl\n”);
    07:         return 1;
    08:     }
    09:
    10:    creer_fenetre();
    11:
    12:    return 0;
    13: }

    Conclusion

    Ainsi se finit notre article, sur ce petit exemple écrit en ewl qui vous montre la simplicité d’utilisation des EFL. Vous avez maintenant entre les mains une version récente d’Enlightenment 17, n’hésitez pas en cas de problème à contacter la communauté via IRC [14] ou tout autre moyen de communication. A bientôt pour un voyage au cœur des bibliothèques de ce projet, à travers des exemples utilisant edje, evas, ecore, etk...

    Liens:

    • [1] Site du développeur principal, alias Rasterman : http://www.rasterman.com/
    • [2] http://www.enlightenment.org/. Vous y trouverez les nouvelles du projet, ce qui est cassé dans les sources, les nouvelles fonctionnalités.
    • Get Enlightenment :

      http://www.get-e.org/

    • Sites officiels de la communauté française :
      http://www.enlightenment.org/ et

      http://fr.enlightenment.org/

    • [3] Lecteur DVD en 17 lignes de C :

      http://www.supinfo-projects.com/fr/2005/presentation%5Fefl/1/

    • [4] The Gimp :

      http://www.gimp-fr.org/news.php

    • [5] Xine :

      http://xinehq.de/

    • [6] Gstreamer :

      http://gstreamer.freedesktop.org/

    • [7] Bump Mapping :
    • tp://en.wikipedia.org/wiki/Bump_mapping
    • [8] Vidéo de chargement de E :

      http://www.rasterman.com/files/e17_movie-00.avi

    • [9] Document de norme du format .desktop :

      http://www.freedesktop.org/wiki/Standards_2fdesktop_2dentry_2dspec

    • [10] Page générale de thèmes :

      http://www1.get-e.org/Themes/E17/

    • [11] Thème Winter :

      http://www.rephorm.com/news/tag/winter

    • [12] Exemple fourni dans cet article :

      http://www.drylm.org/e17/examples/ewl1.tar.gz

    • [13] Interface de programmation :

      http://fr.wikipedia.org/wiki/Interface_de_programmation

    • [14] Channels IRC :
      #e.fr@irc.freenode.net et
      #e@irc.freenode.net
    • [15] Thèmes Gtk :

      http://www.gnome-look.org/

    Retrouvez cet article dans : Linux Magazine 89

    Posté par (La rédaction) | Signature : Jonathan Muller, Jean-Christophe Lauffer | Article paru dans

    Laissez une réponse

    Vous devez avoir ouvert une session pour écrire un commentaire.