Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Cairo-Dock cafe | Café Cairo-Dock Applet externe en bash avec interface DBus
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)
Cairo-Dock cafe | Café Cairo-Dock

Subjects Author Language Messages Last message
[Locked] Applet externe en bash avec interface DBus
Page : 1 2 3 4
nochka85 Français 72 nochka85 [Read]
10 September 2009 à 15:47

nochka85, Tuesday 01 September 2009 à 18:22


Subscription date : 29 November 2007
Messages : 7408
Bon, pour le filtrage des différentes applets, c'est bon avec les nouvelles fonctions ... J'ai simplement remplacé çà :
SIGNAL="`/usr/bin/dbus-monitor | grep org.cairodock.CairoDock* & sleep $DELAY && killall /usr/bin/dbus-monitor`"

par çà :
SIGNAL="`/usr/bin/dbus-monitor | grep $DBUS_PATH/$APPLET_NAME* & sleep $DELAY && killall /usr/bin/dbus-monitor`"


(j'ai mis à jour le script du 1er post pour ceux que çà intéressent )

... par contre, Fab, je viens de trouver un bug : Si je lance le script une première fois, c'est ok ... PUIS je quitte mon applet : le script me kill un éventuel dbus-monitor restant ET me lance un UnregisterModule. Donc, normallement, je suis revenu au même état qu'avant d'avoir lancé le script (d'ailleurs, l'applet n'apparaît plus dans la config) ! Cependant, si je relance ce dernier, le dock plante et se ferme sans même ouvrir le mode maintenance ( <- cela ne le faisait pas hier )

Voici le debug (je commence au moment où je vais dans le menu pour quitter la première fois) :

