Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques The new DBus interface to Cairo-Dock
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] The new DBus interface to Cairo-Dock
Page : 1 2 3 4 5
fabounet English 85 ppmt [Read]
10 November 2009 à 04:29

fabounet, Friday 28 August 2009 à 02:57


Subscription date : 30 November 2007
Messages : 17118
Here is the link to the tutorial on this interface Control_your_dock_with_DBus
the interface has 3 parts :
it lets you act on the dock, on the icons, and create new applet from an extern program.

As an exemple, here is what I could do tonight (at the same time, this is my first Python script )

First create a direcory ~/toto.
This will be the data folder of our applet (like /usr/share/cairo-dock/plug-ins/toto usually)
inside, put an image, named "icon" (this will be our default icon, it can be a png, svg, jpg, etc)
and a .conf file (you can copy the .conf of another applet, like logout, just for the test)

Now write the following code in a file "test.py" (convert spaces to tabs if needed), and run
python ./test.py

the miracle should have occured !

### import ###
import sys
import gobject
import glib
import gtk
import dbus
from dbus.mainloop.glib import DBusGMainLoop

### callbacks ###
def action_on_click(cModuleName,iState):
    print "clic !"
    print "cModuleName :", cModuleName, " state : ", iState

def action_on_middle_click(cModuleName):
    print "middle clic !"
    print "cModuleName :", cModuleName

### init ###
def init():
    # let's connect to the dock.
    DBusGMainLoop(set_as_default=True)
    bus = dbus.SessionBus()
    try:
        remote_object = bus.get_object("org.cairodock.CairoDock",
                "/org/cairodock/CairoDock")
    except dbus.DBusException:
        print "Cairo-Dock not found on bus (did you activate its 'DBus' plug-in ?)"
        return
    iface = dbus.Interface(remote_object, "org.cairodock.CairoDock")
    
    # a little test
    iface.ShowDialog("I'm connected to Cairo-Dock !", 3, "none", "none", "none")
    
    # let's register our applet !
    iface.RegisterNewModule("toto", 3, "ceci est une applet distante\n par Fabounet", "~/toto")
    
    # register to the notifications on our applet
    iface.connect_to_signal("on_click_icon", action_on_click)
    iface.connect_to_signal("on_middle_click_icon", action_on_middle_click)
    
    # clean up memory
    del iface
    del remote_object
    del bus

### main ###
if __name__ == '__main__':
    init()
    gtk.main()
    sys.exit(0)


Now it's your turn, young hackers !

ppmt, Friday 28 August 2009 à 16:15


Subscription date : 29 November 2007
Messages : 3520
j'ai teste un peu hier soir mais ca plantait... il se plaignait du nombre d'argument dans la commande dbus....il etait tard donc je verrais plus en detail ce soir

j'allais aussi te dire d'indenter la partie main mais je vois que tu l'as deja fais

matttbe, Friday 28 August 2009 à 16:33


Subscription date : 24 January 2009
Messages : 12573
j'allais aussi te dire d'indenter la partie main mais je vois que tu l'as deja fais
(c'est moi qui ai changé le code car il ne fonctionnait pas chez moi mais j'ai oublié de la préciser )

fabounet, Friday 28 August 2009 à 18:18


Subscription date : 30 November 2007
Messages : 17118
pourtant je l'ai copié-collé du script que je lançais
ptet les tabs qui passent mal ?

matttbe, Friday 28 August 2009 à 19:19


Subscription date : 24 January 2009
Messages : 12573
Si normalement

Mais pas ceux du 'main'

ppmt, Friday 28 August 2009 à 19:35


Subscription date : 29 November 2007
Messages : 3520
et en python il faut attention les indents sont tres important ...il ne pfaut pas melanger les tab et les espaces dans une meme indentation...il n'aime pas

taiebot65, Friday 28 August 2009 à 21:25


