Main menu:

Site search

Categories

mai 2024
L M M J V S D
 12345
6789101112
13141516171819
20212223242526
2728293031  

Archive

Se débarrasser des ‘Overlay Scrollbars’ et du ‘Menu Global’ de Unity

Depuis Unity, Ubuntu affiche un nouveau système de scrollbars. On aime ou on n’aime pas. Lorsque j’utilisais Unity, je leur reprochais souvent d’apparaître trop lentement et de ne pas être facile à agripper. Manque de réactivité.
Unity a fait aussi le choix d’utiliser le menu global, placé dans la tableau de bord du haut, à l’instar de Mac OSX. Je me suis souvent plaint de ce Menu Global. Dans le cas où on utilise un grand écran, les mouvements entre la fenêtre dans laquelle on travaille et le menu global sont trop grands. C’est vraiment un problème rédhibitoire à mon sens.

On peut aisément pallier à ces problèmes pour une application en lançant l’application avec une variable d’environnement mise à zéro. Pour se débarrasser des Overlay Scrollbars, il faut mettre la variable LIBOVERLAY_SCROLLBAR à zéro. Pour le Menu Global, c’est UBUNTU_MENUPROXY qui doit être mis à zéro. Cela donne ceci dans un terminal si on prend gedit comme exemple d’application:

$ LIBOVERLAY_SCROLLBAR=0 && UBUNTU_MENUPROXY=0 gedit

Ceci n’est évidemment pas très pratique s’il faut passer à chaque fois par le terminal pour lancer une application.
On peut modifier le lanceur de l’application elle-même mais il faudrait le faire pour chaque application. Pas simple non plus.
La méthode idéale pour que cela affecte toutes les applications d’un utilisateur est de créer un fichier ~/.xprofile, fichier caché placé à la racine du home de l’utilisateur et d’y ajouter les lignes suivantes:

export LIBOVERLAY_SCROLLBAR=0
export UBUNTU_MENUPROXY=0

Espérons seulement que dans l’avenir, ce genre de chose fasse l’objet d’une option dans Unity.

Installer Gnome-Shell dans Ubuntu mais sans installer Unity

Cela fait déjà longtemps que je me plains d’Unity. Je lui trouve toujours les mêmes défauts et la dernière release d’Ubuntu, qui est sortie il y a à peine quelques jours, n’améliore pas les choses.
Sous Ubuntu 11.04, j’avais installé Gnome-Shell de façon à pouvoir le tester de manière plus approfondie. Gnome-Shell a aussi ses défauts, ces petites choses que je n’aime pas. Par contre, entre la première version et la 3.2 qui vient de sortir il y a quelques semaines, on peut voir une évolution. Les choses semblent aller dans la bonne direction.
Pour ces raisons, j’ai décidé, avec la sortie d’Ubuntu 11.10 Oneiric Ocelot, de ne plus installer Unity et de mettre définitivement Gnome-Shell à la place.
Mais comment faire pour ne pas installer Unity puisque l’installeur Ubuntu ne donne pas la possibilité de faire le choix entre Unity et Gnome-Shell ?
Ubuntu sort en 3 versions.
La première est la version Desktop que nous connaissons tous.
La deuxième est une version dont l’installeur est en mode texte, pour les PC ayant des problèmes avec l’installeur graphique, et qui permet de gérer le RAID ou LVM. Cette version nécessite aussi moins de mémoire. Elle est appelée Alternate.
La troisième version est la version Serveur. Comme son nom l’indique, elle permet d’installer différents logiciels serveur sur le PC. L’installeur est comme pour la version Alternate en mode texte. Sa particularité est qu’l demande à l’utilisateur quels logiciels serveur il veut installer (Lamp, postfix, openssh,…) et si vous n’en indiquer aucun, vous aurez une installation minimale d’Ubuntu sans mode graphique puisque la version serveur n’en propose pas. Ce qui tombe bien puisqu’on ne veut justement pas installer Unity. C’est donc cette version-là que nous allons utiliser.

Installation d’Ubuntu

La toute première chose est donc de télécharger l’iso de la version serveur d’Ubuntu ici. Ensuite, gravez l’iso sur un CD ou mieux, servez-vous du programme Créateur de Disque de Démarrage pour installer l’iso sur une clef USB.
Redémarrez le PC en bootant sur le CD ou sur la clef USB et lancez l’installation d’Ubuntu. Veillez aussi à raccorder votre PC, via un câble ethernet, à votre modem/routeur de façon à ce que le réseau soit configuré et que nous puissions installer le reste plus tard.
A part le fait que l’installeur est en mode texte, l’installation se déroule de la même façon qu’avec l’installeur en mode graphique. Pas d’inquiétude à avoir.
Lorsque l’installeur vous demande quels logiciels serveur installer, ne cochez rien. Continuez seulement votre installation normalement jusqu »au bout. Lorsque c’est terminé, rebootez.

