Archives de l’auteur : GMI3

Tag List sous vim

Une des fonctions les plus utiles pour naviguer dans un code source est la possibilité d’avoir une vue globale du fichier.
Il existe pour cela dans la plupart des IDE, une liste des fonctions/procédures.
Cette liste permet d’accéder directement à la fonction, souvent par un double-clic.

Vim permet de faire ceci grâce au greffon taglist.
taglist_vim

Après avoir décompressé le plugin dans votre répertoire ~/.vim/plugin/, vous pourrez ajouter aussi la documentation (doc/taglist.txt) au répertoire ~/.vim/doc. Comme déjà expliqué dans un article précédent, il faudra ensuite faire sous vim

:helptags ~/.vim/doc

.

Ouvrez votre fichier source, puis tapez maintenant :TlistToggle.
Cela fera apparaître une fenêtre de la liste de vos variables, fonctions, classes, tout ceci de manière hiérarchique.

Pour naviguer sur une fonction, il suffit de positionner son curseur sur la fonction et de faire Entrer.
Pour passer d’une fenêtre à l’autre, faire la combinaison Ctrl-W W.

Pour obtenir une petite aide rapide des raccourcis claviers, taper F1 dans la « Taglist ».
Vous pourrez voir comment ouvrir ou fermer une arborescence.

Par défaut la liste des tags est affichée dans l’ordre d’apparition du fichier source.
Lorsque vous chercherez une fonction dont vous connaissez le début du nom, vous souhaiterez plutôt un affichage par ordre alphabétique.
Rien de plus simple, il suffit de taper la touche s (sort) dans la taglist.
Si vous tapez de nouveau sur cette touche, on bascule de nouveau sur l’affichage classique.

Pour ouvrir un nouveau fichier, placez vous d’abord dans la fenêtre du fichier source existant puis taper :e nouveau_fichier.c.
Vous pouvez aussi taper la commande :TlistAddFiles nouveau_fichier.c. Cette commande permet aussi d’ouvrir plusieurs fichiers en même temps, en précisant *.c par exemple.

Pour fermer un fichier, il suffira de faire un :bdelete (buffer delete).
cf. article sur l’édition de plusieurs fichiers et la manipulation des buffers
Plus simplement, vous pouvez positionner le curseur sur le fichier dans la Taglist et appuer sur la touche d.

Petite astuce: pour ouvrir facilement la Taglist ajouter ce code dans .vimrc :

map <F8> :TlistToggle

Comme vous l’aurez compris, cela permet d’ouvrir la Taglist par la touche F8 : très pratique !

Changer la police d’un terminal Xterm

Sur les écrans LCD récents, leur taille devient de plus en plus grande : 20, 22, voir 26 pouces.
La résolution d’affichage est, elle aussi augmentée en conséquence.

De ce fait, lorsque vous ouvrez votre terminal Xterm, la police est trop petite.
Vous pouvez dans ce cas changer la taille en faisant [Ctrl]+Clic droit.
Ceci fait apparaître le menu VT Fonts.

Paramétrage des fonts sur Xterm

Cela fonctionne bien mais il serait plus confortable de le paramétrer de manière définitive.
Vous pouvez le faire par l’intermédiaire de X resources.
Ce sont les paramètres du serveur X pour les applications. Le fichier se situe dans ~/.Xresources.

Mais il faudra avant tout déterminer la police à utiliser.
On va ici mettre la police Large par défaut.
Pour cela, lancez l’éditeur de ressources :

editres

Une fenêtre apparaît. Aller dans le menu Commands > Get Tree.
Un pointeur en forme de viseur apparaît alors pour vous permettre de sélectionner l’application (la fenêtre) ouverte.
Une fois le clic gauche sur l’application effectué, on observe une arborescence d’éléments.
Faire un clic gauche sur vt100 (sous l’élément xterm) et faire Commands > Show Resource Box.
Faire un clic du milieu sur font5 et la valeur suivante s’affiche sur la zone « Enter Resource Value » :
-misc-fixed-medium-r-normal–18-120-100-100-c-90-iso10646-1

Copier cette valeur puis éditez le fichier ~/.Xresources (ou créez le s’il n’existe pas).
Ajouter la ligne suivante :

XTerm.vt100.font:       -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1

Enregistrez le fichier, puis redémarrez votre session.
Le terminal devrait s’afficher dans la taille Large.

Montage de systèmes de fichiers sous Linux

Le montage de fichiers se fait par la commande mount :
mount -t type /dev/?? /mnt/???

