Alt+TAB : le sélectionneur de fenêtres ne s’affiche pas de suite.

22 mai 2011

Dans Ubuntu 11.04 (Natty Narwhal), une de ces toutes petites choses mais super chiantes que j’ai rencontrées est que Alt+Tab n’affiche pas le sélectionneur de fenêtres immédiatement, mais avec un petit retard. De précisément 200ms. La vraie vérité, c’est que c’est voulu (c’est ce que j’en déduis en voyant http://www.ubuntuupdates.org/packages/show/302577). Pour s’en sortir, on procède comme suit :

  • Alt+F2 pour lancer gconf-editor
  • Trouver /apps/compiz-1/staticswitcher et la clé « popup_delay » quelque part dans le sous-arbre
  • Mettre à 0 (c’est un délai en seconde)

Effet instantanné il semblerait.

Publicités

Change the default soundcard with ALSA

9 février 2011

J’ai acheté il y a quelques temps des haut-parleurs USB à utiliser à la place du haut-parleur interne. Le souci est que rhythmbox ne me permet pas (en tout cas, pas de manière évidente) de changer quel haut-parleur/carte son utiliser. J’ai donc tenté de suivre ce qui se raconte sur le site de ALSA mais je n’ai pas réussi à trouver le asound.conf qui me permettrait d’y arriver. En dernier ressort, j’ai donc décidé de prendre le fichier global /usr/share/alsa/alsa.conf, de le mettre dans /etc/alsa.conf, et de faire un lien symbolique avec
sudo ln -s /usr/share/alsa/alsa.conf /etc/alsa.conf
pour enfin modifier ledit fichier
sudo sed -i 's/card 0/card 1/' alsa.conf
et voilà, ça marche ! Le numéro de la carte vient de cat /proc/asound/cards.

Une autre technique est de définir la variable système ALSA_CARD.

Je note qu’avant de faire cela, et avant la dernière mise à jour de alsa-lib (maintenant 1.0.24.1), j’avais un fichier /etc/asound.conf qui semblait faire son boulot correctement. Je ne sais pas pourquoi cela ne fonctionnait plus depuis la mise à jour (j’ai évidemment oublié ce que contenait asound.conf exactement avant que je me mette à chipoter, mais cela était grosso modo tiré du lien que j’ai donné vers le site de ALSA).

LDLC C5105

30 janvier 2011

J’ai récemment reçu (offert par moi-même) un nouveau portable : le LDLC C5105, promu à environ 325€ (port compris) ce qui en fait un portable pas trop cher !

J’y ai installé une Ubuntu 10.10 (le 10.4 ne reconnait pas le Touchpad, Google le sait). Cette distribution reconnaît le Touchpad, la webcam, le Wifi et la carte ethernet. Les problèmes que j’ai rencontrés jusqu’à présent sont les suivants :

  • Le logiciel « powertop » (supposé dénoncer les logiciels qui prennent le plus d’énergie) faisait crasher le système. Il se fait que c’est un problème connu dans le driver Realtek de la carte wifi. Ce problème a été réparé, on pourra donc utiliser le dernier driver en date afin de l’éviter. Pour ce faire, j’ai procédé comme suit : installer les paquets build-essential et dkms, télécharger le driver RTL8192SE depuis le site de Realtek et le décompacter dans /usr/src. Cela a créé un répertoire nommé rtl8192se_linux_2.6.0019.1207.2010 que j’ai renommé en rtl8192se-2.6.0019.1207.2010. Dans ce répertoire, j’ai ajouté un fichier dkms.conf contenant ceci :
    PACKAGE_NAME="rtl8192se"
    PACKAGE_VERSION="2.6.0019.1207.2010"
    CLEAN="make clean"
    MAKE="make"
    BUILT_MODULE_NAME="r8192se_pci"
    BUILT_MODULE_LOCATION="HAL/rtl8192/"
    DEST_MODULE_LOCATION="/updates"
    (trouvé sur le « PPA » de Matt Price, dans le package rtl8192se-dkms) puis j’ai fait :

    dkms add -m rtl8192se -v 2.6.0019.1207.2010
    dkms build -m rtl8192se -v 2.6.0019.1207.2010
    # la commande suivante coupe le Wifi.
    rmmod rtl8192se
    dkms install -m rtl8192se -v 2.6.0019.1207.2010
    # la commande suivante le fait refonctionner.
    modprobe rtl8192se

    et voilà, powertop ne crashe plus rien.
  • Grub-legacy (installé via une gentoo) ne voulait pas chainloader le grub2 de Ubuntu. La raison, apparemment, est que j’ai installé Grub2 sur le PBR (Partition Boot Record, par opposition au Master Boot Record (MBR)) d’une partition logique plutôt qu’une partition primaire. La solution fut d’utiliser la commande « kernel (hd0,8)/boot/grub/core.img » au lieu du classique « chainloader +1 », ce qui a pour effet de charger grub2 comme si c’était un noyau de système d’exploitation.

J’ai également voulu installer une Gentoo via son LiveDVD, mais là ça n’allait pas : ni la carte Wifi, ni la carte ethernet ne sont reconnues par le LiveDVD 2010. Il faut donc soit télécharger les fichiers (portage, stage3, noyau récent) et faire une installation « hors ligne », puis mettre le noyau à jour afin de continuer avec les logiciels les plus récents, ou alors faire l’installation depuis la belle Ubuntu que j’avais pris soin d’installer avant… ce que je fis ! Par contre sur Ubuntu, j’ai bizarrement eu plus de mal à faire fonctionner le Wifi et le Touchpad. Le premier semble reconnu (wlan0 existe) mais je n’arrive pas à me connecter à mes réseaux, et le second fonctionne mais son comportement est erratique. Pas encore trouvé de façon de contourner ces écueils.

J’en dirai plus si j’ai plus à dire.

Faisons un peu de mauvaise pub

5 juillet 2010

Alors voilà, j’ai été vendredi passé (le 2 juillet 2010, donc) avec mon joli vélo plié dans le « Copyland » de la Chaussée de Wavre, près du Colruyt et à côté de la VUB, pour y faire reproduire en quelques exemplaires une version d’un travail de fin d’études.

Le jeune homme qui m’a accueilli fut immédiatement fort agréable, s’excusant de ne pouvoir me servir immédiatement. Il m’a ensuite invité à prendre connaissance de la promo à laquelle j’avais droit sans le savoir, et m’a fait comprendre que c’était vraiment une très bonne promo. Il lance une première impression, m’invite à jeter un œil au résultat afin de détecter d’éventuels soucis, puis procède à la suite des impressions.

Et pourtant je ne retournerai plus dans cet endroit. Le prix était raisonnable (moins de 18€ pour 6 exemplaires avec reliure collée, et plastiques de couverture sur document d’une petite centaine de pages), mais l’agréable vendeur a été assez vexé que je m’interroge sur le papier que je devais signer : première fois en dix ans qu’on lui faisait le coup de vouloir lire attentivement ledit papier. J’admets que je n’ai pas compris son étonnement et que cela m’a refroidit. D’autant qu’il était mention de « Bon de commande/ticket de caisse ». J’ai barré la mention « Bon de commande » avant de signer.

Il a également profité d’un moment de silence pour dire qu’il trouvait vraiment incroyable et incorrect que les autres « copyshops » profitent des étudiants en ne faisant même pas de promo. Là encore, j’étais surpris par cette inutile pique envers ses concurrents.

C’est un peu avant de le quitter qu’il m’a signalé que mon vélo (plié, je le rappelle : il prend strictement moins de place qu’une valise) n’était pas non plus le bienvenu. Après avoir –vainement– tenté d’argumenter, ce à quoi il a répondu que je pouvais le laisser dans l’entrée et que c’était déjà pas mal, j’ai fini par l’assurer qu’il ne reverrait plus mon vélo chez lui.

Promesse que je tiendrai donc, mais dont je crains qu’il n’en ait pas immédiatement saisi la (bien pauvre) subtilité.

Manipulation de texte

9 avril 2010

J’avais des manipulations de fichier texte à faire. J’avais un fichier liste qui ressemblait à

012345 - NOM, Prénom
012345 - DEUXIÈME NOM-AUTRENOM, Prénom-Composé

et un fichier usernames, qui ressemble à:

username:x:9999:99999:Prenom Nom:/blah/blah:blah/blah

(format passwd)

Le but : pour chaque ligne de liste, retrouver la personne dans passwd, et rajouter « username » à la fin de ladite ligne du fichier liste.

Étape 1: Virer les lignes vides de liste

sed -i '/^$/d' liste

Étape 2: Transformer liste pour virer le numéro en début de ligne, et mettre Prénom NOM à l’endroit.

awk '{print $3 " " $2}' FS=', | - ' liste

FS = Field Separator : on change de champ quand on rencontre « ,  » ou  » – « … et on les imprime dans l’autre sens.

Etape 3: Trouver un moyen d’analyser le fichier obtenu ligne par ligne.
Je n’ai pas réussi en utilisant la variable IFS de bash pour mettre chaque ligne dans un tableau, mais « read » est venu à mon secours.
Premier jet:

while read line;
do echo $line $(grep -i "$line" usernames | cut -d : -f 1);
done < liste

Problème : dans liste j’ai des accents, pas dans usernames.

Pour contourner ce problème:

tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"

devrait enlever tous ces vilains accents.

Problème : mon système est en UTF8 et tr n’y comprend rien. Par exemple:

echo sàlut | tr à a

renvoie « saalut ». La raison est que « à » est codé sur deux octets, donc pour tr, on a tapé:

echo s12lut | tr 12 a

où 1 et 2 sont les deux octets de « à ».
et tr rallonge ‘a’ pour obtenir:

echo s12lut | tr 12 aa

d’où l’effet.

Pour contourner cela, j’utilise recode. Je dois donc appliquer « recode » aux lignes d’entrée ET à la ligne de remplacement. Bref, au final :

while read line;
do echo $line $(grep -i "$(echo $line | recode utf8..latin1 | tr $(echo "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" | recode utf8..latin1) "aceeeeiioouuACEEEEIIOOUU")" usernames | cut -d : -f 1);
done < liste

(c’est très mal écrit, j’en suis conscient, mais Ça Marche© — si on veut m’écrire ça proprement, je prends !)