1337 mplayer
Wer braucht schon eine hässliche GUI um Musik abzuspielen? Ich nicht. Darum läuft meine Musik in aller Regel mit mplayer - und zwar in der Kommandozeile. Einzig die Steuerung gestaltet sich manchmal etwas umständlich. Während sich Amarok und Co. gerne in Form kleiner Symbole auf allen Arbeitsplätzen schnell bedienen lassen, muss man zur Interaktion mit Mplayer stets in das passende Shell-Fenster wechseln. Doch Linux wäre nicht Linux, wenn sich dieses Problem nicht elegant hacken ließe.
Das Ziel: Mplayer soll, wenn einmal in irgendeiner Shell gestartet, über meine Multimediatasten an der Tastatur bedient werden können. Egal, welches Fenster gerade den Fokus hat.
Der modulare (und chaotische) Aufbau Mplayers erlaubt da eine Lösung: Zuerst muss man eine Schnittstelle schaffen, die die Befehle an Mplayer weitergibt. Ein FIFO bietet sich dafür an:
mkfifo ~/.mplayer/mplinput
Danach sollte man Mplayer sagen, dass es als zusätzlichen Eingabekanal diesen FIFO verwenden soll. Das geht sehr gut mit einem Eintrag in ‚/etc/mplayer‘ oder besser in ‚~/.mplayer/conf‘:
input=file=/home/benutzername/mplayer/mplinput
Die Variable ~ kann von Mplayer wohl nicht aufgelöst werden, darum muss der Pfad hart kodiert sein. Ab dem nächsten Start lauscht Mplayer also an der FIFO auf neue Befehle. Die werden elegant mit einem echo-Befehl dort hineingeschrieben:
echo "pause" > ~/.mplayer/mplinput
echo "pt_step 1" > ~/.mplayer/mplinput
echo "pt_step -1" > ~/.mplayer/mplinput
Der erste Eintrag pausiert die Musikausgabe, die beiden anderen springen ein Musikstück weiter oder zurück. Weitere Funktionen lassen sich durch intensive Lektüre der Man-Page mehr oder weniger schnell erraten.
Nun müssen diese Befehle noch auf Tastendruck ausgeführt werden. Wer wie ich spezielle Multimediatasten hat, wird vielleicht mit diesen Zeilen für ‚~/.Xmodmap‘ etwas anfangen können. Eigentlich sollte der Keycode standardisiert sein. Sowohl mein IBM Notebook als auch meine Cherry Tastatur bedienen sich jenen Zahlen für Sondertasten:
keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
Das binden der Tasten an die Befehle sollte am besten dem Windowmanager übertragen werden. Bei Fluxbox etwa müssen folgende Zeilen in ‚~/.fluxbox/keys‘ hinzugefügt werden:
None XF86AudioPlay :ExecCommand echo "pause" > ~/.mplayer/mplinput
None XF86AudioNext :ExecCommand echo "pt_step 1" > ~/.mplayer/mplinput
None XF86AudioPrev :ExecCommand echo "pt_step -1" > ~/.mplayer/mplinput
Wer zudem noch die globale Lautstärke von ALSA kontrollieren möchte, sollte sich ‚amixer‘ (nicht ‚alsamixer‘) anschauen. Die Bedienung gestaltet sich recht einfach.


10. Mai 2007 um 17:23
Hallo,
einen Hacken hat das allerdings: Du musst auf X11 sein damit die Sondertasten gehen (weiter oben klang das danach, als ob du dich gerne in den Teminals aufhältst). Unter Linux ist das nicht nötig — es gibt einen Haufen Programme, die das ganze unabhängig von X11 oder gar windowmanager machen.
zum “Hardgecodeten” home-Pfad: Wieso nutzt du nicht die $HOME-Umgebungsvariable? Läuft üblicherweise auf ~ hinauf.
Grüße, Sven
10. Mai 2007 um 17:44
Jepp. Aber das schöne an der Lösung mit dem FIFO ist ja, dass man einfach nur irgendwie die Befehle reinschreiben muss. Ob das X11, der WM oder eine Anwendung macht ist letzten Endes egal. Der letzte Teil mit dem Mappen der Multimediatasten funktioniert in der Tat nur unter einem X-System – und selbst da gilt die .Xmodmap inzwischen als veraltet.