Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: D-BUS a Kaffein (pro dálkové ovládání)  (Přečteno 2400 krát)

MiBo

  • Stálý člen
  • **
  • Příspěvků: 750
  • hello world
D-BUS a Kaffein (pro dálkové ovládání)
« kdy: 09 Října 2009, 08:36:05 »
V 9.10 je používán Kaffein s novým KDE a tím nastává problém nemožnosti používat pro komunikaci s ním DCOM, což bylo velmi praktické při dálkovém ovládání, kdy člověk měl v .lircrc nastaveno pro různé tlačítka volání příkazů jako třeba "dcop kaffeine KaffeineIface quit", ale DCOM byl nahrazen v novém KDE D-Busem a tak se snažím dopátrat správné konstrukce ovládání Kaffeinu přes "dbus-send" příkaz.
Prozatím jsem zjistil, že prohlížení dostupných služeb lze přes příkaz qdbus (z balíku libqt4-dbus) nebo v gui přes qdbusviewer (z balíku qt4-dev-tools),  přes ten qdbusviewer se mi i podařilo vyvolat quit voláním na org.kde.kaffeine MainApplication/org.kde.KApplication/Method: quid, ale neumím toto zatím napsat v příkazovce přes to dbus-send.

Chtěl jsem se tedy zeptat zda někdo umíte ovládat D-Bus přes "dbus-send" (či jiným příkazem, předpokládám ale, že dbus-send by to měl umět, neb sem našel pár konstrukcí s ním pro mplayer) a zda netušíte zda není obdoba qdbusviewer třeba pro gtk (to už jen pro zajímavost, abych tu nepoužíval samé qt věci v gnome).

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: D-BUS a Kaffein (pro dálkové ovládání)
« Odpověď #1 kdy: 11 Října 2009, 03:25:22 »
Protože jsem o D-Bus nicmoc nevěděl, rozhodl jsem se ti pomoci :) A Kaffeine toho zrovna moc neumí, metody, které nabízí zjistíš takto:
Kód: [Vybrat]
dbus-send --print-reply --dest=org.kde.kaffeine /MainApplication org.freedesktop.DBus.Introspectable.IntrospectVýpis je v xml formátu

A ten quit je takto:
Kód: [Vybrat]
dbus-send --print-reply --dest=org.kde.kaffeine /MainApplication org.kde.KApplication.quitTohle by  mělo fungovat i bez printu, ale Kaffeine pak požadavek ignoruje, to zatím nevím, čím je..

MiBo

  • Stálý člen
  • **
  • Příspěvků: 750
  • hello world
Re: D-BUS a Kaffein (pro dálkové ovládání)
« Odpověď #2 kdy: 11 Října 2009, 09:46:24 »
Jej díky ani sem nečekal, že se toho někdo chopí, každopádně toho zřejmě umí víc než říkáš, protože si zkus nainstalovat qbusviewer a zjistíš, že pod org.kde.kaffein není jen MainApplication, ale ještě AudioOutputs, KBookmarkManager, KDebug, KIO, internal a kaffeine. Každopádně teď tedy a co když chci něco co je třeba pod -dest=org.kde.kaffeine /kaffein a ještě  pod "MainWindow_1" konstrukci /kaffein/MainWindow_1 nebere.

Každopádně teď to neber zle, nabídne prst utrhnu palec, ale každá pomoc dobrá, ale i kdyby nic dík za nakopnutí, zde je celá plejáda věcí co šla udělat přes dcop a čistě teoreticky by měla jít přes d-bus opět:
dcop kaffeine KaffeineIface playDvb
dcop kaffeine KaffeineIface pause
dcop kaffeine KaffeineIface dvbOSD
dcop kaffeine KaffeineIface stop
dcop kaffeine KaffeineIface posPlus
dcop kaffeine KaffeineIface posMinus
dcop kaffeine KaffeineIface next
dcop kaffeine KaffeineIface previous
dcop kaffeine KaffeineIface quit
dcop kaffeine KaffeineIface volUp
dcop kaffeine KaffeineIface mute
dcop kaffeine KaffeineIface volDown
dcop kaffeine KaffeineIface fullscreen
dcop kaffeine KaffeineIface zoomIn
dcop kaffeine KaffeineIface zoomOut
dcop kaffeine KaffeineIface setNumber 1
dcop kaffeine KaffeineIface setNumber 2
dcop kaffeine KaffeineIface setNumber 3
dcop kaffeine KaffeineIface setNumber 4
dcop kaffeine KaffeineIface setNumber 5
dcop kaffeine KaffeineIface setNumber 6
dcop kaffeine KaffeineIface setNumber 7
dcop kaffeine KaffeineIface setNumber 8
dcop kaffeine KaffeineIface setNumber 9
dcop kaffeine KaffeineIface setNumber 0

