[Avancé]Si sur votre live_cd de linux, les caractères sont énormes…

enorme

Ça nous arrive tous un jour où l’autre: On teste une nouvelle distribution linux, la carte graphique et l’écran sont mal reconnus, et on se retrouve avec une taille de police démentielle qui rend toute manipulation impossible à cause de la taille des menus. En plus si on est sur un live cd, toute manipulation conduisant au redémarrage est à proscrire, puisqu’on perdrait ce qu’on a fait.

Alors voici comment faire:

  1. Passer en terminal virtuel (combinaison de touche ctrl + alt + F1)
  2. éditer le fichier /etc/X11/xorg.conf avec les droits d’administration
    pour ce faire personnellement j’utilise nano, ce qui nous donne ‘nano /etc/X11/xorg.conf‘, éventuellement à faire précéder d’un sudo si vous êtes sur Ubuntu, ou bien à faire un su avant, je vous laisse agir selon votre distribution.
  3. Repérer la section dédiée à la carte graphique. Dedans il y a une ligne dans le style Driver  “quelque chose”. Et manifestement le quelque chose n’est pas bon, donc il faut le remplacer par quelque chose qui va avec votre config, les plus courants étant {ati, nv, vesa, nvidia}. Mais attention, certains correspondent à des pilotes propriétaires, s’ils ne sont pas inclus par défaut sur le live_cd (ce qui est rarement le cas), ça ne marchera pas. Par exemple moi j’ai une Geforce, et hier j’ai voulu tester Sidux. Le driver paramétré dans le xorg.conf était nv, je l’ai remplacé par vesa, qui est un driver générique, sachant que sur ma distribution habituelle j’utilise le driver nvidia qui est propriétaire
  4. Utilisez la combinaison de touches crtl + alt + backspace pour redémarrer le serveur X. Si le serveur redémarre, mais que vous avez toujours le problème, ou que c’est pire refaits la manip pour essayer un autre pilote. Si il ne se passe rien après avoir fait crtl + alt + backspace, revenez en section graphique (ctrl + alt +F7) et réessayez. S’il ne se passe toujours, rien, pas de chance, cette combinaison a été désactivée pour votre distribution.

Deux possibilités maintenant:

  • Vous vous apprêtez à plusieurs essais, ou bien vous souhaitez réactiver la combinaison dans l’un des cas contraire, passez à l’étape suivante.
    - Retournez dans le terminal virtuel, rééditez le fichier xorg.conf, et rajoutez à la fin la section que vous trouverez sur tuxplanet, mais ne redémarrez pas l’ordinateur après .
    - enregistrez le fichier
    Passez à l’étape suivante
  • Nous allons maintenant redémarrer X manuellement.
    - ps -A | grep X
    - notez le numéro de PID de Xorg
    - faites un kill PID (éventuellement en root si ça ne marche pas). Notez que j’ai dit kill et pas kill -09, nous souhaitons ici une terminaison correcte du processus, pas un arrêt brutal. Ne rajoutez le -09 que si ça ne marche pas autrement.

Après ça le serveur X redémarre, et normalement ça marche mieux. Sinon vous avez tous les outils pour refaire des essais. Pensez aussi à jeter un coup d’oeuil à la documentation francophone d’Ubuntu (même si vous n’êtes pas sur cette distribution, ce qui concerne le Xorg et les cartes graphiques reste valable)

Comment se procurer une clé gpg par des voies détournées..

gpg

Le gros problème avec les clés gpg, c’est que le serveur de clés gpg intégrés aux machines unix utilise un port particulier pour se connecter à internet. Si celui-ci s’avère bloqué, c’est le début de la galère. Heureusement, il est possible d’ajouter les clés manuellement, a condition de réussir à mettre la main dessus en recherchant sur Internet. Alors voici une manière de faire qui marche parfois.

