HOWTO Enlightenment DR17

Un article de Gentoo Linux Wiki.

Cet article fait partie des HOWTOs.
Méthodes d'installation CD Live Noyau et matériel Portables et Notebooks Portage Système Réseaux et Services Serveur X Logiciels fréquemment utilisés Autres


Sommaire

[modifier] Introduction

Enlightenment 17 (E17) est un gestionnaire de fenêtres de nouvelle génération basé sur les "Enlightenment Foundation Libraries". Il va combiner les fonctionnalités d'un gestionnaire de fenêtres et celles d'un gestionnaire de fichiers, mais il ne sera pas un environnement de bureau complet. C'est ce que l'équipe de développement d'E17 appelle un "desktop shell".

Emerger des versions CVS de logiciels est une chose dangereuse. Ne vous plaignez pas si votre système est cassé, vous êtes prévenus ;).

Enlightenment se trouve maintenant dans le layout du même nom. Vous devez installer layman puis ajouter enlightenment pour continuer.

[modifier] Installation

[modifier] Préliminaire

Les ebuilds CVS (-9999) sont masqués '-*'. Pour les démasquer, ajouter ces lignes à votre /etc/portage/package.keywords

Fichier : /etc/portage/package.keywords
x11-wm/enlightenment -*
x11-libs/ewl -*
x11-libs/evas -*
x11-libs/ecore -*
x11-libs/esmart -*
x11-libs/etk -*
x11-misc/engage -*
x11-misc/iconbar -*
x11-misc/entrance -*
x11-plugins/e_modules -* 
media-libs/imlib2 -*
media-libs/etox -*
media-libs/edje -*
media-libs/epsilon -*
media-libs/epeg -*
media-libs/emotion -*
dev-libs/eet -*
dev-libs/embryo -*
dev-libs/engrave -*
dev-libs/exml -* 
dev-db/edb -*
dev-util/e_utils -*
net-news/erss -*
app-misc/examine -*
app-misc/evidence -*
media-gfx/elicit -*
media-gfx/entice -*
media-gfx/exhibit -*
media-video/eclair -*

[modifier] Compilation

Maintenant, commençons l'emerge d'Enlightenment DR17.

emerge -va dev-db/edb imlib2 enlightenment

Après s'être assuré que toutes les versions montrent bien 9999 (CVS), tapez "yes" et appuyez sur Entrée pour continuer.

Comme le serveur de sourceforge.net est souvent surchargé et échoue, nous vous suggérons d'utiliser ce script de mise à jour ici même.

[modifier] Configuration du gestionnaire de connexion

[modifier] Configuration d'Entrance

Configuration du gestionnaire de connexion d'Enlightenment.

Premièrement, créez le fichier /etc/X11/Sessions/e17 qui contiendra ce qui suit :

Fichier : /etc/X11/Sessions/e17
#!/bin/sh
/usr/bin/enlightenment-0.17

Puis nous le rendons exécutable

chmod +x /etc/X11/Sessions/e17

Maintenant, nous devons signifier à Entrance notre nouvelle session Enlightenment-0.17 car la version actuelle d'entrance préfère travailler avec les chemins absolus des sessions.

ecore_config -c /etc/entrance_config.cfg -k /entrance/session/1/session -s /etc/X11/Sessions/e17

Après ça, entrance devrait fonctionner correctement.

Vous pouvez démarrer entrance en ouvrant un terminal et en nettoyant la variable DISPLAY :

unset DISPLAY

et enfin en démarrant le démon :

entranced

Pour mettre fin à la session d'entrance, retournez à votre session d'origine avec ctrl-alt-Fx et tuez le démon :

killall entranced

Si vous souhaitez entrance comme gestionnaire de connexion (à la place d'un login en console par exemple), vous pouvez le mettre par défaut dans votre fichier /etc/rc.conf

Fichier : /etc/rc.conf
 # What display manager do you use ?  [ xdm | gdm | kdm | entrance ]
 DISPLAYMANAGER="entrance"
 XSESSION="e17"

Pour qu'entrance se lance automatiquement au boot vous devez ajouter XDM au runlevel "default" ("XDM" est simplement le nom d'un script car il vient du gestionnaire par défaut appelé XDM, mais il utilise la variable DISPLAYMANAGER pour lancer le gestionnaire de votre choix) :

