Technical discussions | Discussions techniques
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
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 : 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 |
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 ? |
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.. |
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  |
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? |
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
|
Subscription date : 26 October 2008
Messages : 1904
|
Marche pas meme quand je double click dessus...
- !/usr/bin/env python
|
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 |
Subscription date : 26 October 2008
Messages : 1904
|
ca m'aiderait vachement parce que moi je dois faire mot / mot |
Technical discussions | Discussions techniques
|