cd_dbus_applet_emit_on_build_menu (demo_bash)
message : (cairo-dock-menu.c:cairo_dock_delete_menu:1270)
on force a quitter
message : (cairo-dock-menu.c:cairo_dock_delete_menu:1270)
on force a quitter
debug : (cairo-dock-dialogs.c:cairo_dock_build_dialog:912)
cairo_dock_build_dialog (Vous êtes sur le point d'enlever cette applet (demo_bash) du dock. Sûr ?, /usr/share/cairo-dock/cairo-dock.svg, 0, 808a870, 0 (98bc930;85533f8))
debug : (cairo-dock-draw-opengl.c:cairo_dock_create_texture_from_surface:735)
+ texture 152 generee (98bfa90, 586x17)
debug : (cairo-dock-draw-opengl.c:cairo_dock_create_texture_from_surface:735)
+ texture 153 generee (980aed0, 48x48)
cairo_dock_create_surface_from_image_simple: assertion `cImageFile != NULL' failed
cairo_dock_create_surface_from_image_simple: assertion `cImageFile != NULL' failed
debug : (cairo-dock-draw-opengl.c:cairo_dock_create_texture_from_surface:735)
+ texture 154 generee (9821c00, 35x35)
debug : (cairo-dock-draw-opengl.c:cairo_dock_create_texture_from_surface:735)
+ texture 155 generee (9840ca0, 35x35)
message : (cairo-dock-renderer-manager.c:cairo_dock_set_dialog_decorator_by_name:384)
cairo_dock_set_dialog_decorator_by_name (comics)
debug : (cairo-dock-renderer-manager.c:cairo_dock_get_dialog_decorator:360)
cairo_dock_get_dialog_decorator (comics)
debug : (cairo-dock-dialogs.c:on_enter_dialog:66)
inside
debug : (cairo-dock-dialogs.c:on_enter_dialog:66)
inside
debug : (cairo-dock-dialogs.c:on_enter_dialog:66)
inside
message : (cairo-dock-dock-manager.c:cairo_dock_stop_quick_hide:552)

debug : (cairo-dock-dialogs.c:on_leave_dialog:75)
debut d'attente...
debug : (cairo-dock-dialogs.c:on_leave_dialog:75)
debut d'attente...
debug : (cairo-dock-dialogs.c:on_leave_dialog:75)
debut d'attente...
debug : (cairo-dock-dialogs.c:on_leave_dialog:75)
debut d'attente...
debug : (cairo-dock-dialogs.c:on_leave_dialog:75)
debut d'attente...
debug : (cairo-dock-dialogs.c:on_leave_dialog:75)
debut d'attente...
debug : (cairo-dock-dialogs.c:on_enter_dialog:66)
inside
debug : (cairo-dock-dialogs.c:on_leave_dialog:78)
fin d'attente, bInside : 1

debug : (cairo-dock-dialogs.c:on_leave_dialog:78)
fin d'attente, bInside : 0

debug : (cairo-dock-dialogs.c:on_leave_dialog:78)
fin d'attente, bInside : 0

debug : (cairo-dock-dialogs.c:on_leave_dialog:78)
fin d'attente, bInside : 0

debug : (cairo-dock-dialogs.c:on_leave_dialog:78)
fin d'attente, bInside : 0

debug : (cairo-dock-dialogs.c:on_leave_dialog:78)
fin d'attente, bInside : 0

debug : (cairo-dock-applications-manager.c:cairo_dock_update_applis_list:772)
cairo_dock_update_applis_list (9)
message : (cairo-dock-applications-manager.c:cairo_dock_update_applis_list:780)
cette fenetre (23070618) de la pile n'est pas dans la liste
debug : (cairo-dock-application-factory.c:cairo_dock_create_icon_from_xwindow:405)
cette fenetre est timide
debug : (cairo-dock-applications-manager.c:cairo_dock_blacklist_appli:188)
cairo_dock_blacklist_appli (23070618)

message : (cairo-dock-applications-manager.c:_cairo_dock_remove_old_applis:709)
cette fenetre (23070618, (null)) est trop vieille (0 / 140)
debug : (cairo-dock-dialogs.c:on_leave_dialog:75)
debut d'attente...
debug : (cairo-dock-dialogs.c:on_leave_dialog:78)
fin d'attente, bInside : 0

debug : (cairo-dock-dialogs.c:on_enter_dialog:66)
inside
message : (cairo-dock-dialogs.c:_cairo_dock_get_answer_from_dialog:1496)
_cairo_dock_get_answer_from_dialog (0)
debug : (cairo-dock-dialogs.c:_cairo_dock_isolate_dialog:638)

debug : (cairo-dock-dialogs.c:cairo_dock_free_dialog:692)

message : (cairo-dock-dialogs.c:cairo_dock_show_dialog_and_wait:1553)
on force a quitter
message : (cairo-dock-modules.c:cairo_dock_remove_module_instance:1257)
cairo_dock_remove_module_instance (/home/nochka85/.config/cairo-dock/current_theme/plug-ins/cModuleName/demo_bash.conf)
debug : (cairo-dock-modules.c:cairo_dock_deactivate_module_and_unload:949)
1 instance(s) a arreter
message : (cairo-dock-modules.c:cairo_dock_deactivate_module_instance_and_unload:921)
cairo_dock_deactivate_module_instance_and_unload (/home/nochka85/.config/cairo-dock/current_theme/plug-ins/cModuleName/demo_bash.conf)
cd_dbus_emit_on_stop_module ()
message : (cairo-dock-dock-factory.c:cairo_dock_detach_icon_from_dock:646)
cairo_dock_detach_icon_from_dock (Dbus Applet in Bash)
debug : (cairo-dock-icons.c:cairo_dock_free_icon:60)
cairo_dock_free_icon (Dbus Applet in Bash , (null))
debug : (cairo-dock-dialogs.c:cairo_dock_remove_dialog_if_any:732)
cairo_dock_remove_dialog_if_any (Dbus Applet in Bash)
debug : (cairo-dock-icons.c:cairo_dock_free_icon:72)
icon stopped

debug : (cairo-dock-icons.c:cairo_dock_free_icon:74)
icon freeed

message : (cairo-dock-config.c:cairo_dock_update_conf_file:722)
cairo_dock_update_conf_file (/home/nochka85/.config/cairo-dock/current_theme/cairo-dock.conf)
debug : (cairo-dock-keyfile-utilities.c:cairo_dock_write_keys_to_file:33)
cairo_dock_write_keys_to_file (/home/nochka85/.config/cairo-dock/current_theme/cairo-dock.conf)
message : (cairo-dock-applications-manager.c:cairo_dock_unstack_Xevents:369)
nochka85@nochka85-desktop: ~/Cairo-dock_applets/demo_bash devient active
message : (cairo-dock-animations.c:cairo_dock_start_icon_animation:422)
cairo_dock_start_icon_animation (nochka85@nochka85-desktop: ~/Cairo-dock_applets/demo_bash, 0)
debug : (cairo-dock-modules.c:cairo_dock_free_module:450)
cairo_dock_free_module (demo_bash)
debug : (cairo-dock-modules.c:cairo_dock_deactivate_module:636)
cairo_dock_deactivate_module (demo_bash, /home/nochka85/.config/cairo-dock/current_theme/plug-ins/cModuleName/demo_bash.conf)
debug : (cairo-dock-applications-manager.c:cairo_dock_update_applis_list:772)
cairo_dock_update_applis_list (8)
message : (cairo-dock-modules.c:cairo_dock_activate_module:594)
cairo_dock_activate_module (demo_bash)
message : (cairo-dock-modules.c:cairo_dock_instanciate_module:1077)
cairo_dock_instanciate_module (/home/nochka85/.config/cairo-dock/current_theme/plug-ins/cModuleName/demo_bash.conf)
debug : (cairo-dock-load.c:cairo_dock_fill_one_icon_buffer:358)
cairo_dock_fill_one_icon_buffer () -> 45,00x45,00
debug : (cairo-dock-draw-opengl.c:cairo_dock_create_texture_from_surface:735)
+ texture 150 generee (9921f50, 136x136)
debug : (cairo-dock-draw-opengl.c:cairo_dock_create_texture_from_surface:735)
+ texture 151 generee (985ae68, 165x25)
cd_dbus_emit_on_init_module ()
message : (interface-applet.c:cd_dbus_applet_init:204)

Failed to register GObject with DBusConnection
warning : (cairo-dock.c:_cairo_dock_intercept_signal:175)

** (process:15232): WARNING (recursed) **: Cairo-Dock has crashed (sig 6).
It will be restarted now.
Feel free to report this bug on glx-dock.org to help improving the dock !
aborting...
Aborted


... bref, on voit çà à la fin :
Failed to register GObject with DBusConnection
warning : (cairo-dock.c:_cairo_dock_intercept_signal:175)

** (process:15232): WARNING (recursed) **: Cairo-Dock has crashed (sig 6).
It will be restarted now.
Feel free to report this bug on glx-dock.org to help improving the dock !
aborting...
Aborted


... et voici le ddd :
http://uppix.net/5/f/6/034e2b44288002bf9fb607f717dc8tt.jpg

nochka85, Tuesday 01 September 2009 à 21:03


Subscription date : 29 November 2007
Messages : 7408
... et je vais faire des recherches concernant les callback en bash


Je trouve rien

... par contre, du coup, je me pose une question -> Est-ce qu'on ne pourrait pas lancer depuis le script bash ( <- que le dev ne connaissant QUE le bash modifiera pour créer son applet) un programme en Python (que ce même dev ne touchera pas) pour faire la besogne ? ... ou l'inverse -> Un programme Python "basique" (que le dev ne modifie pas) qui, lorsqu'il y a des signaux Dbus, pointe vers des scripts en bash (ceux que le dev modifie) qui effectue les commandes appropriés ?

... sachant que le but n'est pas forcément de faire une applet "complètement" en bash, mais que la personne ne connaissant QUE ce langage de programmation soit capable d'écrire des applets

Bref, là, je me pose une question fondamentale sur la suite des applets en bash .... Quelle est votre opinion sur le sujet ? (<- concernant la faisabilité de l'une où l'autre des méthode) .... perso, je pense, en ne connaissant rien à Python, que la 2ème méthode pourrait peut être le faire .... reste à voir comment passer des paramètres du programme python vers les scripts bash

PS : Là, j'aurais VRAIMENT besoin des pros de la programmation

EDIT :

reste à voir comment passer des paramètres du programme python vers les scripts bash


Peut être tout simplement avec des paramètres que l'on récupèreraient avec $1, $2, etc... dans le/les script(s) bash ? <- Allez, je me mets au Python ce soir pour voir çà

nochka85, Wednesday 02 September 2009 à 00:37


Subscription date : 29 November 2007
Messages : 7408
Bon, pour le script Python qui pilote 1 ou plusieurs scripts bash ... et bien j'y suis arriver !!! Et çà marche !!! ... donc, je crois que je vais tout remettre à plat et revoir ma copie depuis le début

Donc, je récapitule le nouveau concept :

Créer 1 script Python "standard" que le dev en bash ne touchera JAMAIS + plusieurs scripts (pour chaque notification) voir 1 seul (mais çà risque d'être une usine à gaz ) dans lesquels le dev en bash programmera

@Fab : Est-ce que l'idée t'intéresse ou pas ? ... si oui, j'essaies de faire un premier prototype dès que possible

fabounet, Wednesday 02 September 2009 à 11:54


Subscription date : 30 November 2007
Messages : 17118
donc si je comprends bien tu prend demo.py, et tu lances des scripts bash dont les noms sont fixés à l'avance, et le dev n'à plus qu'à les remplir ?
ouais c'est une très bonne idée, comme ça:
soit on connait le python et on utilise demo.py
soit on conanit mieux le bash et on utilise demo_bash.py

ça me paraît très sympa !

nochka85, Wednesday 02 September 2009 à 11:57


Subscription date : 29 November 2007
Messages : 7408
donc si je comprends bien tu prend demo.py, et tu lances des scripts bash dont les noms sont fixés à l'avance, et le dev n'à plus qu'à les remplir ?


Toutafé ! ... le seul truc un peu plus chiant va être de trouver un moyen de rajouter des entrées au menu ... je m'occuperais de çà en dernier

... bon, bah je me lance alors !

taiebot65, Wednesday 02 September 2009 à 19:48


Subscription date : 26 October 2008
Messages : 1904
Ca te dit pas de creer des applets aussi.. Ok je sors ==>

nochka85, Wednesday 02 September 2009 à 21:02


Subscription date : 29 November 2007
Messages : 7408
Ca te dit pas de creer des applets aussi.. Ok je sors ==>


Chaque chose en son temps .... on fera un concours plus tard

Au fait, Fab, pour le soucis du plantage lorsque l'on lance une 2ème fois l'applet ... les sorties ddd et debug te suffisent ou pas ?

taiebot65, Wednesday 02 September 2009 à 22:10


Subscription date : 26 October 2008
Messages : 1904
on fera un concours plus tard

Pas besoin je suis hors categorie

nochka85, Thursday 03 September 2009 à 13:36


Subscription date : 29 November 2007
Messages : 7408
Bon petit point sur l'avancement de l'applet demo_bash :

J'ai quasi fini : on_click_icon, on_middle_click_icon, on_scroll_icon, on_drop_data, on_init_module, on_stop_module et on_reload_module sont fonctionnels et marchent nickel !!

... bref, il ne me reste que les 2 notifications on_build_menu et on_menu_select à gérer avec des scripts bash ... mais je crois que çà va être coton (<- d'ailleurs, je suis pas vraiment sûr d'y arriver )

nochka85, Thursday 03 September 2009 à 15:03


Subscription date : 29 November 2007
Messages : 7408
@Fabounet : J'ai un soucis pour transformer çà :
def action_on_build_menu():
    print 
"build menu !"
    
applet_iface.PopulateMenu(["choice 0""choice 1"])

(tiré de demo.py)

en simple commande DBus afin de le mettre dans mon script action_on_build_menu.sh .

J'ai essayé de faire çà (entre autre) :

dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock/demo_bash org.cairodock.CairoDock.applet.PopulateMenu string:"choice 0" string:"choice 1"


... mais sans succès !

Dans le tuto, j'ai bien trouvé çà :

You can populate the menu thanks to the PopulateMenu method, which takes a NULL-terminated list of strings as parameter.


... mais c'est (je trouve) super flou ... et je comprends pas trop ce "takes a NULL-terminated list of strings"

... Bref, pourrais-tu m'expliquer ou donner un simple exemple dans le tuto (sous la forme : dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock/demo_bash org.cairodock.CairoDock.applet.PopulateMenu ...) sur ce sujet ?

EDIT:
Ah oui, autre chose : Le Unregister ne marche plus ... c'est normal ? ... et il n'y a rien dans le tuto
... pour info, je faisais çà :
dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock org.cairodock.CairoDock.RegisterNewModule string:"demo_bash"


EDIT 2:
Finallement, j'ai regroupé tous les scripts dans un seul .sh (que l'on nommera comme le .py et le .conf ... et donc, pour la démo : demo_bash.sh) ... cela permet d'avoir une meilleur vue d'ensemble ET de ne pas à avoir à redéclarer les différentes variables (et notament lorsqu'il faudra aller chercher les infos dans le .conf) !

... bref, je n'attends que les 2 questions ci-dessus, et mon demo_bash est fini !

fabounet, Thursday 03 September 2009 à 17:59


Subscription date : 30 November 2007
Messages : 17118
en fait, si je n'ai pas mis d'exemple c'est que je ne sais pas comment faire
regarde peut-être ce qu'un DBus-monitor renvoie quand c'est un tableau de chaine (terminée par une chaine vide )

le unregister je n'arrive jamais à passer dedans car je sais pas sortir de la main loop sans tout tuer
d'ailleurs, même en bash je vois pas trop comment faire ?

nochka85, Thursday 03 September 2009 à 18:06


Subscription date : 29 November 2007
Messages : 7408
en fait, si je n'ai pas mis d'exemple c'est que je ne sais pas comment faire
regarde peut-être ce qu'un DBus-monitor renvoie quand c'est un tableau de chaine (terminée par une chaine vide )


Arf

le unregister je n'arrive jamais à passer dedans car je sais pas sortir de la main loop sans tout tuer
d'ailleurs, même en bash je vois pas trop comment faire ?


Bah en fait, je comptais faire mon unregister dans mon script bash PUIS tué le process du .py (toujours depuis le script bash) ... mais comme je te l'ai dit, la commande dbus pour le unregister ne marche plus <- Tu as changé quelque chose ?

nochka85, Thursday 03 September 2009 à 18:23


Subscription date : 29 November 2007
Messages : 7408
Bon, pour le PopulateMenu, je récupère çà avec dbus-monitor :

method call sender=:1.32158 -> dest=:1.32125 serial=37 path=/org/cairodock/CairoDock/demo_bash; interface=org.cairodock.CairoDock.applet; member=PopulateMenu
array [
string "choice 0"
string "choice 1"
]


... pour info (et pour comparaison), je récupère çà lors d'un scroll up :

signal sender=:1.32830 -> dest=org.cairodock.CairoDock serial=2 path=/org/cairodock/CairoDock/demo_bash; interface=org.cairodock.CairoDock.applet; member=ShowDialog
string "Scroll UP!"
int32 1


... une idée sur ce que je dois rentrer ?

fabounet, Thursday 03 September 2009 à 18:29


Subscription date : 30 November 2007
Messages : 17118
http://lmgtfy.com/?q=dbus-send+array

nochka85, Thursday 03 September 2009 à 19:09


Subscription date : 29 November 2007
Messages : 7408


Je venais de trouver aussi ! (avec man dbus-send)
Bref, la commande est :
dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock/demo_bash org.cairodock.CairoDock.applet.PopulateMenu array:string:"choice 0","choice 1"



(j'ai rajouté l'info dans le tuto à la section on_build_menu )

... Bref, me manque plus que le unregister ...

EDIT : Bon, je corrige ce que j'ai dit sur le unregister ( <- j'avais fait une erreur de frappe :-P) ... bref, la commande est bien :
dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock/ org.cairodock.CairoDock.UnregisterModule string:"demo_bash"

... mais comme signaler plus haut, le soucis c'est que l'icône reste dans le dock (avec juste l'entrée 'cairo-dock' au clic droit) ... mais l'applet s'en va bien de la config. Bref, il manquerait (pour que cela soit plus propre) une commande DBus pour seulement décoché l'applet dans la config (la même chose que lorsqu'on fait 'clic droit'/'Enlever cette applet' ... Comme çà, il suffirait de lancer cette commande PUIS de faire un unregister (PUIS de killer le programme python ) pour avoir un truc de propre


nochka85, Friday 04 September 2009 à 01:21


Subscription date : 29 November 2007
Messages : 7408
Voilà ! L'applet est terminée !

... et je viens de tenter mon 1er commit sur BZR (rev 1279) -> J'espère que j'ai rien cassé !

nochka85, Friday 04 September 2009 à 10:25


Subscription date : 29 November 2007
Messages : 7408
Je viens de modifier le 1er post de ce sujet en y mettant un mini-tuto (je vous colle la même chose ici pour ceux qui auraient la flemme de remontée jusqu'au premier message ) :

Le script ci-dessous est obsolète ! ... la dernière version du script peut se trouver dans la version BZR (cairo-dock-plug-ins/Dbus/demos/demo_bash/) ou encore ici : http://dl.free.fr/f4SUe2eGb
Le fonctionnement est très simple : Copier le dossier demo_bash où bon vous semble puis executez depuis un terminal la commande : ./demo_bash.py -> une nouvelle applet apparaît dans votre dock

Vous connaissez le bash et vous souhaitez développer une nouvelle applet :
      • Copier le dossier demo_bash où vous souhaitez (en attendant qu'un répertoire de lancement automatique soit créé )
      • Renommer votre répertoire comme bon vous semble (ou pas d'ailleurs -> C'est vous qui voyez ! )
      • Renommer les fichiers demo_bash.py, demo_bash.sh, demo_bash.conf pour nommer votre nouvelle applet <- attention, les 3 fichiers doivent avoir le même nom (à l'extension près)
      • Modifier votre fichier nom_de_votre_applet.conf pour modifier les entrées que vous avez besoin
      • Récupérez ces entrées dans votre fichier bash dans la section get_ALL_conf_params() grâce à la commande get_conf_param (voir les exemples déjà présents)
      • Editer le fichier nom_de_votre_applet.sh et ne programmez QUE dans ce dernier en "alimentant" chaque section action_on_quelquechose (le fichier nom_de_votre_applet.py n'est que le lanceur et joue le rôle de "télécommande" pour l'applet ! ... bref, il n'y a rien à modifier en théorie ... et en plus, c'est en Python )
      • Modifiez les 2 paramètres POSITION_IN_CONF (pour placer votre applet dans la section souhaitée) et DESCRIPTION (pour remplir le 'about')
      • Remplacer les 2 images nommée icon et preview par 2 .png de votre choix (<- conserver les même noms ... sans extension)
      • Une fois votre programmation finie, lancer la commande : ./nom_de_votre_applet.py (Terminal , ALT+F2 ou en double-cliquant dessus) -> VOILA !! VOTRE APPLET EST FINIE !

Maintenant, c'est à vous de jouer !

NOTE IMPORTANTE : Vous n'avez pas besoin d'avoir la version BZR et les sources pour créer une nouvelle applet en bash -> La programmation d'applets externes peut être réalisée même avec la version des dépôts (Cairo-Dock 2.1.x ou plus)


... bien sûr, j'invite tout le monde à tester l'applet demo_bash ... et j'attends vos remarques !

@Fabounet : Vu que les 2 applets de demos semblent bien fonctionner (au unregister près ...), je pense qu'il serait temps de créer ce répertoire de lancement automatique ... et ce pour 2 raisons :
      • Avoir un système de création d'applets externes 100% opérationnel afin d'inciter les gens à se lancer ... car là, le lancement du .py est un peu bancal
      • Pouvoir se passer de ce unregister qui nous "emmerde" -> En effet, avec un répertoire de lancement dans ~/.config/cairo-dock/quelquepart , les applets externes se comporteront comme les autres applets ... et à ce que je sache, quand on ne veux pas d'une applet standard, on la décoche ... mais elle apparaît toujours dans la config ! Bref, avec ce système, ce serait la même principe -> le dock lance automatiquement les applets externes se trouvant dans le répertoire dédié et si on ne veut pas l'utiliser, on la décoche de la config ... mais elle reste là (il faudrait géré l'état au lancement par contre ... pour qu'au lancement suivant elle reste décochée ) ... et si on veut définitivement la supprimer, il suffit d'effacer le répertoire de l'applet dans le répertoire de lancement automatique


Bref, avec ce répertoire, le unregister devient sans utilité ET tout est transparent pour l'utilisateur lambda (sauf l'install des futurs applets externes qui ne seront pas fournies avec le dock). En plus, je t'ai simplifié le boulot vu que quelque soit le language (python ou bash), on lance TOUJOURS un programme python

Et, pour finir, je pense qu'il serait pas mal d'avoir ce lancement automatique AVANT de mettre à jour la version stable -> On pourrait "flooder" les forums pour faire appels aux devs python et bash (en créant un petit post avec un message comme dans la box d'info ci-dessus ). Par contre, sans le répertoire, c'est moins accrocheur

EDIT : A oui, j'oubliais -> Juste pour info, c'est EXTRA de développer avec la version bash : Vu qu'on ne touche jamais au .py et que c'est ce dernier qui est executer (le .sh ne sert qu'à lancer des fonctions), on peut faire des modifs en temps réel et SANS RELANCER L'APPLET !!! ... bref, si on veut tester un nouveau truc lors du clic par exemple, et bien il suffit de modifier le .sh , de le sauvegarder PUIS de simplement cliquer sur l'applet qui est déjà lancé pour voir le changement !

matttbe, Friday 04 September 2009 à 12:52


Subscription date : 24 January 2009
Messages : 12573
@ Nochka : pourquoi ne pas mettre ce tuto sur le wiki (sans p-ê publier le lien si tu penses que ce n'est pas encore tout à fait ok) et placer ton fichier soit sur bzr ou sur le ftp du site (pour garder une adresse constante)

nochka85, Friday 04 September 2009 à 13:20


Subscription date : 29 November 2007
Messages : 7408
pourquoi ne pas mettre ce tuto sur le wiki


J'y pensais en fait ... mais j'attends d'avoir quelques retours ... et 2 répertoires de lancement auto (1 dans /usr/share/cairo-dock/plugins/ + 1 dans ~/.config/cairo-dock/ ou ~/.config/cairo-dock/extras ) qui scannent les sous répertoires (ceux des applets) à la recherche des .py

... j'attends ces répertoires car suivant la méthode qui sera utilisée, il faudra peut être faire quelques modifs (notamment pour la gestion de l'état de l'applet au lancement du dock -> coché ou pas coché ).

sans p-ê publier le lien si tu penses que ce n'est pas encore tout à fait ok) et placer ton fichier soit sur bzr ou sur le ftp du site (pour garder une adresse constante)


Bah au retour et aux dossiers prêts, l'applet est terminée et (je pense) largement suffisante et claire pour une applet de démo ( <- on a déjà dépassé le cap du 'Hello World' ! :mrgreen:) ... Bref, dès que c'est bon pour ces 2 choses, je colle tout çà dans le wiki AVEC un tar.gz .
Ok pour mettre sur le ftp (ou sur bzr ... mais je sais pas comment on fait <- tu m'explique ) ... mais en fait, si tout est ok et si Fab est d'accord, je pense que les 2 démos devraient être automatiquement installées dans /usr/share/cairo-dock/plugins/external_plugins_demos/ (et on pourrait créer le répertoire /usr/share/cairo-dock/plugins/external_plugins à coté pour les applets externes intégrées au dock ) ! Bref, je pense qu'on devrait carrément les intégrer dans les .deb afin que TOUS les utilisateurs du dock aient à leur disposition ces 2 démos (vu qu'il n'y a pas besoin des sources pour développer, je pense qu'il ne faut pas s'en priver) ! Donc, cela ferait enlever les démos de l'applet Dbus et créer un "faux" plugins "external_plugins_demos" dans lequel on collerait les répertoires des démos (python et bash) ... Non ?

EDIT:
Tiens, d'ailleurs, je viens de voir un soucis suivant la manière dont on lançait le .py : 'cd demo && python demo_bash.py' , 'python demo/demo_bash.py' ou 'cd demo && ./demo_bash.py' -> corrigé en rev 1280 <- toutes les méthodes fonctionnent désormais

fabounet, Friday 04 September 2009 à 14:11


Subscription date : 30 November 2007
Messages : 17118
et je viens de tenter mon 1er commit sur BZR (rev 1279) -> J'espère que j'ai rien cassé !

justement si
tu as effacé le répertoire demo dans lequel j'avais des modifs, et bzr me boude depuis (donc pas pu commiter mos modif DBus hier)
ce qui me conforte dans l'idée d'avoir une branche par développeur, dans lesquelles je peux puiser les modifs (en cas de changements mineur bien sûr on peut "pusher" direct sur la branche principale)

vais voir comment réparer ma branche (bzr revert ou un truc comme ça)
svn était un peu moins contraignant il me semble.

Cairo-Dock cafe | Café Cairo-Dock

Subjects Author Language Messages Last message
[Locked] Applet externe en bash avec interface DBus
Page : 1 2 3 4
nochka85 Français 72 nochka85 [Read]
10 September 2009 à 15:47


Glx-Dock / Cairo-Dock List of forums Cairo-Dock cafe | Café Cairo-Dock Applet externe en bash avec interface DBus 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.