URL: https://linuxfr.org/news/awesome-3-5 Title: Awesome 3.5 Authors: chimrod vlamy, detail_pratique, Nÿco, fravashyo, Benoît Sibaud, Anonyme et barmic Date: 2012年12月14日T21:41:46+01:00 License: CC By-SA Tags: awesome, gestionnaire_de_fenêtres et windows Score: 42 Plus de trois ans après la version précédente, voici awesome 3.5. Il s'agit d'un gestionnaire de fenêtres léger, scriptable, et disposant d'une présentation des fenêtres configurable. Il permet notamment de faire cohabiter des dispositions de fenêtres de type _pavant_, _flottant_ ou encore _plein écran_. Il est scriptable et adaptable à souhait par l'utilisateur, au point qu'il est présenté par ses pères comme une plate-forme permettant de construire son propre gestionnaire de fenêtres, plutôt qu'en tant que gestionnaire de fenêtres « classique ». Cette approche permet de répondre à de multiples usages, au prix d'une plongée dans le fichier de paramétrage et la programmation en lua. ---- [Site officiel](http://awesome.naquadah.org/) [Guide de migration de la version 3.4 vers la 3.5](http://awesome.naquadah.org/wiki/Awesome_3.4_to_3.5) [L'annonce de la RC1](http://permalink.gmane.org/gmane.comp.window-managers.awesome/9581) [Annonce de la version 3 sur DLFP par Julien Danjou](https://linuxfr.org/news/awesome-3-premier-gestionnaire-de-fen%C3%AAtres-bas%C3%A9-sur-xcb) [Annonce officielle](http://article.gmane.org/gmane.comp.window-managers.awesome.devel/7772) ---- # L'esprit awesome # Awesome a su se faire une place sur le bureau (en plus d'être dans l'interface du [Kindle Touch](http://linuxfr.org/users/chimrod/journaux/awesome-chez-amazon) d'Amazon), et l'on peut désormais sentir sa touche dans d'autres applications. Nous proposons ici quelque chose d'assez subjectif : on peut caractériser awesome, entre autres, par une approche orientée clavier, par l'utilisation d'étiquettes et par la présence d'outils visant à faciliter la personnalisation du gestionnaire de fenêtres. ## Tout au clavier (ou pas) ## Le but d'awesome est de proposer un gestionnaire de fenêtres complètement pilotable au clavier, tout en laissant la possibilité d'une utilisation centrale de la souris (par exemple pour le déplacement et le rédimensionnement des fenêtres en mode flottant). Contrairement à d'autres gestionnaires de fenêtres orientés clavier, l'ensemble des raccourcis est centralisé par défaut autour d'une même et unique touche : la touche Super_L (Mod4). Assez peu utilisée dans les applications, elle permet de mettre en place des raccourcis clavier qui s'intègrent facilement dans les configurations existantes et qui restent cohérents sur l'ensemble d'awesome. La configuration des raccourcis clavier peut être facilement modifiée via l'édition du fichier de configuration (rc.lua), de même que la variable `meta`, qui définit la touche principale. ## Les étiquettes ## Un système d'étiquettes (tags), utilisé dans d'autres gestionnaires de fenêtres de type pavant, est préféré au concept de bureau virtuel. Les étiquettes permettent de répartir les applications (clients) par groupes, auxquels on applique un type de mise en page (pavant, flottant, plein écran). Un client peut être déplacé d'une étiquette à l'autre ou même affiché sur plusieurs étiquettes. On peut également afficher à l'écran une combinaison du contenu de plusieurs étiquettes (c.-à-d. des clients associés à ces étiquettes). Cela rend awesome facilement utilisable dans les configurations multi-écrans : il est possible d'associer un client à une étiquette dans la configuration, et laisser awesome gérer le placement des clients sur les écrans. ## Un esprit « Tune It Yourself » ## Il est vrai que la configuration par défaut d'awesome est assez minimaliste (peu ou pas de widgets, des étiquettes non personnalisés, un menu standard, etc.). Mais tout est fait pour faciliter la personnalisation au plus haut degré (un vrai terrain de jeu pour les bidouilleurs de l'extrême et autres accrocs de la personnalisation). On citera quelques points : * **les scripts en Lua**, qui permettent d'étendre soi-même le comportement du gestionnaire de fenêtres via [l'API Lua d'awesome](http://awesome.naquadah.org/doc/api/). En bref, cette API permet de définir une surcouche au gestionnaire de fenêtres de base, en manipulant directement le comportement des clients, des étiquettes, des barres d'informations, des menus et des « _keygrabbers_ » qui permettent de réaliser des menus contextuels et plein de choses encore ; * **les widgets**, qui, en tant qu'éléments de personnalisation, sont à configurer par l'utilisateur. On peut les créer soi-même ou utiliser des bibliothèques de widgets, telles que [Vicious](http://awesome.naquadah.org/wiki/Vicious) ou [Blingbling](http://awesome.naquadah.org/wiki/Blingbling) ; * **l'outil awesome-client**, qui n'est autre qu'un simple client dbus, fourni sous la forme d'un binaire. Il constitue un outil classique, mais puissant, qui permet d'appeler du code lua — par exemple une fonction utilisateur définie dans le fichier de configuration _rc.lua_ — depuis un processus extérieur au gestionnaire de fenêtres. Cela permet d'intégrer des routines du patrimoine logiciel ou encore des scripts écrits dans nos langages préférés pour compiler des informations, puis les fournir aux widgets d'awesome pour affichage (mises à jour du gestionnaire de paquets, état de la batterie, ou toute autre information « _conky-like_ », notifications, etc.). Depuis sa création, de nombreux scripts ont été écrits pour ajouter des notifications vers des applications ([mpd](http://awesome.naquadah.org/wiki/MPD_Widgets), mail) ou ajouter des fonctionnalités ([météo](http://awesome.naquadah.org/wiki/Weather), calendrier), voir même modifier la gestion des `tags` pour faciliter l'ergonomie ([shifty](http://awesome.naquadah.org/wiki/Shifty)). # Sous le capot # * utilisation de la bibliothèque asynchrone [XCB](http://xcb.freedesktop.org/), ce qui est censée rendre le gestionnaire de fenêtres plus réactif ; * implémentation de plusieurs standards Freedesktop : [EWMH](http://standards.freedesktop.org/wm-spec/wm-spec-latest.html), [XDG Base Directory](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html), [XEmbed](http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html), [Desktop Notification](http://www.galago-project.org/specs/notification/), [System Tray](http://standards.freedesktop.org/systemtray-spec/systemtray-spec-latest.html) ; * support du multi-écrans (XRandR, Xinerama or Zaphod mode) ; * support Dbus (client binaire fourni) ; * un système d'extensions en Lua, bien documenté. Et bien d'autres choses. # Nouveautés de la version 3.5 # Voici la liste des nouveautés dans cette nouvelle version. Les citations sont issues des annonces officielles de la mailing-list. ## Compatible Lua 5.2 ## Awesome est désormais scripté avec Lua 5.2. Cela entraîne un changement dans le paramétrage puisque la syntaxe du langage a évolué, et que certains scripts ne seront plus compatibles. Pour l'instant, il est toujours possible de compiler awesome avec Lua 5.1, mais ceux qui veulent passer à Lua 5.2 peuvent déjà le faire.> Nous avons réalisé quelques modifications pour permettre à awesome d'anticiper les évolutions. Avec Lua 5.2, module() est obsolète. Awesome n'utilise plus cette fonction. Toutefois, cela a des impacts visibles par l'utilisateur : il est maintenant nécessaire d'expliciter l'assignation de module à des variables globales : ```lua local awful = require("awful") ``` ## Réécriture des décorations de fenêtre ## Un point discuté fut celui des décorations de fenêtres. Actuellement, il est possible de choisir si la barre de titre est affichée ou non (par exemple, ne l'afficher que pour les fenêtres flottantes, ou sur une étiquette particulière...). Par contre, il n'est pas possible de choisir de quoi sera composé cette barre de titre. La barre de titre a bénéficié de la réécriture des widgets, et est maintenant paramétrable. Il est possible de choisir les composants affichés, et de créer ses propres composants.> Au lieu de forcer le type des barres de titres disponibles pour l'utilisateur, celles-ci sont désormais configurables à la manière des wiboxes. ## Nouveau système de widget ## Conséquence des points précédents, il a fallu réécrire les widgets. On annonce la couleur directement :> Tout le monde va me maudire pour avoir à nouveau remplacé le système de widget, mais le résultat me plait. En conséquence, tout fonctionne désormais différemment. ## Mise à jour des dépendances ## Le monde évolue, les bibliothèques aussi. [GObject](http://fr.wikipedia.org/wiki/GObject "Définition Wikipédia") fait son apparition dans awesome à travers la bibliothèque [lgi](https://github.com/pavouk/lgi) (Lua GObject Introspection). La bibliothèque actuellement utilisée pour cairo, pango, et PangoCairo. Toutefois, il ne s'agit pas d'une bibliothèque nécessaire pour la compilation. À noter que la bibliothèque de widgets [vicious](http://awesome.naquadah.org/wiki/Vicious), est déjà compatible avec Lua 5.2 et que la branche _master_ de [blingbling](http://awesome.naquadah.org/wiki/Blingbling) (la petite nouvelle), basée sur oocairo, est également compatible avec la version 3.5 d'awesome. # En bref, pour la migration 3.4 vers 3.5 (configuration utilisateur)# Je propose de lister en bref les changements au sein du fichier de configuration (rc.lua), qui vous attendent probablement si vous envisagez une migration d'awesome 3.4 vers 3.5 : ## Import des modules Lua 5.2 ## Pour ceux qui utiliseront awesome avec Lua 5.2 (la façon d'importer des modules Lua ayant changé), il faudra ajouter des variables pour pouvoir accéder aux modules awesome. Par exemple, pour utiliser _naughty_ : ```lua local naughty = require("naughty") ``` Et ceci est à faire pour chaque module (ça peut être un poil long, surtout pour les gros malins, qui comme moi (vlamy), ont éclaté le fichier de conf.) ## Changements API Widgets ## Comme annoncé plus haut, les widgets ont été totalement repensés. Ceci implique malheureusement une ré-écriture de chaque widget (création, assignement de texte et autres champs). Toutes les bibliothèques de widgets développées avant la version 3.5 et non mises à jour sont donc obsolètes :( Heureusement, il existe un très bon [tutoriel pour écrire des widgets compatibles avec la version 3.5] (http://awesome.naquadah.org/wiki/Writing_own_widgets) (en anglais). ## Changements API mineurs ## Les points suivants sont principalement constitués de simples modifications syntaxiques : * retouche API signaux ; * retouche API menu ; * retouche API tasklist. ## Et ma config ? ## Va-t-il falloir réécrire sa configuration ? La réponse est donnée dans l'annonce officielle :> Il est manifestement impossible que votre configuration ne soit pas cassée. Vous êtes prévenus !

AltStyle によって変換されたページ (->オリジナル) /