rc-update add xdm default

Par défaut, entrance est configuré pour lancer Gnome, KDE ou E17, donc, si vous souhaitez utiliser un autre gestionnaire de fenêtres comme Blackbox ou XFce, utilisez ce script :

/usr/share/entrance/build_config.sh

[modifier] Configuration de kdm

Si vous utilisez le KDE display manager (kdm), il vous faut créer un fichier .desktop pour signifier votre nouvelle installation d'Enlightenment DR17 à kdm. Vous devez d'abord trouver le répertoire où kde cherche ses fichiers .desktop. Ce répertoire est souvent un de ceux-là :

  • /usr/share/xsessions
  • /usr/share/apps/kde/sessions
  • /usr/local/share/apps/kdm/sessions
  • /usr/kde/3.3/share/apps/kdm/sessions

Si vous savez quel kdmrc vous utilisez (souvent /usr/kde/3.?/share/config/kdm/kdmrc), la valeur de SessionsDirs vous dira exactement où kdm cherche ces fichiers.

Maintenant, créons le fichier e17.desktop

Fichier : e17.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Enlightenment-17
Comment=Log in using Enlightenment
Type=XSession
Exec=/usr/bin/enlightenment-0.17
TryExec=/usr/bin/enlightenment-0.17

Redémarrer kdm et logguez-vous dans votre nouveau bureau Enlightenment 17. Si E17 n'est pas listé dans kdm, vérifiez les chemins que vous avez dans le fichier e17.desktop et redémarrez.

[modifier] Configuration de gdm

Si vous utilisez le GNOME Display Manager (gdm), vous devez créer un fichier .desktop pour signifier votre nouvelle installation d'Enlightenment DR17 à gdm. Cherchez le répertoire de Sessions utilisé par gdm, ce répertoire est souvent un de ceux-là :

  • /etc/X11/dm/Sessions
  • /usr/share/xsessions
  • /usr/X11R6/share/gnome/xsessions

Créons maintenant le fichier e17.desktop

Fichier : e17.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Enlightenment-17
Comment=Log in using Enlightenment
Type=XSession
Exec=/usr/bin/enlightenment-0.17
TryExec=/usr/bin/enlightenment-0.17

Redémarrez gdm et connectez-vous à votre nouveau bureau Enlightenment 17. Si Enlightenment-0.17 n'est pas listé dans gdm, vérifiez les chemins que vous avez dans le fichier e17.desktop, redémarrez gdm et amusez-vous :)

[modifier] Mise à jour

[modifier] E17

Pour faciliter la compilation de tous les paquets e17 avec le dernier CVS, vous pouvez utiliser ce script. Sauvegardez-le tout simplement sous e17update.sh et vous pouvez l'exécuter chaque fois que vous voulez mettre à jour. Ce script emerge tous les paquets jusqu'à ce que tous les paquets soient emergés avec succès.

S'il vous plaît ne mettez pas à jour E17 tous les jours, ceci surcharge les serveurs de sourceforge.net, une mise à jour par semaine suffit pour être à jour.


Fichier : e17update.sh
#!/bin/sh
Ebuilds="eet dev-db/edb evas ecore embryo imlib2 edje e etk epeg \
media-libs/epsilon esmart entrance emotion eclair ewl engrave \
e_utils e_modules etox erss entice engage evidence exhibit"
if [ "$1" == "debug" ]; then
      DEBUG="USE=\"$USE debug\" FEATURES=\"$FEATURES nostrip\""