Installation de Gnome-Shell

Vous avez rebooté et vous tombez sur Ubuntu en mode console qui vous demande votre login et votre mot de passe. C’est normal puisqu’il n’y a qu’un système minimal d’installé.
Entrez votre login et votre mot de passe. Ensuite installez Gnome-Shell de cette façon:

$ sudo aptitude install xserver-xorg gnome-shell language-pack-fr-base language-pack-fr language-pack-gnome-fr-base language-pack-gnome-fr

La commande installe le serveur X et Gnome-Shell ainsi que les paquets contenant les traductions en français. A partir de maintenant, vous pouvez déjà lancer Gnome-Shell en tapant depuis la console:

$ startx

Seulement à chaque reboot, vous retombez sur la console et vous devez à chaque fois taper la commande ci-dessus. Pour éviter ceci, il faut installer gdm3 ou LightDM qui lancera la session en mode graphique automatiquement. J’ai choisi d’installer LightDM pour sa facilité à être customisé et parce que c’est devenu le Desktop Manager par défaut dans Ubuntu.

$ sudo aptitude install lightdm

Ok, maintenant, tout se passe au reboot comme on en a l’habitude. La session graphique démarre dès qu’on a rentré son login et mot de passe. Mais si vous regardez ce qui est installé et utilisable dans Gnome-Shell, vous verrez qu’il n’y a rien. Pas d’éditeur de texte, pas de Firefox, même pas de terminal.

Installation d’outils Gnome

Nous allons maintenant installer le minimum pour rendre Gnome-Shell utilisable. De quoi éditer un texte, aller sur Internet, lire son courrier, taper des commandes dans un terminal etc…
Si vous êtes déjà dans Gnome-Shell, tapez Ctrl+Alt+F1 de façon à lancer une des consoles disponibles. Entrez votre login et mot de passe et installez les paquets suivants:

sudo aptitude install gedit firefox thunderbird gnome-terminal synaptic gcalctool gnome-utils gnome-disk-utility net-tools evince nautilus-share seahorse gnome-media

Ceci vous donne la base d’un système Gnome. Vous pouvez aussi installer les outils que vous utilisez régulièrement comme Libre Office, des jeux etc…

Installation des outils Ubuntu

Si je tenais à rester sous Ubuntu, c’est aussi parce qu’il existe un certain nombre de logiciels Ubuntu qui sont souvent précieux. Je pense, par exemple, au Ubuntu Software Center qui permet d’installer facilement des logiciels, au client Ubuntu One ou au programme qui permet d’installer les drivers propriétaires.

sudo aptitude install software-center ubuntuone-installer jockey-gtk language-selector-gnome

Conclusion

A ce stade, vous avez un système totalement exploitable avec les mêmes possibilités que si vous aviez installé Unity. Il ne vous reste plus maintenant qu’à installer vos applications préférées et à régler certains petits détails sans doute. Pensez aussi à installer quelques thèmes parce que par défaut, ce qu’offre Ubuntu pour Gnome-Shell est assez limité et pas très joli !
Une fois que vous aurez fait tout ceci, vous verrez que votre système est parfaitement fonctionnel et que Gnome-Shell s’intègre parfaitement avec Ubuntu. Autrement dit, on peut très bien se passer d’Unity.

Créer ses photos d’identité avec Gimp

Plutôt que d’utiliser les photos provenant d’un photomaton dont la qualité n’est pas toujours présente, pourquoi ne pas utiliser une photo faite nous-même avec un appareil photo numérique. Nous avons tous, grâce aux APN, un stock de photos sur notre disque dur. Parmi celles-ci, il y a de forte chance que nous trouvions une photo qui après traitement avec Gimp fera une très bonne photo d’identité.

La première chose à savoir, c’est quel est le format légal d’une photo d’identité. En Belgique, c’est le format suivant:

format photo d'identité

Comme on peut le voir sur ce schéma, la photo doit avoir une dimension de 35 mm de large sur 45 mm de hauteur et le visage doit avoir une hauteur comprise entre 25 et 40 mm soit entre 55 et 88% de la hauteur de la photo. Le fond doit être blanc ou de couleur claire.