Admettons que lors d’un update des listes de paquets, la console vous sorte un truc du genre:µ
W: GPG error: http://mirror.noreply.org jaunty Release: Les signatures suivantes n’ont pas pu être vérifiées car la clé publique n’est pas disponible : NO_PUBKEY CFF71CB3AFA44BDD

  • Repérez les 8 derniers caractères, ici AFA44BDD.
  • Allez sur google et recherchez ["AFA44BDD" site:http://subkeys.pgp.net/] (sans les crochets)
  • Parmis les résultats, il y en a qui tombent sur des pages bloquées par le proxy (donc a priori valides) et d’autres qui passent mais qui retournent des erreurs http. Oubliez ces derniers et concentrez vous sur les résultats bloqués par le proxy.
  • Recherchez sur google un de ces sites de surf anonymes qui servent justement à contourner les proxy, et surfez sur les url bloquées.
  • Bon l’ennui, c’est qu’il faut aussi trouver le petit non de la clé, mais si vous faites en parallèle une recherche sur google portant sur le nom que vous avez, vous devriez trouver tout un tas de petits gars qui ont eu le même problème que vous et qui ont posté sur des forums, faut chercher un peu mais ça se trouve, ici c’était : “94C09C7F”
  • Faites une recherche dans la page sur un lien qui pointe sur ce nom, et vous devriez arriver sur une page internet qui contient la clé vous pouvez pas la louper, elle ressemble à l’illustration de ce billet. Ne vous souciez pas de la longueur. Celle qui sert d’exemple à ce post fait trois kilomètres, mais parfois elles sont toutes petites.
  • Enregistrez la clé dans un fichier, ouvrez vos sources de mise à jour, aller dans sécurité, ajoutez une clé, sélectionnez le fichier où vous l’avez enregistré, refaites un apt-get update, avec un peu de chance, c’est bon.

IMPORTANT: LE TRUC DONNE DANS CET ARTICLE EST DE TYPE RECETTE DE GRAND MERE. CA MARCHE DANS CERTAINS CAS, RIEN NE DIT QUE ÇA MARCHERA DANS TOUS LES CAS. PAR AILLEURS CE TUTO CONTOURNE LA MANIÈRE DE FAIRE OFFICIELLE. UTILISEZ LA A VOS RISQUES ET PERILS. JE DECLINE TOUTE RESPONSABILITÉ EN CAS DE DISFONCTIONNEMENT DE N’IMPORTE QUEL ORDRE SURVENU A VOTRE ORDINATEUR PAR SUITE DE L’APPLICATION DE CE TUTORIEL.

[Avancé] clés GPG et cyptage asymétrique

gpg

Je vais essayer d’être aussi concis que possible, mais je vais devoir faire une brêve introduction à la cryptographie. Pendant des siècles, la cryptographie a été à clé unique. Par exemple si je prend cet article et que je décide de décaler chaque lettre de l’article de 6 lettres dans l’alphabet, j’aurais alors a=f, b=g, c=h et ainsi de suite. Bien sûr le moyen de décodage est totalement symétrique, il suffit de faire l’inverse. Ca vaut pour cet exemple ultra simple, et vaut également pour tout un tas de codes compliqués, comme le code symbolique de Louis XIV ou la machine enigma. A chaque fois on prend un message original, on le triture de manière plus ou moins complexe pour le coder, et celui qui le reçoit doit connaitre le procéder de codage (la clé) et l’inverser.

Mais le défaut énorme de ce type de codage, c’est qu’il faut que l’émetteur et le récepteur se rencontrent au moins une fois pour convenir de la clé. Dans le monde d’aujourd’hui où des gens se parlent d’un bout du monde à l’autre, ce n’est pas trop faisable. Heureusement le cryptage asymétrique a été inventé: au lieu d’une seule clé, il y en a deux, une publique, et une privée. Et là ou c’est très fort, c’est que ce qui est crypté avec la clé publique ne peut être décrypté que par celui qui possède la clé privée et vice versa.

L’intéret est énorme: Il suffit que chacun donne sa clé publique dans un catalogue ouvert à tous, et tout le monde pourra lui envoyer des messages cryptés sans l’avoir rencontré au préalable. Et lui, il peut utiliser sa clé privée pour crypter ses messages et les signer. Ca permet de garantir l’authenticité du message. Si marc reçoit un message de paul et qu’il veut être sûr que c’est bien paul qui a envoyé le message, il utilise la clé publique sur le message signé par paul avec sa clé privée, et si quelqu’un a essayé de se faire passer pour paul il sera tout de suite repéré puisqu’il ne connait pas la clé privée de paul et n’a donc pas pu signer le message.

Bien sûr tout ça est extrêmement simplifié, et vous trouverez sans doute bien plus de détails sur les sites dédiés au cryptage Asymétrique, au chiffre RSA et à GnuGPG. En tout état de cause, voici une application directe: Une clé gpg est la clé publique d’un éditeur de logiciel. Celui-ci utilise sa clé privée pour signer ses logiciels, et nous pouvons utiliser la clé publique pour vérifier que les logiciels que nous trouvons sur internet viennent bien de lui et pas d’un quelconque pirate qui aurait bidouillé le logiciel pour y introduire un malware.

Ce procédé est très connu dans le monde de Linux, et en particulier dans les distributions issues de Debian, il est utilisé pour garantir l’authenticité des paquets non issus des dépots officiels.

Capturer le localhost dans WireShark/Ethereal sous Windows

Je ne sais pas si certains d’entre vous bossent sur des projets telecom, mais il est une situation dans laquelle on se retrouve tôt ou tard: avoir besoin de tester deux logiciels censés communiquer entre eux par le réseau sur son propre ordinateur, et vouloir sniffer le réseau pour savoir ce qu’ils se disent exactement. Problème, wireshark (nouveau nom d’Ethereal) capture tout ce qui passe par la carte réseau, mais dans le cas de communication réseau internes à l’ordinateur, les paquets empruntent des raccourcis qui les font échapper à cette capture. Comment tricher pour les avoir quand même? Une façon de faire consiste à les forcer à passer par la carte réseau, en indiquant à windows que tous les paquets en provenance de notre ordinateur et à destination de notre adresse ip doivent emprunter la passerelle par défaut.

I visualisation des paramètres initiaux :

D’abord on fait un ipconfig pour repérer son adresse ip, et la passerelle par défaut. Par exemple on obtient ça:

C:\>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix  . : toto.titi.tata.com
IP Address. . . . . . . . . . . . : 192.168.16.53
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.16.2

Tant qu’on y est, on peut aussi regarder les paramètres par défaut de routage interne :

H:\>route print 192.168.16.53 | find “192.168.16.53″
192.168.16.53  255.255.255.255        127.0.0.1       127.0.0.1       20

Le résultat dit que les paquets à destination de mon adresse IP doivent être redirigés sur mon localhost. C’est ce que nous allons changer.

II Forçage du passage des paquets par le routeur :

Nous allons donc ajouter une route à Windows en lui disant que pour router des paquets vers notre adresse IP, il faut passer par le routeur:

H:\>route add 192.168.16.53 mask 255.255.255.255 192.168.16.2 metric 1

Regardons maintenant les nouveaux parametres de routage de windows :

H:\>route print 192.168.16.53 | find “192.168.16.53″
192.168.16.53  255.255.255.255        127.0.0.1       127.0.0.1       20
192.168.16.53  255.255.255.255 192.168.16.2 192.168.16.53       1

La nouvelle route a bien été ajoutée. L’étape suivante concerne notre application qui tourne en interne : Au lieu de lui donner l’adresse hote interne 127.0.0.1, il faut lui donner l’adresse hôte externe, dans cet exemple 192.168.16.53. Une fois que c’est fait, nous pouvons lancer ethereal/wireshark  et notre application, et les paquets seront capturés.

III Résoudre le problème du dédoublement des paquets :

Seul petit problème, le trajet des paquets va être le suivant :
1)      Le paquet part de l’application cliente sur notre ordinateur
2)      Il est routé vers le routeur
3)      Le routeur nous le renvoie
4)      Le paquet est reçu par l’application serveur sur notre ordinateur