fi
set $Ebuilds
while [ $# != 0 ]; do
      while !($DEBUG emerge $1); do
              echo ""
              echo "emerge $1 failed! Trying again in 10 seconds..."
              echo "still "$#" packages left..."
              echo ""
              sleep 10
      done
      shift
done
echo ""
echo "All done!"
exit 0

Si désiré, voici un autre script qui peut vous aider à emerger e17. Ce script vous permet d'emerger les EFL, le gestionnaire e17, quelques applications supplémentaires, ou bien le tout.

Fichier : e17.build.sh
#
# EFL - LIST OF LIBRARIES - DATE 02/22/2006
# ==============================================
# [source] http://www1.get-e.org/EFL_User_Guide/English/_pages/2.1.html [02/22/2006]
#
# 1. e17/libs/eet
# 2. e17/libs/edb
# 3. e17/libs/evas
# 4. e17/libs/ecore
# 5. e17/libs/embryo
# 6. e17/libs/imlib2
# 7. e17/libs/edje
# 8. e17/libs/epeg
# 9. e17/libs/epsilon
# 10. e17/libs/esmart
# 11. e17/libs/emotion (note that you'll need to have xine-lib installed as emotion uses it)
# 12. e17/libs/engrave (this is currently needed for e_utils only)
# 13. e17/libs/ewl (this is needed for some apps only)
# 14. e17/libs/etox
# 15. e17/proto/etk (this is needed for some apps only)
#
# in gentoo: (put to your /etc/portage/package.keywords)
# dev-libs/eet -*
# dev-db/edb -*
# x11-libs/evas -*
# x11-libs/ecore -*
# dev-libs/embryo -*
# media-libs/edje -*
# media-libs/epeg -*
# media-libs/epsilon -*
# x11-libs/esmart -*
# media-libs/emotion -*
# media-libs/gstreamer ~x86
# dev-libs/engrave -*
# x11-libs/ewl -*
# media-libs/etox -*
# x11-libs/etk -*
#

EFL_PKGS="dev-libs/eet dev-db/edb x11-libs/evas x11-libs/ecore dev-libs/embryo media-libs/edje media-libs/epeg media-libs/epsilon x11-libs/esmart media-libs/emotion media-libs/gstreamer dev-libs/engrave x11-libs/ewl media-libs/etox x11-libs/etk"

#
# E17 PACKAGES - DATE 02/22/2006
# =============================================
# [source] http://www1.get-e.org/EFL_User_Guide/English/_pages/2.1.html [02/22/2006]
#
# e17/apps/e
#
# in gentoo: (put to your /etc/portage/package.keywords)
# x11-wm/e -*
# x11-misc/e17genmenu -*
# x11-plugins/e_modules -*
#

E17_PKGS="x11-wm/e x11-misc/e17genmenu x11-plugins/e_modules"

#
# E17 APPLICATIONS - DATE 02/22/2006
# =============================================
# [source] http://www1.get-e.org/EFL_User_Guide/English/_pages/2.1.html [02/22/2006]
#
# e17/apps/entice (image viewer)
# e17/apps/entrance (login manager)
# e17/apps/eclair (media player)
# misc/engage (standalone dockbar and E17 module)
# misc/erss (RSS feed application that does not work correctly in E17)
# e17/apps/elicit (color picker/screen magnifier)
# misc/embrace (mail checker and E17 module)
# e17/proto/entropy (file manager)
# e17/proto/exhibit (image viwer)
#
# in gentoo:
# media-gfx/entice -*
# x11-misc/entrance -*
# media-video/eclair -*
# x11-misc/engage -*
# app-misc/examine -*
# net-news/erss -*
# media-gfx/elicit -*
# mail-client/embrace-9999 -*
# app-misc/entropy -*
# sys-fs/evfs -*
# media-gfx/exhibit -*
#
E17_APP_PKGS="media-gfx/entice media-video/eclair media-gfx/elicit =mail-client/embrace-9999 app-misc/entropy media-gfx/exhibit"

#
# INTERNAL VARIABLES USED BY THIS SCRIPT
#

# ask user for interaction:
#   'ask'      --> ask user on error
#   'yes'      --> just do it (continue on error)
#   'no'       --> don't do it (exit on error)
#   'askall'   --> ask to merge package
DUDE_SAYS="ask"

# which packages to build
#   'all' --> build efl,e and e-apps
#   'efl' --> build efl
#   'e'   --> buile e-wm
#   'eap' --> build e apps
#
PKGS="all"

# use mirror thinktux.net
#   0 --> no
#   1 --> yes
#
USEMIRROR=0

# saves all packages to build in order!
#
TOBUILD=""


function buildPkgs() {
   for next in $TOBUILD ; do
      MERGEIT=1
      if [ $DUDE_SAYS = "askall" ] ; then

         DUDE_ANSWERS="Z"
         while [ "x$DUDE_ANSWERS" != "xn" -a "x$DUDE_ANSWERS" != "xy" ] ; do
            echo -e "\nDo you want to merge $next ? [y/n]"
            read -n 1 DUDE_ANSWERS
         done

         if [ "x$DUDE_ANSWERS" = "xn" ] ; then
            MERGEIT=0;
         fi
      fi

      if [ $MERGEIT -eq 1 ] ; then
         emerge $next

         ERES=$?
         echo "emerge exit code $ERES"

         if [ $ERES -ne 0 ] ; then
            if [ $ERES -eq 127 -o $ERES -eq 102 ] ; then
               echo "USER ABORT"
               exit $ERES;
            fi

            MERGEIT=0
            if [ "x$DUDE_SAYS" = "xask" -o "x$DUDE_SAYS" = "xaskall" ] ; then

               DUDE_ANSWERS="Z"
               while [ "x$DUDE_ANSWERS" != "xn" -a "x$DUDE_ANSWERS" != "xy" ] ; do
                  echo -e "\nError merging $next! Continue ? [y/n]\n"
                  read -n 1 DUDE_ANSWERS
               done

               if [ "x$DUDE_ANSWERS" = "xy" ] ; then
                  MERGEIT=1
               fi

            elif [ "x$DUDE_SAYS" = "xyes" ] ; then
               MERGEIT=1
            fi

            if [ $MERGEIT -eq 0 ] ; then
               exit $ERES
            fi
         fi
      fi
   done
}

function parseArgs() {
   while getopts a:p:m: p ; do
      case $p in
         a) [ "x$OPTARG" = "xask" -o "x$OPTARG" = "xaskall" -o "x$OPTARG" = "xyes" -o "x$OPTARG" = "xno" ] && DUDE_SAYS=$OPTARG;;
         p) [ "x$OPTARG" = "xall" -o "x$OPTARG" = "xefl" -o "x$OPTARG" = "xe" -o "x$OPTARG" = "xeap" ] && PKGS=$OPTARG;;
         m) [ "x$OPTARG" = "x0" -o "x$OPTARG" = "x1" ] && USEMIRROR=$OPTARG;;
         ?) usage
            exit 0;;
      esac
   done;

   if [ $USEMIRROR -eq 1 ] ; then
      export ECVS_SERVER="thinktux.net:/root"
   fi

   if [ "x$PKGS" = "xall" -o "x$PKGS" = "xefl" ] ; then
      TOBUILD=$EFL_PKGS
   fi

   if [ "x$PKGS" = "xall" -o "x$PKGS" = "xe" ] ; then
      TOBUILD=$TOBUILD" "$E17_PKGS
   fi

   if [ "x$PKGS" = "xall" -o "x$PKGS" = "xeap" ] ; then
      TOBUILD=$TOBUILD" "$E17_APP_PKGS
   fi

   echo $TOBUILD
}