Ensuite il suffit d’effectuer les opérations suivantes:

  • Ouvrez la photo choisie dans Gimp et sélectionnez l’outil de découpage et cochez Proportions/Fixé. Inscrivez comme proportions 35:45 dans le champ juste en dessous.
  • Rognez, avec l’outil de découpage, la photo de façon à ce que le visage fasse à peu près 55 à 88% de la taille de la fenêtre de rognage. A ce stade, votre photo d’identité a déjà les proportions voulues.
  • Retouchez éventuellement la photo. Vous pouvez même envisagé de modifier le fond de l’image si celui-ci n’est pas assez clair.
  • Autant profiter de la petite taille des photos d’identité pour en faire plusieurs d’un coup. Créez une nouvelle image pouvant contenir 8 fois la photo en deux rangées de 4. De cette façon, les 8 photos d’identité tiendront aisément dans le format photographique 10 x 15.
  • Dans le menu Image, sélectionnez Echelle et Taille de l’image et choisissez 140 x 90 en veillant bien à ce que la dimension soit bien exprimées en mm. Cliquez sur Echelle.
  • Imprimez les photos d’identité via Gimp en allant dans le menu Fichier/Imprimer. Dans la fenêtre qui s’ouvre, choisissez l’onglet Paramètres de l’image et vérifiez que la taille en mm est correcte. Si votre imprimante possède un mode photo, sélectionnez celui-ci. Cliquez sur Imprimer.

Notez aussi que si vous n’avez pas d’imprimante capable d’imprimer en mode photo ou de donner un résultat acceptable, rien ne vous empêche de donner le fichier .jpg obtenu et de le faire imprimer par un photographe ou une société spécialisée.

Unity – quelques options du bureau

Avec la migration de Gnome vers Unity, nous avons perdu la possibilité de configurer certaines options du bureau via l’éditeur de configuration. Or ce matin, suite à une mise à jour de ma Ubuntu 11.10 bêta 2, l’icône Network Servers est apparue sur le bureau alors qu’elle n’y était pas auparavant.
Après un peu de recherche, j’ai fini par retrouver où on pouvait modifier certaines options. Ce n’est plus dans gconf mais dans dconf!

Sous Gnome, l’outil graphique pour modifier ce genre de paramètre s’appelait gconf-editor. Avec Unity, il s’appelle… dconf-editor. Notez que dconf-editor n’est qu’une couche graphique autour de l’outil gsettings utilisable en ligne de commande. Celui-ci s’utilise, par exemple, de cette façon:

$ gsettings set org.gnome.nautilus.desktop computer-icon-visible true

Cette commande rend l’icône Ordinateur visible sur le bureau.

Faites une recherche dans le dash sur dconf pour lancer l’éditeur ou lancez-le depuis un terminal en tapant:

$ dconf-editor

Dans le panneau de gauche se trouvent les différentes catégories représentées sous forme d’arbre et dans le panneau de droite se retrouvent les différentes clefs que l’on peu modifier. La modification de certaines clefs a un effet immédiat. Par contre certaines nécessitent de relancer unity en se déconnectant et en se reconnectant par exemple ou en tapant dans une console (Alt+F1…):

$ unity --replace

Voici quelques clefs dont la modification agit sur le bureau dont celles faisant apparaître certaines icônes:
Dans le panneau de gauche naviguez jusqu’à:

  • org.gnome.desktop.background
    La clef show-desktop-icons permet d’afficher ou non les fichiers présent sur le bureau.
  • org.gnome.desktop.interface
    Vous y trouverez les clefs menus-have-icons, buttons-have-icons, clock-show-date et clock-show-seconds qui gèrent l’affichage des icônes dans le menus et sur les boutons. Celles concernant l’horloge affichent la date et/ou les secondes en plus de l’heure.
  • org.gnome.nautilus.desktop
    On y trouve les clefs computer-icon-visible, home-icon-visible, network-icon-visible, trash-icon-visible et volumes-visible qui affichent ou non les icônes système sur le bureau.

Si vous êtes curieux, n’hésitez pas à fouiner pour découvrir d’autres clefs mais faites tout de même attention à ce que vous modifiez. Modifier la valeur de certaines clefs pourraient être potentiellement dangereux.

C++ – brève présentation de C++0x

Le 12 août 2011, Herb Sutter annonçait sur son blog que la nouvelle norme C++0x était approuvée à l’unanimité. La précédente norme datait de 1998 et avait juste subi une mise à jour en 2003.

Le compilateur gcc inclus dans Linux a commencé à implémenter les nouveautés de cette (future) nouvelle norme depuis la version 4.3. Notez que Ubuntu 11.04 dispose de la version 4.5 de gcc et que dans Ubuntu 11.10 à venir, la version de gcc sera la 4.6. Il faudra attendre les versions 4.7 et suivantes pour que toutes les extensions au langage permises par la nouvelle norme apparaissent dans gcc.