Et dans le cas du trajet serveur -> client, c’est la même chose.

Ca implique que chaque paquet passe deux fois par notre carte réseau, et que du coup tous les paquets seront capturés en double par wireshark/ethereal. Pour pallier à ce petit problème, il suffit d’ajouter un filtre dans wireshark, pour lui indiquer par exemple de bloquer les paquets sortant de la carte réseau du routeur. Par exemple, si en plus vous ne voulez que les paquets snmp, et que votre carte réseau a pour adresse 00:ab:cd:ef:12:34, indiquez le filtre suivant dans wireshark/ethereal:

snmp && !(eth.src == 00:ab:cd:ef:12:34)

Et le tour est joué!

IV Rétablir les choses dans leur configuration d’origine :

Lorsqu’on n’a plus besoin de capturer les paquets, il n’est pas nécessaire de polluer le routeur plus longtemps. Il suffit d’enlever la route ajoutée au II :

H:\>route delete
192.168.16.53
H:\>route print 192.168.16.53 | find “192.168.16.53″
192.168.16.53  255.255.255.255        127.0.0.1       127.0.0.1       20

Et tout est de retour à l’état initial.

I visualisation des paramètres initiaux :

D’abord on fait un ipconfig pour repérer son adresse ip, et la passerelle par défaut. Dans mon cas ça donne ça :