function usage() {
   echo "** E17 INSTALL SCRIPT **"
   echo "USE THIS SCRIPT AT YOUR *OWN RISK*, I WON'T TAKE ANY RESPONSIBILITY"
   echo "FOR USABILITY OR CORRECTNESS OF THIS SCRIPT, NOR FOR ANY ERRORS CAUSED"
   echo "BY IT!"
   echo "USAGE:"
   echo "======"
   echo "  ${0##*/} [ options ]"
   echo
   echo " [ options ]"
   echo "  -a ask | askall | yes | no"
   echo "  -p all | efl | e | eap"
   echo "  -m yes | no"
   echo
   echo " -a option (ask):"
   echo "     ask     set this option to define that you are asked to"
   echo "             abort this script if an emerge error appears"
   echo "             (DEFAULT)"
   echo
   echo "     askall  set this option to define that you are asked"
   echo "             everytime before a package is emerged if you like"
   echo "             to merge it and if an emerge error appears if you"
   echo "             want to abort the script"
   echo
   echo "     yes     set this option to define to continue with the"
   echo "             next package if an emerge error appears"
   echo
   echo "     no      set this option to define to abort the script if"
   echo "             an emerge error appears"
   echo
   echo " -p option (package):"
   echo "     all     emerge efl,e,eap"
   echo "             (DEFAULT)"
   echo
   echo "     efl     emerge enlightenment foundation library packages"
   echo
   echo "     e       emerge e17 window manager"
   echo
   echo "     eap     emerge e17 extra applications"
   echo
   echo " -m option (mirror)"
   echo "     0       do not use cvs mirror thinktux.net"
   echo "             (DEFAULT)"
   echo
   echo "     1       use cvs mirror thinktux.net"
   echo
}

