You've got mail !
Par Petaramesh le vendredi 13 juin 2008, 08:48 - Informatique non-duelle - Lien permanent
Les petits veinards qui décident d'installer GNU/Linux sur leur portable ces jours-ci ne se doutent pas de la chance qu'ils ont : La plupart des fonctions de la plupart des portables (veille, hibernation, touches "[Fn]" de réglage de luminosité, de volume...) fonctionnent out of the box sans qu'il soit besoin de rien faire de spécial.
Il n'en allait pas de même il y a quelques années, époque où gérer avec GNU/Linux les spécificités des portables relevait encore de l'exploit.
Il y a cependant quelques petites choses que le linuxien de base ne pensera le plus souvent même pas à essayer de faire marcher, comme par exemple les touches spécifiques situées en dehors du clavier principal, et sur lesquelles on trouve des symboles du genre courrier, navigateur Internet, maison, etc.
Si vous avez un portable Acer Aspire, par exemple, vous avez 4 touches de ce genre à côté du bouton de mise sous tension, l'une d'elles étant la touche courrier qui, si on la regarde bien, comporte même un voyant LED.
Ne serait-il pas sympathique que cette LED clignote quand on a du courrier non lu ?
Nous allons voir dans cet article qu'il n'est franchement pas difficile de contrôler le clignotement de ce voyant, et de l'utiliser pour signaler la présence de nouveau courrier.[1] Pour l'utilisation des touches elles-mêmes, nous verrons peut-être ça dans un prochain article...
Cet article est consacré à un portable de type Acer Aspire 3104 WLMi sous Kubuntu 8.04 Hardy, mais peut également être valable pour d'autres modèles, et même des portables de certaines autres marques qui peuvent aussi être gérés avec les pilotes Acer.
Si vous avez installé Ubuntu Hardy sur un portable Acer, il y a de bonnes chances que le module acer_acpi ait été automatiquement chargé. Si c'est le cas, vous verrez dans le répertoire virtuel /proc un sous-répertoire /proc/acpi/acer contenant divers pseudo-fichiers, dont un fichier "mailled".
# ls -l /proc/acpi/acer/ total 0 -rw-r--r-- 1 root root 0 2008-06-13 08:43 brightness -rw-r--r-- 1 root root 0 2008-06-13 08:43 interface -rw-r--r-- 1 root root 0 2008-06-13 08:43 mailled -rw-r--r-- 1 root root 0 2008-06-13 08:43 threeg -rw-r--r-- 1 root root 0 2008-06-13 08:43 version -rw-r--r-- 1 root root 0 2008-06-13 08:43 wireless
Si vous ne voyez pas ce répertoire, vérifiez avec la commande "lsmod" que le module "acer_acpi" est chargé, sinon tentez de le charger avec la commande "modprobe acer_acpi".
# lsmod | grep acer acer_acpi 18112 0 led_class 6020 1 acer_acpi wmi_acer 9644 1 acer_acpi
Si vous voyez le fichier /proc/acpi/acer/mailled, essayez donc (comme root) :
echo 1 > /proc/acpi/acer/mailledecho 0 > /proc/acpi/acer/mailled
Amusant, n'est-ce pas ?
Nous avons quand même un petit problème : Seul root peut normalement écrire dans ce fichier (donc contrôler la LED), et nous voudrions bien pouvoir l'utiliser pour signaler la présence de courrier pour un utilisateur "ordinaire".
On pourrait envisager de "chmod 666 /proc/acpi/acer/mailled" pour autoriser n'importe quel utilisateur à contrôler la LED, ce qui ne pose pas de problème de sécurité, mais /proc est un système de fichiers virtuel, et ce réglage disparaîtrait au prochain reboot, ou à la prochaine suspension ou hibernation de la machine.
Le plus simple pour contourner ce problème est alors de contrôler la LED via un petit script "/usr/local/bin/mail-led" que l'on appellera à travers "sudo", tout en indiquant à sudo qu'il peut exécuter ce script en tant que root, depuis n'importe quel utilisateur et sans demander de mot de passe. Voici le contenu du script "/usr/local/bin/mail-led" que je vous propose :
# Sets Acer mail LED on or off
#
# Needs to be run as root, use sudo with an /etc/sudoers entry such as:
# ALL ALL=NOPASSWD: /usr/local/bin/mail-led
#
[ $# -eq 1 ] || exit 1
[ -w /proc/acpi/acer/mailled ] || exit 1
case $1 in
0|no|NO|No|off|OFF|Off|false|FALSE|False)
echo 0 > /proc/acpi/acer/mailled
;;
1|yes|YES|Yes|on|ON|On|true|TRUE|True)
echo 1 > /proc/acpi/acer/mailled
;;
*)
exit 1
;;
esac
exit 0
Après l'avoir sauvegardé, rendez-le exécutable pour n'importe quel utilisateur : "chmod 755 /usr/local/bin/mail-led", puis utilisez la commande "visudo" qui appellera votre éditeur de texte standard pour vous permettre de modifier le fichier "/etc/sudoers".
À la fin de ce fichier, rajoutez simplement la ligne :
ALL ALL=NOPASSWD: /usr/local/bin/mail-led
...et sauvegardez.
Essayez alors, depuis un terminal "utilisateur ordinaire" :
sudo mail-led onsudo mail-led off
Ça devrait fonctionner, sans vous demander de mot de passe.
Maintenant que nous pouvons contrôler la LED à l'aise Blaise, il n'y a plus qu'à utiliser l'un des nombreux petits logiciels "notificateurs de courrier" disponibles, pour peu que celui-ci permette d'exécuter une commande arbitraire (pour allumer la LED) quand il détecte du nouveau courrier, et une autre commande (pour éteindre) quand il n'en détecte plus.
Sous KDE, le package "kbiff" fera parfaitement l'affaire. Sous Gnome ou d'autres environnements, vous pouvez utiliser le package "mail-notification".[2] Vous n'avez plus qu'à configurer ce logiciel pour qu'il appelle "sudo mail-led on" pour signaler la présence de nouveau courrier, et, bien sûr "sudo mail-led off" quand il n'y en a plus.

