PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rhythmbox aus C Programm steuern - wie? Bonobo?



wurf
21-08-2008, 23:53
Griaß Gott beinand!

Ich bin grad dabei mir eine Fernbedienung fürn PC zu basteln und nun müsste ich irgendwie ein Programm schreiben, das von der seriellen Schnittstelle Befehle empfängt und diese dann an Rhythmbox weitergibt.

Also Pause und Skip wären fürn Anfang mal gut. Ich weiß es gibt ein Lirc Plugin aber meine Fernsteuerung soll später mehr können.

Mein Problem is jetzt nur: Ich könnte zwar über die Kommandozeile 'rhythmbox --next' schreiben aber das ist zu langsam. Es muss doch auch schneller gehn, nur wie?

Hab jetzt bei Google was über Bonobo gelesen, das geht schon in die Richtung - is das gscheit? Kennt sich da wer aus oder weiß eine Seite die macht, dass ich mich auskenn?

Meine Programmierkenntnisse sind leider auf C beschränkt, auch noch etwas Java aber das wirds wohl eh nicht. Würd mich freuen wenn Ihr mir den einen oder anderen Tip geben könntet.

Beste Grüße,
Michael

panzi
22-08-2008, 02:47
Dafür gibt's dbus. Das ist sowas ähnliches wie dcop. Beides sind IPC Protokolle, also Protokolle über die Desktopprogramme miteinander reden können. Rythmbox unterstützt dbus, amarok dcop. (Amarok 2.0 und KDE 4.x wird auch dbus statt dcop verwenden.)

Wie man damit umgeht wird hier erklärt:
http://unmaintainable.wordpress.com/2006/12/10/controlling-rhythmbox-using-dbus/
Dieser Pythoncode hat aber einen Fehler. Es fehlt ein ' in der 7. Zeile und müsste also so aussehn:

#! /usr/bin/env python
import dbus

session_bus = dbus.SessionBus()

proxy_obj = session_bus.get_object(
'org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player')

player = dbus.Interface(proxy_obj, 'org.gnome.Rhythmbox.Player')

print player.getPlayingUri()

Dbus hat natürlich auch eine C API (wird ja auch im kernel verwendet). Ich schätze die wird sehr ähnlich aussehn.

Um mal schnell alle dbus interfaces durchbrowsen zu können gibts z.B. das Programm qdbusviewer (ist bei Qt 4 dabei). Es gibt auch viele commandline tools um dbus Kommandos abzusetzen (dbus-*), nur um zu testen ob was du dann ausprogrammieren willst auch funktioniert.

anda_skoa
22-08-2008, 15:20
Die verschiedene Media Player Projekte haben sich auf ein D-Bus Interface geeinigt, genannt MPRIS:
http://wiki.xmms2.xmms.se/wiki/MPRIS

Allerdings ist es ziemlich unklar spezifierziert, es beschreibt unter anderem nicht, was bei Methodenaufrufen passiert, die auf einem der drei Objekte wenig Sinn machen.
Leider wird von Seiten der Spec Leute jeder Hinweis und Verbesserungsvorschlag ignoriert, man muss also mehr oder weniger mit jedem Player testen.

Ciao,
_