Tož mute v kaffeinu je pod org.kde.kaffeine AudioOutputs/ 0/ org.kde.Phonon.AudioOutput Property: muted a do toho sem poslal (posilam pres ten qdbusviewer prikazove konstrukce si mi sic napovedel ale oni se zrejme i lisi podle toho co delas, nekdy je potreba poslat boolean typ, nekdy string a tak) 1 a dal mute opravdu, akorat ked poslu 0 tak mi stale zustava na mute :(, každopádně škoda, že teď odjíždím na školení do Brna na týden neb na nb mám ještě 9.04.
« Poslední změna: 11 Října 2009, 09:56:12 od MiBo »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: D-BUS a Kaffein (pro dálkové ovládání)
« Odpověď #3 kdy: 11 Října 2009, 12:50:06 »
Jasně, jsem to ale trouba, stačilo se trochu víc zamyslet nad tím objektem, měl jsem jít dřív spát..  Je toho samozřejmě víc:
Kód: [Vybrat]
dbus-send --print-reply --dest=org.kde.kaffeine / org.freedesktop.DBus.Introspectable.Introspect
Dále třeba
Kód: [Vybrat]
dbus-send --print-reply --dest=org.kde.kaffeine /AudioOutputs/0 org.freedesktop.DBus.Introspectable.Introspect

dbus-send --print-reply --dest=org.kde.kaffeine /kaffeine/MainWindow_1 org.freedesktop.DBus.Introspectable.Introspect
atd.

Jenže jak se tak dívám, stejně toho na ovládání přehrávání moc nevidím. Metoda "mute", která by šla jednoduše použít tu také není. Je tu "property muted". Z toho seznamu jsem vydedukoval, že položky "property" by se mohly použít přes metody "Set" a "Get". Je zřejmé že "property muted" nabývá logické hodnoty true/false. Jenže pomocí dbus-send se mi zatím podařilo to jen přečíst:
Kód: [Vybrat]
dbus-send --print-reply --dest=org.kde.kaffeine /AudioOutputs/0 org.freedesktop.DBus.Properties.Get string:org.kde.Phonon.AudioOutput string:mutedAnalogicky bych uvažoval o použití set, ale tam jsem zatím neuspěl a nevím jestli tu nenarážím na limity dbus-send, který neumí využívat všechny možnosti D-Bus.

Jinak zprávy posílané po D-Bus obsahují název služby, název objektu, interface a jméno metody (nebo signálu,..) a její parametry, pokud nějaké jsou. Typ parametru je popsán pro každou metodu a  "d" znamená double, "s" string, "u" uint32, "i" int32, "b" boolean ... Pro ilustraci, když budu chtít třeba po Rhythmboxu (kaffeine jsem prozatím vzdal), aby skočil na druhou minutu právě přehrávané skladby pošlu mu toto:
Kód: [Vybrat]
dbus-send --dest=org.gnome.Rhythmbox /org/gnome/Rhythmbox/Player org.gnome.Rhythmbox.Player.setElapsed unit32:120protože:
Kód: [Vybrat]
<interface name="org.gnome.Rhythmbox.Player">
...
    <method name="setElapsed">
      <arg name="elapsed" type="u" direction="in"/>
    </method>
...
 </interface>

S ovládáním Kaffeine jsem ti tedy moc nepomohl..
« Poslední změna: 21 Listopadu 2009, 16:20:22 od GdH »

MiBo

  • Stálý člen
  • **
  • Příspěvků: 750
  • hello world
Re: D-BUS a Kaffein (pro dálkové ovládání)
« Odpověď #4 kdy: 11 Října 2009, 13:22:38 »
dik, toz za tyden v tom budu take pokracovat, kazde pokus dobre a krom jineho take sem s dbusem jeste nepracoval a ono se to jiste muze hodit

 

Provoz zaštiťuje spolek OpenAlt.