Nouveautés pour les développeurs, les administrateurs système et les distributeurs

GNOME 3.12 propose de nombreuses nouvelles fonctionnalités et améliorations pour ceux qui travaillent avec les technologies GNOME.

Nouveaux composants graphiques GTK+

La boîte à outils GTK+ a trois nouveaux composants graphiques pour 3.12 :

  • GtkActionBar : un nouveau conteneur, avec un enfant centré comme pour GtkHeaderBar. L'usage indiqué est le bas des widgets pour la présentation d'actions pour le contenu sélectionné.

  • GtkPopover : un nouveau widget qui peut être utilisé pour les vues transitoires, comme alternative aux menus ou boîtes de dialogues.

  • GtkFlowBox : un conteneur grille qui réagence ses enfants, qui peuvent être orientés horizontalement ou verticalement.

API de notifications intégrée

GNOME 3.12 propose une nouvelle interface de programmation pour les notifications. GNotification est incluse dans GIO et remplace libnotify, évitant aux développeurs de se lier à cette dernière. (GNotification peut utiliser l'interface D-Bus org.freedesktop.Notifications comme solution de repli.)

La nouvelle API s'intègre bien avec GTK+, et fonctionne conjointement à GApplication et GAction. Elle fournit de nombreuses fonctionnalités de libnotify plus quelques autres inédites, comme la capacité pour les notifications de persister après qu'une application a quitté. Elle permet également de redémarrer une application quand une notification est activée par l'utilisateur.

Vous trouverez plus de détails sur l'utilisation de GNotification sur le tutoriel GNotification.

Nouvelle API de lancement de processus

Une nouvelle et puissante API de lancement de processus, appelée GSubprocess, est incluse en 3.12. Cette API permet à l'outil en ligne de commande gapplication d'être utilisé pour lancer des applications. Les applications peuvent être commandées pour ouvrir des fichiers ou déclencher des actions à leur lancement. Il est également possible de lister les applications et actions disponibles, et l'outil en ligne de commande est fourni avec le complètement bash.

GApplication gère à présent la ligne de commande, avec l'option bien pratique --gapplication-service.

Documentation pour développeurs améliorée

3.12 inclut un tas d'améliorations à la documentation de référence de GTK+. La documentation a été restructurée pour proposer un ordre de lecture plus logique. Les sections de résumé on été nettoyées pour faciliter la lecture et les photos des widgets ont été mises à jour.

La mise en forme de la documentation a été également améliorée dans d'autres bibliothèques. GTK+, GLib, GDK-Pixbuf et Clutter ont été convertis en Markdown. Le résultat est une apparence moins brouillon et une maintenance facilitée dans le source.

Enfin, des améliorations de mise en forme ont été apportées dans toute la documentation, ce qui la rend plus agréable et facile à lire.

Wayland disponible pour test

La gestion complète de Wayland a fait d'énorme progrès en 3.12. Cela comprend la création d'une bibliothèque libinput ainsi que de nouvelles fonctionnalités pour la gestion de l'identification et de la session. Les développeurs intéressés par Wayland, ou qui souhaitent tester leur logiciel en environnement Wayland peuvent essayer les touts derniers développements.

Pour lancer gnome-shell sous Wayland, exécutez la commande suivante dans un terminal :

gnome-session --session=gnome-wayland

Il est également possible de lancer des application sur Wayland individuellement en spécifiant le moteur GDK_BACKEND. Lancez la commande suivante, en remplaçant application-name par le nom de l'exécutable de l'application :

GDK_BACKEND=wayland application-name

Si une application ne se lance pas sous Wayland, elle essayera de se lancer sous X11.

De plus amples détails à propos de GNOME sur Wayland se trouvent sur la page wiki GNOME sur Wayland.

Mises à jour de Tracker

Le moteur de recherche, et système d'indexation de métadonnées Tracker propose une longue liste d'améliorations en 3.12 :

  • Une nouvelle bibliothèque, libmediaart, a été extraite du code Tracker pour gérer les visuels associées aux fichiers multimédias. libmediaart gère un cache des visuels stockés dans les fichiers multimédia, et fournit un moyen unifié de rechercher un visuel et de réduire les tailles de cache pour les artistes, les albums et les éléments multimédias. (libmediaart n'a pas pour but de générer des vignettes.)

  • Une autre nouvelle bibliothèque, libtracker-control, gère les mineurs de recherche.

  • La nouvelle fonctionnalité d'extraction passive permet l'extraction des métadonnées spécifiées (l'orientation d'une image par exemple) à la modification des ressources, via l'écoute des signaux. Auparavant, l'insertion des informations d'une ressource se faisait en une seule passe. Cette fonctionnalité implique que les données d'un fichier (nom, taille, etc.) sont insérées même si les métadonnées ne le sont pas encore.

  • La types RDF peuvent à présent être priorisés à l'indexation : cela permet d'adapter l'indexation à des situations spécifiques.

  • Les fonctions SPARQL tracker:normalize() et tracker:unaccent() sont à présent gérées.

  • La nouvelle commande tracker-sparql --tree affichera l'ontologie de la base de données. Cela aidera les développeurs à avoir une vue d'ensemble claire de de la hiérarchie de classes.

  • La détection d'encodage est à présent assurée, grâce à ICU.

  • Le signal GraphUpdated du stock Tracker est à présent configurable. Ce signal est utilisé pour fournir des notifications concernant un changement dans les ressources en base de données (un ajout de fichier par exemple). Auparavant, il y avait toujours un délai d'une seconde.

Extensions pour Grilo en Lua

L'architecture Grilo de découverte de média permet à présent l'ajout de source de médias en ligne grâce à la simplicité et la puissance de la sélection par motif du langage Lua. Vous trouverez des détails et exemples sur le billet de blog de Bastien Nocera sur l'ajout de sources Grilo avec Lua.

Décorations côté client matures

Les décorations de fenêtres côté client permettent aux fenêtres d'applications de gérer des fonctionnalités traditionnellement assurées par le gestionnaire de fenêtres. Elles ont été inaugurées lors du précédent cycle, avec le widget GtkHeaderBar. Depuis, GtkHeaderBar s'est bonifié. Sa hauteur a été harmonisée, et les fenêtres peuvent être déplacées en cliquant-glissant la barre d'en-tête sur les matériels tactiles. Les barres d'en-tête peuvent également inclure des menus d'applications ainsi qu'une variété de contrôles de fenêtres, en plus du bouton de fermeture traditionnel.

Liaisons Python améliorées

Les liens Python de GNOME ont été améliorés pour 3.12 :

  • La chaînes de documentation Python affichent à présent la signature d'appel correcte des fonctions, y compris les types des arguments et des valeurs de retour.

  • Il y a désormais une valeur par défaut à None pour les arguments tête-queue.

  • Toutes les fonctions de connexion de fonctions de rappel acceptent désormais un nombre variable d'arguments utilisateur.

  • Les nouvelles démons présentent l'utilisation de CSS dans GTK+ depuis Python.

  • Il n'est plus nécessaire d'appeler GObject.threads_init dans les programmes utilisant des processus légers.

De plus, de nombreuses améliorations en termes de consommation mémoire et de performances ont fait leur apparition.

Portabilité améliorée

La portabilité sur différents systèmes d'exploitations inspirés d'UNIX a énormément été améliorée en 3.12. Plus de 150 bogues sous FreeBSD ont été rapportés et corrigés, et des produits de test sont exécutés régulièrement. Ce travail est en cours pour d'autres systèmes d'exploitation. Nous proposons désormais une politique de gestion des plate-formes pour la GLib.

Les détails de cette initiative se trouvent sur le billet de blog de Ryan Lortie sur la portabilité de la GLib et FreeBSD.

Autres améliorations

Dans les autres améliorations à destination des développeurs et administrateurs système apportées par la version 3.12, on trouve :

  • La plupart des conteneurs GTK+ dessinent à présent les arrière-plans.

  • Les menus basés sur des modèles peuvent à présent cacher des éléments respectant certaines conditions.

  • GtkBox gère maintenant un enfant centré, de la même manière que GtkHeaderBar.

  • Clutter prend en charge les affichages à haute densité HDPI, en partageant les mêmes paramètres de réglage que GTK+ et le Service des paramètres GNOME.