H:\>ipconfig

Windows IP Configuration

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix  . : rennes.eu.thmulti.com

IP Address. . . . . . . . . . . . : 141.11.149.18

Subnet Mask . . . . . . . . . . . : 255.255.240.0

Default Gateway . . . . . . . . . : 141.11.159.1

Tant qu’on y est, on peut aussi regarder les paramètres par défaut de routage interne :

H:\>route print 141.11.149.18 | find “141.11.149.18″

141.11.149.18  255.255.255.255        127.0.0.1       127.0.0.1       20

Le résultat dit que les paquets à destination de mon adresse IP doivent être redirigés sur mon localhost. C’est ce que nous allons changer.

II Forçage du passage des paquets par le routeur :

Nous allons donc ajouter une route à Windows en lui disant que pour router des paquets vers notre adresse IP, il faut passer par le routeur :

H:\>route add 141.11.149.18 mask 255.255.255.255 141.11.159.1 metric 1

Regardons maintenant les nouveaux parametres de routage de windows :

H:\>route print 141.11.149.18 | find “141.11.149.18″

141.11.149.18  255.255.255.255        127.0.0.1       127.0.0.1       20

141.11.149.18  255.255.255.255     141.11.159.1   141.11.149.18       1

La nouvelle route a bien été ajoutée. L’étape suivante concerne notre application qui tourne en interne : Au lieu de lui donner l’adresse hote interne 127.0.0.1, il faut lui donner l’adresse hôte externe, dans mon cas 141.11.149.18. Une fois que c’est fait, nous pouvons lancer ethereal/wireshark  et notre application, et les paquets seront capturés.

III Résoudre le problème du dédoublement des paquets :

Seul petit problème, le trajet des paquets va être le suivant :

1) Le paquet part de l’application cliente sur notre ordinateur

2) Il est routé vers le routeur

3) Le routeur nous le renvoie

4) Le paquet est reçu par l’application serveur sur notre ordinateur

Et dans le cas du trajet serveur -> client, c’est la même chose.

Ca implique que chaque paquet passe deux fois par notre carte réseau, et que du coup tous les paquets seront capturés en double par wireshark/ethereal. Pour pallier à ce petit problème, il suffit d’ajouter un filtre dans wireshark, pour lui indiquer par exemple de bloquer les paquets sortant de la carte réseau du routeur. Par exemple, dans mon cas, je ne veux que les paquets snmp, donc j’indique le filtre suivant à wireshark/ethereal :

snmp && eth.src != 00:19:b9:2e:45:cf

Et le tour est joué!

IV Rétablir les choses dans leur configuration d’origine :

Lorsqu’on n’a plus besoin de capturer les paquets, il n’est pas nécessaire de polluer le routeur plus longtemps. Il suffit d’enlever la route ajoutée au II :

H:\>route delete 141.11.149.18

H:\>route print 141.11.149.18 | find “141.11.149.18″

141.11.149.18  255.255.255.255        127.0.0.1       127.0.0.1       20

Et tout est de retour à l’état initial.

Si vous souhaitez réaliser votre propre feuille de style CSS

css

Nous avons présenté dans deux précédents articles les feuilles de style CSS, et leur utilisation conjointe avec l’extension Firefox Stylish. Voici maintenant quelques conseils si vous souhaitez vous lancer dans la création de votre propre feuille de style CSS pour un site donné.