Vous devrez également configurer dans ce logiciel les paramètres de votre serveur de courrier et de votre boîte-aux-lettres, puisque ce logiciel de notification est indépendant de votre "client mail" habituel. (Pour cette raison, il pourra y avoir un décalage entre le moment où vous lisez le courrier et le moment où la LED s'éteindra, puisqu'il faudra attendre que le logiciel de notification revérifie votre boîte pour qu'il se rende compte qu'il n'y a plus de nouveau courrier).
Moi, je trouve ce petit truc super-pratique ;-)









Commentaires
il serait peut-être de bon ton d'interdire ce script en écriture a toute autre utilisateur que root, histoire que des petits malin ne s'en servent pas pour autre chose que son objectif principal, non?
@effraie :
C'est bien le cas avec le "
chmod 755 /usr/local/bin/mail-led" tel qu'indiqué plus haut, faut lire ;-)Quant au fait que n'importe quel utilisateur puisse allumer ou éteindre une LED, je ne pense pas que cela aie de bien grosses implications en matière de sécurité ;-))
@Swâmi
Une attaque contre l'utilisateur, en la faisant clignoter à un rythme qui déclenche des crises d'épilepsie ? :D
@wastedtime : Pour cela, regarder le journal télévisé suffit...
Ca n'a rien a voir avec le billet, mais bon: Vive L'Irlande !
@Walken : Non, non et non ! Trois peuples d'Europe interrogés ont dit NON. Deux d'entre-eux se sont aussitôt fait enfler par leurs gouvernements et députés qui ont trahi la souveraineté populaire sans la moindre vergogne (et mériteraient à l'aise la guillotine pour ça). Attendons de voir comment ils vont enfler le troisième peuple : un petit pays, ça ne devrait pas leur poser trop de problèmes (je ne parle même pas de scrupules...)
Enfin, sur le plan symbolique, c'est une victoire qu'il convient de savourer sans bouder son plaisir, mais il y a fort à parier que les irlandais ont, comme nous, pissé dans un violon...
YES ! Comment remercier ce brave peuple Irlandais ? J'aimerais tellement leur faire savoir ma joie.
Heu sinon, super article :-) Mon portable Toshiba A100-110 tourne impecablement sous Ubuntu 8.04 (en fait presque... le retour du mode veille ne fonctionne pas genial mais bref... c'est loin d'etre grave)
@Arno :
Râle ici ;-)