Le type sera iso9660 pour un cdrom, ntfs pour une partition de type windows NT (utilisé sur les versions de windows actuelles), vfat pour les anciens windows 95 ou autres (FAT16 ou FAT32).

Le paramétrage des systèmes de fichiers montés (ou montables) au démarrage de Linux se fait dans le fichier :
/etc/fstab.

exemple pour une partition windows :
/dev/sda1 /mnt/windows ntfs defaults 0 2

Pour les périphériques USB, il faut d’abord identifier le système de fichier (/dev/*). Pour cela, taper la commande :
fdisk -l
Une fois le périphérique connecté (et alimenté élecriquement), cela fera apparaître comme ceci :

Disque /dev/sdg : 1000.2 Go, 1000204886016 octets
255 têtes, 63 secteurs/piste, 121601 cylindres, total 1953525168 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x95ab4e94

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdg1              63  1953520064   976760001    7  HPFS/NTFS/exFAT

Ainsi on pourra monter le disque par la commande :
mount -t auto /dev/sdg1 /media/usbdisk

Sur debian wheezy, le montage automatique d’un système de fichier n’est pas installé par défaut.
Il faut pour cela installer le paquet autofs.

Il faut ensuite paramétrer le fichier /etc/auto.master pour décommenter la ligne

#/misc   /etc/auto.misc

Le premier champ indique le répertoire où seront montés les systèmes indiqués dans auto.misc.

Editer ensuite /etc/auto.misc pour y ajouter le cdrom, le disque externe usb, etc.
Pour un disque externe usb, ceci ressemble à ça :

usbdisk         -fstype=auto,rw,nosuid,nodev    :/dev/sdg1

Pour un périphérique USB, le device (sdg1 ici) peut changer.
Il faut donc identifier le matériel par une dénomination plus précise.
En regardant dans le répertoire /dev/disk/, on voit 4 répertoires :
by-id
by-label
by-path
by-uuid

Ceux-ci contiennent des liens symboliques vers les devices réels (ex: /dev/sdg1).
Un exemple du dossier ‘by-label’ pourrait afficher les liens suivants :
lrwxrwxrwx 1 root root 9 sept. 16 01:24 usb-Toshiba_StorE_HDD_201011290E77-0:0 -> ../../sdg
lrwxrwxrwx 1 root root 10 sept. 16 01:31 usb-Toshiba_StorE_HDD_201011290E77-0:0-part1 -> ../../sdg1

Il est par conséquent plus facile de retrouver le disque Toshiba.
Le lien /dev/disk/usb-Toshiba_StorE_HDD_201011290E77-0:0-part1 sera donc utilisé dans auto.misc à la place de /dev/sdg1

Après avoir modifié auto.misc, redémarrez le service par

service autofs restart

Maintenant vous pouvez faire un essai comme ceci :
ls /misc/usbdisk
Le disque dur sera monté juste avant d’afficher la liste des fichiers.
De la même manière, si vous n’utilisez pas un système pendant un certain temps, il sera démonté automatiquement.

Le démon /etc/init.d/automount se charge de faire toutes ces tâches.

Touche Windows et lanceur d’applications Kickoff

Comment associer la touche « Windows » du clavier au lanceur d’applications KDE Kickoff ?

Lanceur d'applications KDE

  • étape 1
  • trouver le keycode de la touche Windows grâce à la commande xev
    Le nom symbolique Super_L designe la touche windows située à gauche de la barre espace.

    xev|grep Super_L
        state 0x0, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
        state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,

    Notre keycode est donc 133.

  • étape 2
  • ajouter un script au démarrage de KDE pour mapper le keycode à la touche F13
    Dans ~/.kde/Autostart/toucheWindows.sh, ajouter :

    #!/bin/bash
    xmodmap -e 'keycode 133 = F13'

    puis autoriser l’exécution du script :

    chmod +x ~/.kde/Autostart/toucheWindows.sh
  • étape 3
  • Faire un clic droit sur le bouton bleu du lanceur d’application, puis sur ‘Configurer : Lanceur d’application’. Sélectionner ensuite l’icône ‘Raccourci clavier’ puis cliquer sur la zone de saisie du raccourci.
    Vous devrez à ce moment là taper sur la touche Windows qui fera apparaître ‘F13′ à l’écran. Notre mapping clavier fonctionne donc bien.
    Enfin, valider par OK.

    NB: Sans ce mapping, lorsqu’on tape la touche Windows, KDE attend l’appuie sur une autre touche en simultané car la touche Windows est considérée comme une touche méta.

    Brother DCP130C (imprimante+scanner) sur Debian

    Télécharger les pilotes Brother DCP130C sur brother.com.
    Version Anglaise pour Debian.
    Choisir le Driver Install Tool qui inclus les pilotes de l’imprimante et du scanner.
    Dégzipper le fichier et exécuter le programme d’install.

    Installer sane et xsane.

    Si la règle udev n’existe pas, créer le fichier /etc/udev/rules.d/40-libsane.rules :
    # Brother scanners
    ATTRS{idVendor}== »04f9″, ENV{libsane_matched}= »yes »

    Vérifier que le service saned tourne.
    Si ce n’est pas le cas, démarrer le service :
    service saned start

    Dans /etc/default/saned, il faudra peut être modifier la ligne RUN=no en RUN=yes.

    Redémarrer la distribution.

    Flash et Linux

    Le support de Flash est maintenant de plus en plus rare sur les diverses plateformes. Cela est d’autant plus vrai sous Linux. Adobe ne fera évoluer Flash sous Linux que sur Chrome, c’est officiellement précisé dans sa roadmap. Pour les autres navigateurs, la dernière version disponible est la 11.2. Il n’y aura donc plus aucune évolution pour ces navigateurs, excepté éventuellement pour des raisons de sécurité.

    Il existe aussi une version de Flash player éditée par la FSF mais elle est loin d’être parfaite…

    Pour installer Adobe Flash player sous Debian (non équipé de Chrome), il faut tout d’abord à ce que la branche contrib soit mentionnée dans les sources. En faisant :
    $ cat /etc/apt/sources.list, on doit obtenir une ligne du style

    deb http://debian.proxad.net/debian/ wheezy main contrib non-free

    Si ce n’est pas le cas, ajouter contrib en fin de ligne.

    Il suffit ensuite de faire

    $ aptitude install flashplugin-nonfree

    Normalement le plugin Flash qui existe ne sera plus utilisé.
    Pour s’en assurer, faire :

    $ update-alternatives --config flash-mozilla.so
    Il existe 2 choix pour l'alternative flash-mozilla.so (qui fournit /usr/lib/mozilla/plugins/flash-mozilla.so).

      Sélection   Chemin                                          Priorité  Ã‰tat
    ------------------------------------------------------------
    * 0            /usr/lib/flashplugin-nonfree/libflashplayer.so   50        mode automatique
      1            /usr/lib/flashplugin-nonfree/libflashplayer.so   50        mode manuel
      2            /usr/lib/gnash/libgnashplugin.so                 10        mode manuel

    Appuyez sur  pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :

    On constate bien que le nouveau plugin est en mode automatique.

    ATI Radeon HD 4350 et Gnome 3

    En voulant installer Debian 7 équipé de Gnome 3 sur un PC équipé d’une ATI Radeon HD 4350, l’environnement du bureau a démarré en mode dégradé (fallback).

    J’ai donc installé le paquet firmware-linux-nonfree comme indiqué dans Howto. L’installation se passe bien, on constate au boot que l’on bascule bien en mode graphique. Mais rien ne change !

    Après un

    dmesg | grep radeon

    on constate ceci :

    [ 6.461986] [drm:r600_ring_test] *ERROR* radeon: ring 0 test failed (scratch(0x8500)=0xCAFEDEAD)

    Après recherche, il semblerait que je ne sois pas le seul.
    Un bug a été remonté sur le serveur X :
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746409

    Si vous avez une solution de contournement je suis preneur.

    Utilisation des fenêtres

    Comme vous avez pu le remarquer lors de l’utilisation de l’aide vim (:help), il est possible de manipuler des fenêtres.
    Dans un premier temps, si vous éditez un seul fichier, puis tapez la commande :split, cela permet d’ouvrir une nouvelle fenêtre. La séparation horizontale est faite par une ligne en inverse vidéo. Le seul fichier ouvert est visible sur 2 fenêtres. Ceci permet par exemple de consulter les déclarations de variables dans une fenêtre, tout en se déplaçant dans la procédure sur l’autre fenêtre.
    Lire la suite

    Pages man

    Accéder aux pages man est aisé sous un shell.
    Il l’est moins sous vim étant donné qu’il faut systématiquement passer par la commande ! pour faire appel à un programme externe (vu dans le sujet précédent).
    :!man printf
    Nous allons donc voir comment accéder de la manière la plus simple et conviviale à cette aide indispensable.
    Lire la suite