a) Récupérez la feuille de style CSS du style Web en question.

  1. Affichez le code source de la page (combinaison de touches ctrl+U), et recherchez l’emplacement de la feuille de style CSS. Pour ce faire, faites la combinaison de touches ctrl+F et recherchez la chaine de caractères “.css“.
  2. Vous obtenez alors soit une adresse internet entière, par exemple dans le cadre de mon blog, vous allez tomber sur http://s3.wordpress.com/wp-content/themes/pub/garland/style.css?m=1233010721b.
  3. Sinon vous pouvez tomber sur une adresse relative (qui ne commence pas par http:// mais par /quelquechose). Auquel cas vous pourrez généralement reconstituer l’url entière de la feuille de css en accolant l’adresse realtive à l’adresse globale du site pour obtenir une adresse du style http://www.monsite.com/quelquechose.
  4. Enregistrez le contenu texte de la feuille de style que vous obtenez sous un nom quelconque par exemple CssPersonaliséMonSitePointCom.css (en n’oubliant pas le plus important, l’extension .css).

b) Modifiez là à votre convenance en vous inspirant de l’existant.

  1. D’abord il y a des choses complètement évidentes. Par exemple l’attribut background-color de la balise body désigne évidemment la couleur d’arrière plan du site. Allez sur code-couleur.com, choisissez une nouvelle couleur qui vous convient mieux, et remplacez le code hexadécimal de la feuille de style par celui que vous donne le site pour la nouvelle couleur choisie.
  2. Ensuite comparez à grand renfort de ctrl+F quelles sont les correspondances des balises moins évidentes. Dans ce cadre l’utilisation de Firebug vous sera sans doute d’un grand secours tant pour établir les correspondances que pour avoir un petit aperçu de ce que vos changements vont donner.

c) Testez votre feuille de style sur le site concerné:

  1. Repérez l’icone de Stylish en bas à droite du navigateur (elle ressemble à une feuille blanche avec un pinceau) et son nom apparait lorsque vous passez la souris dessus. Sinon vérifiez que vous avez bien installé Stylish.
  2. Cliquez dessus, passez la souris sur “Ecrire un style“, faites votre choix dans le menu déroulant. Puis copiez collez votre feuille de style dans le cadre qui s’affiche en laissant en tête le code par défaut.
  3. Validez, raffraichissez la page, et profitez :) .

Je précise que je n’ai pas encore testé d’écrire ma propre feuille CSS dans ce cadre là. Si jamais le besoin s’en fait sentir, ou si l’un d’entre vous trouve quelque chose de pas clair et me le demande, j’éditerai pour expliquer commen pallier aux difficultés rencontrées éventuelles. Ceci dit tout me parait assez clair, et pour les anglophones, l‘aide de Stylish est très bien faite.

[Avancé] Comment appliquer récursivement une instruction à des fichiers sous Linux