parseArgs $*
buildPkgs

[modifier] Sauvegarde des raccourcis clavier

De temps à autres, des fichiers de configuration d'E17 sont effacés car le "format des fichiers a changé". Une des choses les plus ennuyeuses pour revenir à un E17 utilisable est de remettre les raccourcis-clavier, plus particulièrement si vous utilisez des raccourcis différents des originaux (comme je le fais, note du rédacteur original). Quoi de mieux que d'écrire un script de sauvegarde ? Le script suivant le fait :

  • Pour supprimer tous les raccourcis :
e17-keybinding-helper.sh del
  • Pour ajouter des raccourcis d'un fichier de sauvegarde :
e17-keybinding-helper.sh add keybinding-backups.txt
  • Le fichier doit avoir la même forme que la sortie de "enlightenment_remote -binding-key-list", donc pour créer un fichier de sauvegarde, tapez simplement :
 enlightenment_remote -binding-key-list > keybinding-backups.txt


Afin de conserver vos raccourcis d'E17, une seule chose à faire :

Code : Backup your key-bindings
enlightenment_remote -binding-key-list > keybinding-backups.txt
emerge e # et toutes les autres bibliothèques etc...

Maintenant la configuration est nettoyée et les raccourcis par défaut sont remis

e17-keybinding-helper.sh del
e17-keybinding-helper.sh add keybinding-backups.txt


Et voici le script :

Fichier : e17-keybinding-helper.sh
#!/bin/bash
#Purpose: either deletes all keybindings from e17 or adds all keybindings from a given file. 
#This file must have the same format as the output of enlightenment_remote -binding-key-list
counter=0

case $1 in
        add)
                if [[ -r "$2" ]]; then
                        command=$(echo cat $2)
                else
                        echo "$0: File not found or missing, exiting."
                        exit
                fi
        ;;
        del)
                command="enlightenment_remote -binding-key-list"
        ;;
        help)
                echo "This is a little helper-script for e17."
                echo -ne "If the first argument is \"del\", it automatically deletes all e17 key-bindings.\n"
                echo -ne "If the first argument is \"add\", the second argument must be a file that has\n"
                echo -ne "the same format as the output of \"enlightenment_remote -binding-key-list\" and\n"                                                                              
                echo -ne "this script will automatically add all keybindings listed there.\n"
                exit
        ;;
        *)
                echo -ne "$0: Wrong parameter. Try \"help\" for details.\n"
                exit
esac

for i in $(eval $command); do
        # filters out meta-statements
        if [[ "$i" == "REPLY" || "$i" == "<=" || "$i" == "BEGIN" || "$i" == "REPLY:" || "$i" == "BINDING" || "$i" == "<-" || "$i" == "END" ]]; then
                continue
        fi

        LINE=$(expr match "$i" '\(.*\)')
        echo $LINE | grep ^[^\"]*\"$ &> /dev/null
        if [ "$?" == "0" ]; then # $LINE should belong to the former!
                case ${LAST_OPT} in
                        CONTEXT)
                                CONTEXT="$CONTEXT $LINE"
                        ;;
                        KEY)
                                KEY="$KEY $LINE"
                        ;;
                        MODIFIERS)
                                MODIFIERS="$MODIFIERS $LINE"
                        ;;
                        ANY_MOD)
                                ANYMOD="$ANY_MOD $LINE"
                        ;;
                        ACTION)
                                ACTION="$ACTION $LINE"
                        ;;
                        PARAMS)
                                PARAMS="$PARAMS $LINE"