Subscription date : 26 October 2008
Messages : 1904
ERROR:dbus.connection:Unable to set arguments ("I'm connected to Cairo-Dock !", 3, 'none', 'none', 'none') according to signature u's': <type 'exceptions.TypeError'>: Fewer items found in D-Bus signature than in Python arguments
Traceback (most recent call last):
File "test.py", line 48, in <module>
init()
File "test.py", line 32, in init
iface.ShowDialog("I'm connected to Cairo-Dock !", 3, "none", "none", "none")
File "/var/lib/python-support/python2.6/dbus/proxies.py", line 68, in __call__
return self._proxy_method(*args, **keywords)
File "/var/lib/python-support/python2.6/dbus/proxies.py", line 140, in __call__
**keywords)
File "/var/lib/python-support/python2.6/dbus/connection.py", line 612, in call_blocking
message.append(signature=signature, *args)
TypeError: Fewer items found in D-Bus signature than in Python arguments


Je sais pas ca marche pas trop a moins que j'ai pas les lib...

matttbe, Friday 28 August 2009 à 21:40


Subscription date : 24 January 2009
Messages : 12573
Pas de problème chez moi... Tu as activé le plug-ins DBus de CD ?

taiebot65, Friday 28 August 2009 à 21:41


Subscription date : 26 October 2008
Messages : 1904
En tout cas ce truc a l'air tout bonnement genial...

Je crois que pour debuter le code y aura rien de mieux pour moi..

taiebot65, Friday 28 August 2009 à 22:12


Subscription date : 26 October 2008
Messages : 1904
Ok ca marche avec la nouvelle revision par contre je crois pas que j'ai le droit a toutes les fonctions ...

Moi j'ai juste le message I'm connected to Cairo-Dock !

Et apres rien du tout. est-ce normal??

matttbe, Friday 28 August 2009 à 22:50


Subscription date : 24 January 2009
Messages : 12573
Tu devrais avoir un nouveau module également (dans Bureau chez moi)

Non, c'est vraiment bien pensé en tout !

@ Fab : Tu ne rajouterais pas une annonce ?

ppmt, Saturday 29 August 2009 à 03:29


Subscription date : 29 November 2007
Messages : 3520
bon pareil pour moi j'avais fais mes tests avant la derniere MAJ donc ca marche maintenant

Il me reste plus qu'a comprendre comment ca fonctionne maintenant

fabounet, Saturday 29 August 2009 à 12:43


Subscription date : 30 November 2007
Messages : 17118
inspirez-vous du wiki
la partie "module externe" n'est pas encore complètement écrite, mais il manque pas grand-chose.
le reste est complet.
yep je ferai une annonce c'est clair, mais avant j'aurais aimé que vous jouiez avec pour voir ce qui pourrait être corrigé/amélioré, et peut-être arriviez à un truc utile pour pouvoir donner des idées à d'autres gens

taiebot65, Saturday 29 August 2009 à 17:01


Subscription date : 26 October 2008
Messages : 1904
Je suis oblige de redemarrer le dock a chaque fois que je tue mon programme y a moyen de faire que le dock voit que le programme a ete tue et qu'il se deconnecte tout seul?

Et comment qu'on lance un programme python dans un lanceur?

taiebot65, Saturday 29 August 2009 à 17:02


Subscription date : 26 October 2008
Messages : 1904
PS j'ai reouvert mon post sur la programmation ....

ppmt, Saturday 29 August 2009 à 18:09


Subscription date : 29 November 2007
Messages : 3520
@taiebot65: Rajoute ca en haut de ton fichier puis rend le executable et apres cun un programme comme un autre

#!/usr/bin/env python

taiebot65, Saturday 29 August 2009 à 18:31


Subscription date : 26 October 2008
Messages : 1904
Marche pas meme quand je double click dessus...

  1. !/usr/bin/env python

taiebot65, Saturday 29 August 2009 à 19:08


Subscription date : 26 October 2008
Messages : 1904
edit ca marche ... merci ppmt

fabounet, Saturday 29 August 2009 à 19:08


Subscription date : 30 November 2007
Messages : 17118
pour l'instant pas de refresh, faut tuer les 2 puis repartir.
j'essaierai de faire qqch pour ça

taiebot65, Saturday 29 August 2009 à 19:11


Subscription date : 26 October 2008
Messages : 1904
ca m'aiderait vachement parce que moi je dois faire mot / mot

Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] The new DBus interface to Cairo-Dock
Page : 1 2 3 4 5
fabounet English 85 ppmt [Read]
10 November 2009 à 04:29


Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques The new DBus interface to Cairo-Dock Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.