recursion par sebr (cliquez pour afficher l'original)

recursion par sebr (cliquez pour afficher l'original)

Figurez vous qu’aujourd’hui même, on m’a transmis une archive contenant un meli-melo de fichiers .java et de fichiers .class avec pas mal de ramifications des dossiers. Or il se trouve que seuls les fichiers en .java m’intéressaient. Ne souhaitant pas passer des heures à pacourir les dossiers pour virer tous les .class manuellement, je me suis mis en quête d’une commande susceptible d’explorer récursivement les dossiers et sous dossiers, et d’en effacer tous les fichiers en .class.

Après quelques recherches dans les manpages, et quelques essais infructueux, j’ai posé la question sur irc (un salon de discussion en ligne), et j’ai immédiatement obtenu deux réponses toutes aussi fonctionnelles l’une que l’autre. Il suffisait de faire:

  • soit find . -name ‘*.class’ | xargs rm -f
  • soit find . -name ‘*.class’ -exec rm -v {} \;

Comme vous le voyez, les instructions sont composées de deux parties: la première, find . -name ‘*.class’, permet de rechercher récursivement tous les fichiers se terminant par ‘.class‘. La deuxième partie précise le traitement à appliquer aux fichiers. Les deux reviennent au même, mais la manière dont le résultat va être obtenu diffère.

Après discussion il est apparu que la première était la plus fonctionnelle au niveau de la rapidité d’exécution, car la commande rm est appelée une seule fois pour être appliquée d’un coup à toute la liste de fichiers,  tandis que la deuxième s’arrête à chaque fichier trouvé pour le supprimer avant de poursuivre la recherche, ce qui implique l’appel à la fonction rm autant de fois qu’il y a de fichiers, donc la création d’autant de processus, ce qui est couteux pour le système. Cependant la deuxième peut aussi avoir son intéret si un jour j’ai des dizaines de milliers de fichiers à supprimer, car il semblerait que le nombre d’éléments pouvant être passés dans un pipe (la barre verticale) soit limitée. Cela dit le débat reste ouvert car tous n’étaient pas d’accord sur la manière de procéder du Xargs. Voir la page de Wikipedia dédiée à Xargs (en) pour plus d’informations.

Pour conclure, ici on s’est intéressé à l’effaçage récursif d’un type donné de fichier, mais on remarquera aisément qu’en remplaçant rm par une autre commande, on peut généraliser ainsi l’application récursive d’une instruction à tous les dossiers et sous dossiers d’un répertoire.

note: ne pas faire attention aux options du rm. Je les ai reportées telles qu’on me les a données, mais il faut bien voir ce qu’elles veulent dire: le ‘-v’ de la deuxième commande, demande au rm de dire ce qu’il fait au fur et à mesure, et le ‘-f’ de la première commande demande d’ignorer les éventuels avertissements du système. Il convient de les modifier avec discernement en fonction de la situation.

PS: Faites des sauvegardes avant de faire des tests :) .

Publié dans Astuces, Avancés, Linux. Mots-clefs : , , , , . 2 Commentaires »

Optimisez l’espace dans Firefox (2)

Capture d'écran prise en 1024x768 (cliquez pour agrandir)

Capture d'écran prise en 1024x768 (cliquez pour agrandir)

Ce tutoriel fait suite à mon billet d’hier : Enlevez de votre navigateur toutes ces choses inutiles qui l’encombrent. Nous avons vu comment faire pour enlever une bonne part des barres diverses qui prennent de la place inutilement. Nous allons maintenant voir la suite.

1) On désactive l’affichage des menus superflus:
Tout d’abord ajoutez l’extension Menu Editor. Je rappelle que vous pouvez utiliser ce tuto si vous ne savez pas trop comment faire pour ajouter une extension. Après avoir redémarré Firefox, il faut aller dans outils -> Modules complémentaires -> Extensions, sélectionner l’extension Menu Editor dans la liste et cliquer sur Préférences. A partir de la boite qui s’ouvre, vous avez la possibilité de désactiver toutes les options dont vous ne vous servez pas dans les menus de Firefox (“menu contextuel principal” désigne le menu qui s’affiche lorsque vous faites un clic droit quelque part dans Firfox. Bien sûr tout ce que vous pouvez régler ne s’affiche pas d’un coup. Ca dépend de sur quoi vous avez cliqué droit).

2) On installe un thème compact:
Pour installer un thème, vous pouvez suivre ce tuto. Faites bien attention de choisir un thème portant le tag compact. Par exemple le thème que j’ai utilisé est le thème Chromifox 2. Si jamais vous voulez aussi l’avoir, notez bien qu’il est expérimental, et prévu pour la version 3.1 beta 1 ou supérieure de Firefox. Ca signifie que de même que dans mon tuto Deux extensions sympathiques pour booster la vitesse de Firefox, il va vous falloir vous créer un compte utilisateur sur le site, si ce n’est déjà fait (ce n’est pas bien compliqué, il faut donner une adresse email et un mot de passe). Par ailleurs, comme firefox 3.1 n’est pas encore sorti de manière stable, vous utilisez probablement encore Firefox 3.0. Ce qui implique qu’à moins d’installer la version beta de Firfox 3.1, au risque de perdre la compatibilité avec un grand nombre de modules, vous allez devoir ruser et désactiver les vérifications de sécurité suivant le deuxième exemple de mon tuto Configuration avancée de Firefox (Et même comme ça, ça ne fonctionne pas toujours, mais ça ne coûte rien d’essayer).

3) On gagne de la place:
Ceci fait installez l’extension Tiny Menu. Cette extension remplace l’ensemble des menus Fichier, Édition, Affichage, etc, par un un seul dans lequel les menus Fichier, Édition, Affichage, etc, sont des sous menus. Ça signifie que désormais il faudra une ramification supplémentaire pour atteindre quelque chose dans ces menus. L’intérêt de cette manipulation est qu’en général on n’utilise pascs menus de manière intensive (vu qu’il y a les raccourcis clavier), et qu’on peut donc récupérer la place que ces menus occupaient sans trop perdre en ergonomie.