Pour pouvoir compiler un programme avec gcc en utilisant la nouvelle norme, il faut ajouter une option sur la ligne de commande de g++: -std=c++0x

$ g++ -Wall -std=c++0x -c mon_fichier.cpp

Je ne vais pas détailler toutes les nouveautés de cette norme. D’autres le font bien mieux que moi mais je voudrais juste en présenter quelques unes qui me semblent intéressantes pour montrer l’évolution du langage.

C++0x introduit les types char16_t et char_32_t non-signés définis dans le fichier d’entête cstdint. Ces nouveaux types seront utiles pour les caractères unicode puisqu’avec le type char_t sur 8 bits, on retrouve les trois tailles possibles d’un caractère unicode.

#include <iostream>
#include <cstdint>

int main()
{
  char16_t c = 'a';
  char32_t d = 'b';
  std::cout << sizeof(c) << std::endl;
  std::cout << sizeof(d) << std::endl;   
  
  return 0;
}

L’inférence de type permet au compilateur de déduire le type d’une variable à partir de la façon dont elle est initialisée. Utile dans des boucles ou dans le parcours de listes, de dictionaires…

auto ma_variable = 10;  // ma_variable aura le type int défini au moment de l'initialisaton

Le foreach attendu par certains apparaît aussi dans C++0x. Il permet de parcourir une liste facilement.

#include <iostream>

int main()
{
  int a[5] = {1, 2, 3, 4, 5};
  for(int i : a)
  {
    std::cout<<i<<std::endl;
  }  
  return 0;
}

Le support des fonctions lambdas est aussi une des nouveautés. Les fonctions lambdas sont des fonctions anonymes ne nécessitant pas de définition comme les fonctions habituelles et peuvant être utilisées directement dans le code. Elles sont définies par exemple de cette façon:

[](int i, int y)
{
  if(i > y)return i;
  else return y;
}

Une autre nouveauté très utile lors de cross-compilation est l’apparition des assertions statiques disponibles au moment de la compilation et non plus comme les assertions classiques au moment de l’exécution. Elles permettent de tester les types de variables et de s’assurer, par exemple, qu’ils ont la taille désirée.

static_assert(sizeof(char16_t) == 2, "char16_t doit avoir une taille de 2");

int main()
{
    return 0;
}

Le pointeur nullptr est introduit qui peut prendre n’importe quel type de pointeur ou le type booléen. NULL par contre, est généralement défini comme la valeur entière 0.

Autre point que je voudrais présenter est la possibilité pour un constructeur d’une classe d’appeler un autre constructeur de cette même classe ce qui n’était pas possible auparavant.

#include <iostream>

class C
{
  private:
    int i;
  
  public:
    C(int y){std::cout<<y<<std::endl;}
    C(){C(20);}
};

int main()
{
  C c;
  return 0;
}

Ajoutons aussi que C++0x apporte le support des threads, des tuples, des expressions régulières via une mise à jour de la Standard Template Library et plein d’autres choses qu’il m’est impossible d’expliquer ici tant elles sont nombreuses. Mais on voit clairement que le langage s’est modernisé et introduit des choses qui étaient déjà présentes dans d’autres langages plus récents.

Sources:
C++0x feature support in GCC 4.5 – article sur le site d’IBM
C++0x faq de Bjarne Stroustrup
C++11 – article de Wikipedia
Le draft de la future norme – fichier pdf
C++ Le standard C++0x a enfin été voté – article de linuxfr.org

Ubuntu 11.10 beta1: premières impressions

Sur mon portable HP elitebook 8440p, j’ai toujours eu des problèmes de déconnexions WiFi; ce qui m’a donné l’envie de faire un upgrade du noyau et du driver WiFi question de voir si mes problèmes ne seraient pas réglés. Et pour faire d’une pierre deux coups, autant installer Ubuntu 11.10 beta1 et voir si Unity s’est amélioré.

Je ne parlerai ici pratiquement que de Unity. Je ne compte pas faire une liste exhaustive de toutes les améliorations qu’apporte le noyau 3.0 par exemple. Ce qui m’intéresse ici c’est de voir si Canonical est sur le bon chemin en tentant d’imposer Unity.

Installation

Je n’ai pas installé la version beta from scratch. J’ai choisi de faire un upgrade plutôt pour ne pas devoir réinstaller toutes mes applications et refaire la configuration. Pour cela, j’ai simplement ouvert un terminal et tapé ceci:

$ sudo do-release-upgrade -d

