filyb.info

mercredi 27 septembre 2006

Touches multimédia pour Amarok sous Gnome

Imaginez que vous venez de passer sous Gnome, mais que vous ne pouvez pas vous passer du lecteur de musique Amarok, car ni Listen, ni Exaile ne font le poids.

Mais contrairement à ces deux derniers, Amarok n'est pas capable d'être affecté par les raccourcis clavier Gnome concernant les lecteurs de médias (Lecture, Pause, etc.). Et - bien sûr - vous avez un clavier avec des touches multimédia, parfaitement gérées par Gnome. Et vous aimeriez que cela fonctionne aussi avec Amarok... Il existe sûrement des solutions consistant à aller récupérer quelque part les codes de ces fameuses touches, et charger un programme au démarrage de la session pour lancer une commande lors de la pression de ces touches - mais pourquoi ne pas plutôt intégrer Amarok dans Gnome en le faisant réagir aux raccourcis de Gnome ?

Pour faire cela, je suis allé fouiner dans le code source d'Exaile, qui est écris en Python. Celui-ci utilise un module python écris en C, nommé mmkeys, qui permet de connecter des fonctions pythons aux raccourcis clavier de Gnome. J'ai donc écris un script Amarok en Python utilisant ce module. Voici la procédure d'installation :

  1. Vous devez installer en premier les programmes suivants : Amarok, Python et PyGTK (paquet python-gtk2 sous Ubuntu). Vous devez aussi avoir dans un coin le fichier mmkeys.so. La façon la plus simple est d'installer Exaile, mon script l'utilise depuis l'installation d'Exaile. Vous pouvez aussi chercher ses sources dans l'archive d'Exaile, et le compiler vous-même (dans ce cas n'oubliez pas de changer le dossier dans le script).
  2. Vérifiez l'existence du dossier des scripts d'Amarok : mkdir ~/.kde/share/apps/amarok/scripts
  3. Téléchargez le script gnomemm.py :

    #! /usr/bin/python
    
    # Path for searching mmkeys
    import sys
    sys.path.append('/usr/share/exaile')
    # Import others modules
    import signal
    import os
    import mmkeys
    import gtk
    
    # amarok mm functions
    def previous(a, b):
        """Go to the amarok previous track"""
        print "prev"
        os.system("dcop amarok player prev")
        
    def next(a, b):
        """Go to the amarok next track"""
        print "next"
        os.system("dcop amarok player next")
        
    def stop(a, b):
        """Stop amarok"""
        print "stop"
        os.system("dcop amarok player stop")
    
    def playpause(a, b):
        """Play or pause amarok"""
        print "play/pause"
        os.system("dcop amarok player playPause")
    
    # misc functions
    def end(signum, frame):
        print 'Script was terminated.'
        sys.exit()
    
    # connect gnome mmkeys to functions
    keys = mmkeys.MmKeys()
    keys.connect("mm_prev", previous)
    keys.connect("mm_next", next)
    keys.connect("mm_stop", stop)
    keys.connect("mm_playpause", playpause)
     
    signal.signal(signal.SIGTERM, end)
    
    gtk.main()
    

    Par exemple par la commande : wget http://filyb.info/prog/sh/gnomemm.py.txt && mv gnomemm.py.txt gnomemm.py

  4. Copiez ce script dans le dossier des scripts d'Amarok : cp gnomemm.py ~/.kde/share/apps/amarok/scripts
  5. Rendez exécutable ce script : chmod +x ~/.kde/share/apps/amarok/scripts/gnomemm.py
  6. Lancez Amarok, allez dans Outils > Gestionnaire de scripts, et lancez gnomemm.
  7. Testez !

Si j'ai le temps et le courrage, je ferai un joli package incluant le fichier mmkey.so, installable dans Amarok depuis internet, tout ça...

vendredi 22 septembre 2006

Notification d'emails pour les utilisateurs de Mozilla Thunderbird, Gnome et d'un ASUS Z92J

Bon, d'accord, ce billet ne s'adresse pas à grand monde... S'il vous est utile, dites-le dans les commentaires, que j'ai l'impression de ne pas l'avoir écrit pour rien (d'un autre côté, mes stats vont très bien, merci pour elles, donc je peux me permettre d'écrire des billets plus pour ma pomme en cas de reformattage que pour the reste of the world).

Donc imaginons que vous utilisez Mozilla Thunderbird sous Linux, avec Gnome (ça marchera aussi sous un autre bureau, mais en utilisant les notification de Gnome, et non celles de, par exemple, KDE), et un ASUS Z92J (peut-être que ça marche aussi avec un autre portable ASUS, je n'en sais rien). Ce que vous voulez : à l'arrivée d'un mail, qu'un petit son vous prévienne, qu'un message affiche le sujet et l'expéditeur du mail, et qu'enfin (très important), la diode correspondante de l'ordinateur s'allume.

Le problème de cette diode est que j'ai bien trouvé des notificateurs d'arrivée des messages, mais aucun pour l'évènement plus de messages non lu pour éteindre la diode. J'ai donc décidé de laisser la diode allumée une minute, avec une temporisation.

Après la théorie, la technique :

  1. Installez l'extension pour Mozilla Thunderbird permettant les notifications : Yamb (dont j'avais déjà parlé).
  2. Installez notify-send, la commande pour lancer des notifications Gnome. Elle correspond au paquet libnotify-bin sous Ubuntu.
  3. Téléchargez le script suivant :

    #!/bin/sh
     
    #############################################################################
    # Mail notification for thunderbird and yamb, using the gnome notifier system
    #############################################################################
     
    subject="$1"
    sender="$2"
    recipients="$3"
    size="$4"
    folder="$5"
    accountType="$6" #(movemail, pop3, imap, nntp, rss)
    accountName="$7"
    body="$8"
    
    # Show notify (using notify-send)
    notify-send "Courriel de $sender" $subject
    
    # Play sound (vous pouvez utiliser un autre son)
    aplay "/usr/share/sounds/pop.wav"
    
    # Switch on the ASUS led for one minute (60 second)
    echo 1 > /proc/acpi/asus/mled
    # Vous pouvez changer la durée d'affichage de la DEL en secondes :
    sleep 60
    echo 0 > /proc/acpi/asus/mled
    

    Vous pouvez, par exemple, utiliser la commande wget http://filyb.info/prog/sh/mail-notify

  4. Copiez ce script dans votre path, par exemple sudo cp mail-notify /usr/bin
  5. Rendez-le exécutable : sudo chmod a+x /usr/bin/mail-notify
  6. Dans Mozilla Thunderbird, rendez-vous dans les préférences de Yamb, et entrez le chemin du script, ici /usr/bin/mail-notify (Vous pouvez aussi en profiter pour désactiver la seconde comme interval pour ne passurcharger votre server mail.)
  7. Appréciez.

Voilà, si vous avez des idées d'améliorations, n'hésitez pas !

mercredi 6 septembre 2006

En vrac

dimanche 3 septembre 2006

Permettre à Amarok de gérer les balados (podcasts) Itunes dans Mozilla Firefox

Vous avez peut-être remarquez sur certains sites des balados (podcasts) utilisant le protocole itpc, pour Itunes Podcast (signalé par cette image : Icône des balados itunes). Si vous désirez que ceux-ci soient ajoutés dans Amarok à l'aide d'un clique dans Mozilla Firefox, suivez la procédure suivante :

  1. Ouvrez une fenêtre/un onglet dans Mozilla Firefox, et entrez l'adresse suivante : about:config.
  2. Faites un clique droit dans la liste, puis Nouvelle > Valeur booléenne.
  3. Entrez comme nom :

    network.protocol-handler.external.itpc

    Et comme valeur True.

  4. Faites un clique droit dans la liste, puis Nouvelle > Chaîne de caractères.
  5. Entrez comme nom :

    network.protocol-handler.app.itpc

    Et comme valeur, l'emplacement de l'exécutable d'Amarok, par exemple :

    /usr/bin/amarok

Désormais, vous pourrez cliquer sur un icône de balados, par exemple celui des émissions de Là-bas si j'y suis. Le balados sera automatiquement ajouté dans Amarok. Notez que la première fois que vous le ferez, un message vous avertira que vous utilisez un logiciel externe. Vous pouvez cocher la case pour que ce message ne s'affiche plus.

jeudi 27 juillet 2006

Restaurer un vieil ordinateur, deuxième partie : le système d'exploitation

Ce billet est la seconde partie d'une série, Restaurer un vieil ordinateur :

  1. Introduction
  2. L'installation du système d'exploitation (billet actuel)
  3. L'installation et les tests d'interfaces graphiques
  4. L'installation et les tests de logiciels (traitement de texte entre autres)

Notre ordinateur n'a, vous l'avez lu dans le billet précédent (sinon, retournez-y), que 4 Mo de mémoire vive, et j'ai l'ambition d'y installer une interface graphique. Donc on oublie Linux + un serveur X. Que reste-t-il ? En effet, pas grand chose à part le DOS.

Le DOS ? Plutôt un DOS !

Car outre MS-DOS (non maintenu depuis 1995), il existe OpenDos (nommé aussi DR-DOS, de SCO ex Caldera - oui, les méchants qui tapent sur Linux - gratuit mais non libre, avec quelques fonction intéressantes comme un multi-tâche bouffeur de mémoire), et surtout... FreeDos ! Ce dernier est libre (licence GPL), et possède aussi des fonctions intéressantes : autocomplétion des noms de fichiers (oui, comme sous Bash), gestion des disques en FAT32, un développement encore actif (une version 1 devrai être disponible incessamment sous peu, ce qui équivaut à une version 10 d'un logiciel propriétaire ;-) ).

A l'unanimité, j'ai donc choisi FreeDos. Celui-ci est disponible sous la forme d'une image de CD-Rom, avec une disquette de démarrage pour les ordinateurs qui ne peuvent démarrer sur un CD-Rom, ou sous la forme d'un pile de disquettes.

Étant plutôt flemmard (c'est le propre de l'informaticien, rappelons-le), je n'avais pas envie de goûter à nouveau au plaisir des installations sur dix disquettes, où vous passez votre temps à sortir-insérer les-dites disquettes dans votre lecteur. Ayant dans mon ordinateur habituel un lecteur CD-Rom ne servant à rien (il avait été mis au chômage par un combo lecteur DVD - graveur de CD), je me suis décidé à le mettre sur le 486...

Je vous passe les détails de l'installation (un conseil cependant : méfiez vous comme de la peste des tresses IDE qui n'ont pas les machins qui empêchent de les brancher à l'envers... parce qu'une fois qu'une tresse est branchée à l'envers sur la carte mère, vous avez beau être sûr du branchement de vos disques, plus rien ne marche !). Une petite information : ne cherchez pas à faire détecter votre lecteur CD-Rom par le BIOS si celui-ci ne prend en charge que des disques dur en IDE. Mettez le comme aucun disque branché (ou none si votre BIOS à l'impolitesse de vous parler dans la langue des Monty Python), cela n'empêchera pas sa détection par les logiciels qui vont bien.

Une fois la bête remontée, on peut passer à l'installation des logiciels proprement dite. J'ai fais le choix de reformater le disque dur (il doit être cependant possible d'installer FreeDos en parallèle avec un autre DOS, je n'ai pas essayé).

On va donc télécharger les images disque du CD-Rom et de la disquette de démarrage (je n'avais même pas l'espoir que le CD-Rom démarre tout seul), sur le site de FreeDos. Notez qu'il existe deux types d'image disque, fdbootcd.iso et fdfullcd.iso, la première ne contenant que l'essentiel, la seconde proposant des logiciels supplémentaires (c'est une distribution, comme pour Linux). L'image fdfullcd.iso n'étant pas disponible pour la version actuel (Beta9 Service Release #2), j'ai pris l'image fdbootcd.iso.

On grave donc l'image du CD à l'aide de votre K3B logiciel de gravure préféré, et on copie l'image de la disquette avec la commande (lancée depuis le dossier où se trouver l'image) :
dd if=fdos1440.img of=/dev/fd0
(Sous Windows, il faut utiliser un sombre utilitaire nommé rawrite.exe... mais utilisez Linux, c'est plus simple :-p )

On démarre ensuite sur la disquette, en plaçant aussi le CD-Rom dans le lecteur, pour la suite.

Un premier menu s'affiche :

  1. FreeDOS Beta9-Service Release 2
  2. Smart Boot Manager (replaces any failing boot-from-cederom BIOS code)
  3. Memtest86+ v1.26 (tests the correctness of your RAM)
  4. FreeDos

On choisi 1 (Attention : les menus vont très vite, appuyez sur une touche (une flèche de direction) dès que vous voyez un menu, pour avoir le temps de lire.

Un second menu (horizontal celui-ci) :

  1. Load XMS driver
  2. SafeMode
  3. Ask me (default)
  4. Himen+Emm386

Il s'agit ici du choix du gestionnaire de mémoire, j'ai choisi le 1 (XMS driver). Je ne suis pas un spécialiste de la mémoire sous dos, si quelque pouvait m'expliquer la différence entre XMS et Himen+Emm386, ça serait gentil :-)

Ensuite, l'ordinateur vous demande en quelle langue doit-il vous parler : le choix est assez restreint, à moins que vous parliez le néerlandais ou le PL (polonais ?), je vous conseille de taper EN.

Quatrième question : quel driver utiliser pour le lecteur CD-Rom ?

J'ai fais le choix 1, c'est-à-dire d'utiliser le driver libre ATAPICDD.SYS développé par le projet FreeDos. Celui-ci n'est pas encore stable, vous l'utiliserez à vos risques et périls, tout ça (mais sur un 486 sans données importantes sur le disques, vous ne risquez pas grand chose...)

Le programme va essayer de charger le driver, et devrai vous dire que tout va bien (il m'est arrivé qu'il me dise que tout allait mal, mais en redémarrant l'ordinateur (CTRL+ALT+SUPPR) ça marchait de nouveau, je ne sais pas si ça vient du driver boiteux ou de mon lecteur de CD-Rom asmathique.

Ensuite (si tout va bien), vous utilisez le choix 0 du nouveau menu pour utiliser le driver précédemment chargé, et... TADAM... vous arrivez face à un nouveau menu !

Dans celui-ci, nous allons rendre une visite à l'invite de commande (prompt, choix 2) pour reformater manuellement le disque (le programme d'installation ne le fait pas tout seul). Cela se fait avec les commandes suivantes (attention ! votre clavier est en QWERTY, donc le a c'est q, le m c'est ?, les deux points c'est m, le / est à droite de votre clavier sur le pave numérique, sinon c'est !) :
format c: /U
pour formater le disque dur. Vous devrez aussi donner un nom à votre disque dur, profitez-en, c'est l'un des rares moments où vous pourrez faire preuve de créativité pendant l'installation (un bon point à celui qui trouve la référence). Chez moi, mon disque se nomme Zeus.

Commande suivante :
sys c:
Cela va permettre à votre disque dur de démarrer. On revient ensuite au menu en entrant la commande...
menu

Dans ce menu, on choisit le choix 1 (Configure FreeDOS Installation settings). Un autre menu s'affiche, commençant par :

  1. Start installation of FreeDOS beta9 (démarrer l'installation de FreeDOS beta9)
  2. Localize language, keyboard and display (choisir la langue, le clavier, et l'affichage)

On va commencer par entrer 2, puis 8 (le nombre correspondant à la France). Miracle, maintenant on a un clavier AZERTY (elle est pas belle la vie ?).

On revient au menu précédent, et maintenant on entre 1. L'installation devrait se dérouler facilement, on vous demandera le dossier où vous voulez installer FreeDos (chez moi c'est c:\fdos, faites de même si vous voulez suivre à la lettre tout ce que je raconte).

Une fois l'installation finie, on retire disquette et CD-Rom, et on redémarre. Notez que le Kernel vous permet d'appuyer sur F5 au démarrage pour ne pas charger les fichiers CONFIG.SYS et AUTOEXEC.BAT, et sur F8 pour vous laisser valider chacune des entrées de ces deux fichiers : ça pourrait vous sauver la vie... un jour.

A la fin de mon installation, je n'avais ni CONFIG.SYS, ni AUTOEXEC.BAT (mais j'ai des doutes sur la fin de mon installation, si quelqu'un peut confirmer...)

Je vais donc vous proposer mes propres fichiers, il vous suffit de les copier coller dans un éditeur, et de les enregistrer sur une disquette (attention, vérifiez que votre éditeur de texte enregistre les fins de ligne au format DOS (CRLF) !)

Les commentaires commençant par rem sont dans mes fichiers originaux, ceux commençant par rem ## ont été rajoutés pour ce billet :

CONFIG.SYS :

rem ## Expliquer au DOS qu'on peut avoir 26 lecteurs, et
rem ## plein de fichiers ouverts
LASTDRIVE=Z
BUFFERS=30
FILES=120
DOS=HIGH,UMB
rem ## Expliquer au DOS comment utiliser la mémoire RAM :
DEVICE=C:\fdos\bin\FDXMS.SYS
rem ## Le driver du CD-Rom, voir explications plus bas
rem FreeDos cdrom driver :
rem DEVICEHIGH=C:\FDOS\bin\atapicdd.sys /d:SHSU001
device=c:\fdos\msdos\oakcdrom.sys /D:SHSU001 
rem ## Le shell à charger. Le paramètre /E donne de la
rem ## mémoire aux variables d'environnement (SET)
SHELLHIGH=C:\COMMAND.COM /E:512 /P

AUTOEXEC.BAT :

rem ## Eviter d'afficher toutes les commandes au 
rem ## démarrage :
@echo off
rem *********** Dos options *******************
rem ## Avoir un prompt digne de ce nom
PROMPT=[superman@world:$p] $$
rem ## Les variables d'environnement pour FreeDos
SET dosdir=C:\FDOS
rem ## Le PATH (pour  c:\programs\dsk2, voir le billet 
rem ## sur les GUI)
PATH %dosdir%\bin;C:\PROGRAMS\DSK2
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
rem ## Les dossiers temporaires, VERIFIEZ QU'ILS 
rem ## EXISTENT !
set temp=%dosdir%\temp
set tmp=%dosdir%\temp
rem ## Le fuseau horaire, utilisé par certains
rem ## programmes comme UNZIP
set TZ=MET-2

rem *********** Devices options ***************
rem ## Le CD-Rom, voir plus bas
C:\FDOS\bin\shsucdx /d:SHSU001,D /C
rem ## Le driver de la souris. Vous pouvez essayer
rem ## d'utiliser ctmouse2, qui prend en charge la
rem ## molette, mais qui fait planter les programmes
rem ## utilisant la souris chez moi.
ctmouse /3
rem ## Mettre le clavier en AZERTY (des fois, ça sert)
LH KEYB FR

rem *********** Un*x-like alias ***************
rem ## Quelques alias, pour se sentir chez soi
set DIRCMD=/w/p
alias ls=dir
rem ## A vous de choisir : fasthelp est plus proche du
rem ## man un*x, à savoir une page d'aide textuelle
rem ## affichée par un pager.
rem ## Mais je préfère help, une aide hypertextuelle avec
rem ## support de la souris
alias man=help
rem alias man=fasthelp
alias cp=copy
alias mv=move
alias cat=type
alias clear=cls
rem ## Le troll du jour :
alias vi=edit
alias vim=edit
alias emacs=edit
alias nano=edit
alias sh=command
alias bash=command
alias rm=del /p
alias diff=fc

rem ## Ignorez les lignes qui suivent avant de lire le
rem ## billet sur les interfaces graphiques
rem *********** Run a GUI (desktop2) **********
dbd

Pour copier ces fichiers depuis une disquette :

copy a:\autoexec.bat c:\
copy a:\config.sys c:\

Pour lancer l'éditeur de texte :
edit

(Si ça ne marche pas, votre PATH n'est pas bien configuré. Entrez : c:\fdos\bin\edit)

A propos du lecteur CD-Rom : j'ai testé le driver fourni par FreeDos (ATAPICDD.SYS, celui qui peut déclencher la fin du monde). Il affiche des signes cabalistiques lors de son chargement et de l'accès à un lecteur CD-Rom, et au final refuse de lire le disque.

J'ai récupéré sur une disquette de démarrage de Windows 98 le driver correspondant à mon lecteur : oakcdrom.sys, que j'ai copié dans le dossier c:\fdos\msdos créé pour l'occasion. Et là, ça marche, tout va bien (avec les bonnes lignes dans le config.sys).

Une dernière étape : maintenant que le lecteur CD-Rom fonctionne, vous pouvez copier le fichier UNZIP.EXE se trouvant sur le CD-Rom d'installation de FreeDos dans votre dossier bin, pour pouvoir par la suite décompresser des archives ZIP par la commande UNZIP fichier.zip. Pour réaliser la copie, utilisez la commande (pensez à l'autocomplétion par la touche tabulation pour les noms de fichiers) :

cp d:\freedos\setup\odin\unzip.exe c:\fdos\bin

(Oui, bon, vous pouvez utiliser copy au lieu de cp si vous n'avez pas mis mes alias...)

Première conclusion :

Nous avons maintenant un système d'exploitation en ligne de commande pleinement utilisable, et presque totalement libre ! La seule entorse à la libritude est le driver de CD-Rom, il faut encore attendre que la version libre soit stabilisée.

- page 4 de 8 -