4)Si comme moi vous faites un usage intensif des marque pages:
x Déjà en suivant le tuto de mon article précédent, ne masquez pas la barre personnelle qui contient probablement tous vos marque pages préférés.
x Ensuite, vous devez être un peu embêté à la suite de la dernière manipulation, parce que le menu Marque Pages, vous l’utilisez tout de même suffisamment souvent pour que le fait de ne plus y avoir directement vous gène. Eh bien on va s’occuper de régler ça. Installez l’extension Personal Menu. Au redémarrage, une boite de dialogue s’affiche pour savoir si vous souhaitez  ajouter les icônes dans la barre de navigation. Répondez oui. Trois nouvelles icônes apparaissent dans la barre de navigation, ainsi qu’une fenêtre qui contient toutes les icônes qu’il est  possible d’afficher.  Vous remarquerez parmi ces trois icônes deux boutons sans grand intérêt d’accès rapide aux menus et aux préférences de l’extension (les deux plus à droite), et un bouton d’accès aux marque-pages qui fait exactement la même chose que le menu Marque Pages qui se trouvait dans la barre de menu. Passez à l’étape suivante.

5) Et on réorganise tout ça:
x Si vous n’avez pas fait l’étape 4), il vous faut ouvrir l’éditeur de modification des barres d’outils. Pour cela cliquez droit quelque part sur la barre de navigation, par exemple sur le bouton actualiser, et cliquez sur Personnaliser …
x Dans tous les cas, vous pouvez désormais réorganiser totalement la présentation de vos menus. Sélectionnez tous les boutons que vous jugez inutiles (en cliquant dessus et en maintenant le bouton appuyé), et faites-en un glisser-déposer vers la fenêtre ouverte qui contient les éléments en réserve. de même, vous pouvez si cela vous chante rajouter des éléments depuis cette fenêtre. Ensuite, il faut s’occuper d’optimiser l’espace restant. Personnellement, je n’ai pas trouvé comment déplacer le bouton menu dans la barre du dessous, donc je fais l’inverse: je prend tous les boutons de la barre de navigation l’un après l’autre, et je les glisse quelque part dans la barre de menu, y compris la barre d’adresse et la barre de recherche, jusqu’à ce que la barre de navigation soit totalement vide.
x Enfin, il ne reste plus qu’à masquer la barre de navigation devenue inutile via Menu -> Affichage -> Barres d’outils -> Barre de navigation.

Et voila, vous disposez maintenant d’une version de Firefox dont les barres d’outils prennent nettement moins de place, ce qui est autant d’espace de gagné pou la navigation :) .

[Avancé] Si vous avez un problème avec libtool lors de la compilation de gtk2.

hello_world

Bon une fois n’est pas coutume, cet article ne contient pas de tuto. En revanche,  voici une astuce pour les utilisateurs avancés de Linux qui auraient envie de recompiler gtk2. Dans de rares occasions, il se peut que même après avoir corrigé tous les warnings du ./configure, vous ayez tout de même un problème lors de la compilation à un endroit où le script libtool est utilisé.

Ce script est généré automatiquement par le ./configure. Mais il contient un léger bug qui fait que dans certains cas, l’utilisation du fichier de versions va retourner une erreur dans le make. Voici la solution que j’ai utilisée pour contourner le problème après avoir un peu fouillé sur le net pour la trouver. Je vous préviens d’avance que ça tient plus de la recette de cuisine qu’autre chose, donc utilisez là à vos riques et périls.

1) Le log de l’erreur:

make[4]: Entering directory `/home/aldian/packages/gtk+-2.14.6/gdk-pixbuf’
/bin/bash ../libtool –mode=link gcc  -DGDK_PIXBUF_DISABLE_DEPRECATED -DG_DISABLE_DEPRECATED -g -O2 -Wall   -o libgdk_pixbuf-2.0.la -rpath /usr/local/lib  -version-info 1400:6:1400 -export-symbols-regex “^[^_].*”   gdk-pixbuf.lo gdk-pixbuf-animation.lo gdk-pixbuf-data.lo gdk-pixbuf-io.lo gdk-pixbuf-loader.lo gdk-pixbuf-scale.lo gdk-pixbuf-simple-anim.lo gdk-pixbuf-scaled-anim.lo gdk-pixbuf-util.lo gdk-pixdata.lo gdk-pixbuf-enum-types.lo pixops/libpixops.la  -L/usr/local/lib -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lm
libtool: link: rm -fr  .libs/libgdk_pixbuf-2.0.exp .libs/libgdk_pixbuf-2.0.ver
libtool: link: /usr/bin/nm -B  .libs/gdk-pixbuf.o .libs/gdk-pixbuf-animation.o .libs/gdk-pixbuf-data.o .libs/gdk-pixbuf-io.o .libs/gdk-pixbuf-loader.o .libs/gdk-pixbuf-scale.o .libs/gdk-pixbuf-simple-anim.o .libs/gdk-pixbuf-scaled-anim.o .libs/gdk-pixbuf-util.o .libs/gdk-pixdata.o .libs/gdk-pixbuf-enum-types.o   pixops/.libs/libpixops.a | sed -n -e ’s/^.*[     ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[     ][     ]*\([_A-Za-z][_A-Za-z0-9]*\)$/  /p’ | /bin/sed ’s/.* //’ | sort | uniq > .libs/libgdk_pixbuf-2.0.exp
libtool: link: /bin/grep -E -e “^[^_].*” “.libs/libgdk_pixbuf-2.0.exp” > “.libs/libgdk_pixbuf-2.0.expT”
libtool: link: mv -f “.libs/libgdk_pixbuf-2.0.expT” “.libs/libgdk_pixbuf-2.0.exp”
libtool: link: echo “{ global:” > .libs/libgdk_pixbuf-2.0.ver
libtool: link:  cat .libs/libgdk_pixbuf-2.0.exp | sed -e “s/\(.*\)/;/” >> .libs/libgdk_pixbuf-2.0.ver
libtool: link:  echo “local: *; };” >> .libs/libgdk_pixbuf-2.0.ver
libtool: link:  gcc -shared  .libs/gdk-pixbuf.o .libs/gdk-pixbuf-animation.o .libs/gdk-pixbuf-data.o .libs/gdk-pixbuf-io.o .libs/gdk-pixbuf-loader.o .libs/gdk-pixbuf-scale.o .libs/gdk-pixbuf-simple-anim.o .libs/gdk-pixbuf-scaled-anim.o .libs/gdk-pixbuf-util.o .libs/gdk-pixdata.o .libs/gdk-pixbuf-enum-types.o  -Wl,–whole-archive pixops/.libs/libpixops.a -Wl,–no-whole-archive  -L/usr/local/lib /usr/local/lib/libgio-2.0.so /usr/local/lib/libgobject-2.0.so /usr/local/lib/libgmodule-2.0.so -ldl /usr/local/lib/libglib-2.0.so -lm    -Wl,-soname -Wl,libgdk_pixbuf-2.0.so.0 -Wl,-version-script -Wl,.libs/libgdk_pixbuf-2.0.ver -o .libs/libgdk_pixbuf-2.0.so.0.1400.6
/usr/bin/ld:.libs/libgdk_pixbuf-2.0.ver:2: ignoring invalid character `01′ in script
/usr/bin/ld:.libs/libgdk_pixbuf-2.0.ver:2: syntax error in VERSION script
collect2: ld returned 1 exit status
make[4]: *** [libgdk_pixbuf-2.0.la] Error 1
make[4]: Leaving directory `/home/aldian/packages/gtk+-2.14.6/gdk-pixbuf’

2) La solution:

Puisque c’est le fichier de version qui pose problème, il suffit de dire à libtool de ne pas aller le consulter.

  1. Se placer dans le répertoire principal qui doit s’appeler qqch comme gtk+-2.14.6/ aux variations de version près.
  2. faire une sauvegarde du fichier libtool.
  3. l’éditer
  4. faire une recherche sur les lignes contenant ”-version-script”.
  5. Dans ces lignes, supprimer l’argument contenant cette clé et l’argument suivant.

Par exemple, moi j’avais en ligne 315:

315: \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib”

Que j’ai remplacé par:

315: \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib”

Puis relancer le make, mais ne pas relancer le ./configure, vu que celui-ci régénèrerait le fichier libtool comme la première fois.

Notons pour conclure que le bug ne vient pas forcément du fichier libtool, mais peut être aussi du fichier de version en .ver qui est ignoré grâce à notre petite manipulation smile

Source