Ensuite, il n’y a plus qu’à attendre que les nouveaux paquets soient téléchargés et installés. Au passage, vous aurez à répondre à quelques questions.
Tout s’est bien passé et après un redémarrage, je me suis retrouvé sous Ubuntu 11.10.

LightDM

Au redémarrage, la première chose que l’on remarque c’est le nouvel écran d’accueil. Exit GDM, welcome LightDM.
Quelle différence entre les deux ? Euh… il paraît que LightDM est plus léger et que… euh… il est plus facile à customiser.
En tout cas, ce changement ne fait pas l’unanimité. Lire, par exemple, l’article de Matthew Garrett: LightDM, or: an examination of a misunderstanding of the problem.
Il qualifie la suppression de GDM et son remplacement par LightDM de:

« This is a ridiculous idea. »

Les bugs

Disons-le tout de suite, c’est plein de bugs! Et ce n’est pas anormal, ce n’est encore qu’une version beta. Il reste un gros mois avant la sortie officielle et d’ici-là, les développeurs vont se concentrer sur la correction de bugs.
Cela va d’icônes en double dans le tableau de bord du haut à des crashes d’applications.

Unity

Tout d’abord, voici un screenshot de ce à quoi ressemble mon desktop avec le dash ouvert. Comme j’ai fait un upgrade et non une réinstallation depuis zéro, il a gardé ma configuration. Le launcher est transparent et utilise des icônes plus petites que par défaut.

screenshot Ubuntu 11.10 beta1

Mon écran fait 1366×768. Ce n’est pas grand et du coup, le dash apparaît beaucoup trop gros. Ses icônes semblent disproportionnées. Seul point positif et prometteur, c’est la présence, sur la droite des possibilités de filtrage et dans le bas d’icônes de catégories. Mais aucune possibilité de modifier la taille du dash ou de le customiser.

A part ces modifications du dash qui vont dans le bon sens, je vous invite à relire l’article que j’avais écrit sur Unity il y a presque six mois pour se rendre compte que les autres problèmes sont toujours présents et n’ont pas été résolus.

Esthétiquement, je trouve Unity toujours aussi peu réussi.

Le menu global est toujours une aberration. Essayer avec un double écran. Votre appli se trouve sur l’écran de droite et le menu sur l’écran de gauche.

Pour lancer une application, il faut toujours plus de clics ou de frappes au clavier que dans Gnome 2. Bonjour la productivité!

Lorsqu’une application a le focus, il est impossible d’afficher le menu global par défaut d’Ubuntu contenant les raccourcis, l’accès au réseau etc… C’est ridicule, ça oblige à d’abord cliquer sur le fond d’écran pour que l’application perde le focus. Oui mais alors, comment faites-vous quand l’application est en plein écran ?

Par rapport à Ubuntu 11.04, on a encore perdu des possibilités de customisation du Desktop. Impossible de personnaliser un thème GTK par exemple, de changer la taille des caractères dans les menus etc…
heureusement il existe déjà une petite application qui permet de modifier quelques (très peu) paramètres:

$ sudo aptitude install gnome-tweak-tool

Et puis que dire de Nautilus. Jetez un oeil sur le screenshot ci-dessous.

nautilus Ubuntu 11.10 beta1

La partie de gauche a été remaniée mais esthétiquement, je trouve cela peu agréable à l’oeil. Elle monte trop haut par rapport à la partie de droite. De plus, on ne peut plus choisir le mode d’affichage de la sidebar de gauche. Encore une régression!

Beaucoup d’applications ne sont toujours pas bien intégrées à Unity. Thunderbird qui est le client mail par défaut maintenant a bénéficié d’une intégration poussée. De même Chrome/Chromium jouit maintenant du menu global. Mais ce n’est pas le cas de plein d’autres applications.

Gnome Shell

L’avantage de cette version d’Ubuntu c’est que l’on trouve dans les dépôts les paquets pour installer Gnome Shell.
Je n’ai bien sûr pas pu résister et je l’ai essayé. Mais grosse déception, quand Unity et Gnome Shell sont tous deux installés, on a une espèce de mélange des configurations de l’un et de l’autre. On devrait pouvoir à l’installation choisir entre Unity et Gnome Shell pour que l’un ne pollue pas l’autre.

Conclusion

Je ne vois pas de réelle amélioration dans cette nouvelle mouture d’Unity. Les mêmes gros défauts sont toujours présents. Et je reste persuadé que Canonical fait fausse route en tentant d’imposer Unity.
En ce qui me concerne, je n’ai pas encore décidé si j’allais continuer avec Ubuntu ou non mais je suis de plus en plus tenté de laisser tomber Ubuntu. On verra dans les prochaines semaines, lorsque la version définitive d’Ubuntu 11.10 sera sortie.