#                        PARAMS)
#                                PARAMS="$PARAMS $LINE"
                        ;;
                esac
        fi

        case $(expr match "$i" '\([^=]*\)') in
                CONTEXT)
                        CONTEXT=$(expr match "$i" '.*=\(.*\)')
                        LAST_OPT=CONTEXT
                        LAST_VALUE=$CONTEXT
                ;;
                KEY)
                        KEY=$(expr match "$i" '.*=\(.*\)')
                        LAST_OPT=KEY
                        LAST_VALUE=$KEY
                ;;
                MODIFIERS)
                        # THIS assumes, that modifiers never contain spaces. As soon as this happens, this script will stop working
                        MODIFIERS=$(echo -ne "\"$(expr match "$i" '.*=\(.*\)')\"")
                        LAST_OPT=MODIFIERS
                        LAST_VALUE=$MODIFIERS
                ;;
                ANY_MOD)
                        ANY_MOD=$(expr match "$i" '.*=\(.*\)')
                        LAST_OPT=ANY_MOD
                        LAST_VALUE=$ANY_MOD
                ;;
                ACTION)
                        ACTION=$(expr match "$i" '.*=\(.*\)')
                        LAST_OPT=ACTION
                        LAST_VALUE=$ACTION
                ;;
                PARAMS)
                        PARAMS=$(expr match "$i" '.*=\(.*\)$')
                        LAST_OPT=PARAMS
                        LAST_VALUE=$PARAMS
                ;;
                *)
                ;;
        esac

        echo $LINE | grep \".*[^\"]$ &> /dev/null
        if [ "$?" == "0" ]; then
                continue
        fi

        counter=$(($counter+1))

        # before this, we need to have every variable straight!
        if [[ $counter -eq "6" ]]; then
                echo "$CONTEXT $KEY $MODIFIERS $ANY_MOD $ACTION $PARAMS"

                eval "enlightenment_remote -binding-key-$1 $CONTEXT $KEY $MODIFIERS $ANY_MOD $ACTION $PARAMS"
                CONTEXT=""
                KEY=""
                MODIFIERS=""
                ANY_MOD=""
                ACTION=""
                PARAMS=""
                LAST_OPT=""
                LAST_VALUE=""
                counter=0
        fi
done

Note du contributeur original : je n'ai testé ce script que sur deux machines. Il pourrait ne pas fonctionner sur la vôtre. Il se pourrait que vous n'ayez plus de raccourcis après ça. La syntaxe ou la sortie d'enlightenment_remote peut changer à tous moments. J'ai pu oublier quelques particularités qui n'ont aucune incidence sur ma machine.

[modifier] Applications GTK+

Si vous utilisez des applications GTK+ avec E17, vous avez probablement trouvé leur look bizarre, comme les polices ou les icones non affichées correctement dans Nautilus. Pour régler ça, il vous faut lancer gnome-settings-daemon au démarrage.

Si vous n'avez pas gnome-settings-daemon, vous devez emerger control-center.

# emerge -v control-center

Après ça, vous avez "gnome-settings-daemon" que vous pouvez lancer au démarrage d'E17. Pour se faire, nous créons un fichier eap :

$ cd .e/e/applications/all
$ e_util_eapp_edit gnome-settings-daemon.eap

Maintenant, mettons "gnome-settings-daemon" dans "App Name" et "Executable" :

  • App Name: gnome-settings-daemon
  • Executable: /usr/libexec/gnome-settings-daemon

Enregistrez-le et ajoutez le fichier eap dans les applications de démarrage en le mettant dans le fichier .order du répertoire /startup :

$ echo "gnome-settings-daemon.eap" >> ~/.e/e/applications/startup/.order

Ceci fait, vous pouvez maintenant vous déconnecter d'E17 et y revenir pour apprécier les changements.

Alternative : si vous n'utilisez pas GNOME, que vous ne voulez pas être ennuyé avec ceci, et n'avez rien d'autres qui ait besoin d'être pris en charge par cette application, ajoutez simplement : gtk-theme-name = "Theme Name" à votre fichier ~/.gtkrc-2.0, par exemple :

gtk-theme-name = "Industrial"

Il se peut que vous ayez à créer ce fichier. Une ligne semblable peut être ajoutée au fichier .gtkrc pour changer le thème pour les applications GTK+ (1.x).

Une autre chose intéressante à faire, c'est :

emerge gtk-engines gtk-chtheme

Puis lancez gtk-chtheme pour changer de thèmes.

[modifier] Liens

Traduit de l'article sur le Wiki anglais.