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...