Technical discussions | Discussions techniques
JSY, Thursday 21 June 2012 à 14:39
|
|
Subscription date : 21 June 2012
Messages : 3
|
Bonjour à tous,
Je suis actuellement en stage dans une clinique où on m'a demandé de développer une applet. Ce qu'il faut que j'arrive à faire, c'est qu'au clic de la souris l'icône de l'applet change instantanément.
Mon problème (et c'est pas le seul) est que je n'arrive pas du tout à créer ne serait ce que l'applet en elle même. J'ai beau avoir lu vos magnifiques tutoriaux et autres docs, je n'arrive à pas grand chose
Avant de se lancer dans la création d'une applet, je voudrais savoir s'il était possible de rafraîchir un lanceur (instantanément et/ou tous les X temps) à l'aide d'une commande Dbus par exemple. En effet, pour le moment j'ai écrit un script bash qui effectue le changement d'icône et ce dernier fonctionne.
Si quelqu'un ici pouvait m'éclairer de sa lanterne ce serait génial car ça fait bientôt une semaine que je rame... |
matttbe, Thursday 21 June 2012 à 15:04
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Re,
C'est quoi cette clinique?
Tout d'abord, ce serait pas mal de savoir quelle version du dock et quelle distribution utilises-tu? Ensuite, en quelle language dois-tu faire cette applet?
Avant de se lancer dans la création d'une applet, je voudrais savoir s'il était possible de rafraîchir un lanceur (instantanément et/ou tous les X temps) à l'aide d'une commande Dbus par exemple Rafraichir? Changer d'icône?
Tu peux utiliser ceci: SEC=10
while true; do
dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock org.cairodock.CairoDock.SetIcon string:/chemin/vers/licone.png string:"class=gnome-terminal"
sleep $SEC
done
Si tu sais coder en bash (même si je te conseille python si ce que l'on te demande devient plus complexe), alors tu peux prendre une applet déjà existante (par exemple demo-bash ou Calendar), tu mets tout le dossier dans ~/.config/cairo-dock/third-party/ et tu modifies le fichier .sh. Après, tu peux utiliser la commande call SetIcon string:/chemin/vers/licone.png string:"class=gnome-terminal" (ou utiliser dbus-send --session (...)) dans la fonction on_click()
Voilà, n'hésite pas à poser tes questions (en donnant ce que tu as déjà fait et suffisament de détails si possible ) |
JSY, Friday 22 June 2012 à 10:15
|
|
matttbe, Friday 22 June 2012 à 12:09
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Il y a plusieurs moyens pour modifier une icône.
D'abord, il faut savoir si tu pars d'une applet ou un lanceur qui lance un script. Si tu ne dois faire que ça, un script peut suffire (cependant, avec une applet, tu peux la mettre en très grand dans un desklet sur le bureau )
Avec une applet (où il y a des fichiers dans ~/.config/cairo-dock/third-party/ton_applet/ dont une icône sous le nom icon), tu peux modifier l'icône et demander à recharger le module avec ReloadModule.
Mais tu peux aussi modifier l'icône avec SetIcon, ce que tu peux utiliser avec un script.
Avec SetIcon, tu peux voir qu'il faut ajouter 2 strings, le premier concerne l'icône (son nom si tu utilises une icône du thème ou un chemin vers elle) et le deuxième, concerne l'icône que tu veux modifier. Tu peux voir ici qu'il y a plusieurs moyens de localiser une icône. Si tu utilises une applet, tu peux utiliser module=ton_applet et pour un script, soit utiliser le nom du lanceur (name=étiquette) ou la commande utilisée pour lancer ton script (command=/chemin/vers/ton/script.sh).
Maintenant, il ne reste plus que la partie pour utiliser la bonne icône, mais je te laisse voir ça (en bash, c'est intéressant d'utiliser des variables globales (export VAR=(...) et unset $VAR) ou des fichiers (ex: touch .is_green, rm -f .is_green et if test -f .is_green; then (...); else (...); fi). L'avantage des fichiers, c'est que ça reste entre 2 sessions (d'un autre côté, si tu utilises un script, il utilisera toujours la même icône au début)
Après, quand tu as fini, tu peux utiliser cette commande: i=0; while test $i -lt 25; do dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock org.cairodock.CairoDock.Animate string:pulse int32:1 string:"container=_MainDock_&position=$i"; sleep .06; i=$((i+1)); done;
PS: tu pourrais même utiliser par exemple du ssh pour commander un autre pc et changer l'icône à distance, mais c'est un peu plus complexe  |
Subscription date : 30 November 2007
Messages : 17118
|
le mieux serait d'avoir la 3.0, où il est beaucoup plus facile de cibler une icône voulue.
mais bon, c'est tout à fait faisable avec la 2.4, il faut juste utiliser une ligne comme ça (ici en bash):
dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock org.cairodock.CairoDock.SetIcon string:firefox-3.0 string:none string:nautilus string:none
ça met l'image de Firefox sur un lanceur Nautilus
les 3 dernières chaines représentent: {icons's name; icon's command; module's name}
en général, la 2ème est la plus utile pour trouver un lanceur, et la 3ème pour trouver une applet. |
matttbe, Friday 22 June 2012 à 12:39
|
|
Subscription date : 24 January 2009
Messages : 12573
|
le mieux serait d'avoir la 3.0, où il est beaucoup plus facile de cibler une icône voulue. Si je me souviens bien, on peut utiliser la nouvelle méthode à partir de la 2.4 (mais d'un autre côté, la 3.0 s'installe facilement en ajoutant notre dépôt ou ppa, mais il faut les droits ). Enfin, c'est ce qu'il est marqué dans le wiki et que la commande que j'ai donnée est sur le forum depuis un petit temps. |
Subscription date : 30 November 2007
Messages : 17118
|
ah bon ? il me semblait que c'était assez récent pourtant
dans le wiki français il y'a encore l'ancienne méthode:
dbus-send --session --dest=org.cairodock.CairoDock /org/cairodock/CairoDock org.cairodock.CairoDock.SetIcon string:firefox-3.0 string:none string:nautilus string:none
il vaudrait mieux corriger, ou passer sur la version anglaise (c'est l'inconvénient avec les pages traduites). |
matttbe, Tuesday 26 June 2012 à 00:11
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Il y a un grand bandeau sur la page en français mais p-ê qu'il faudrait ne laisser que ça, non? |
fabounet, Wednesday 27 June 2012 à 18:04
|
|
Subscription date : 30 November 2007
Messages : 17118
|
à la limite oui, c'est mieux que des infos fausses  |
Subscription date : 02 September 2009
Messages : 539
|
salut,
perso, je ne passerai pas par un applet mais par un script avec en option la <fonction>
exemple :
sh change_etat.sh salle_reveil
si on peut obtenir via DBus le nom/chemin de l'image actuellement utilisé alors si tel image, on met tel autre, sinon ...
si on ne peut pas obtenir le nom/chemin de l'image, un fichier salle_reveil.db avec dedans un chiffre correspondant a un etat et apres, agir en conséquence.
l'interet est simple, tu peux creer autant d'icone que necessaire ( salle de reveil, morgue, salle d'accouchement, sauna, hammam, cafet, ... )
----------
Aujourd'hui, je ne suis pas encore remise d'un accident de voiture survenu la semaine dernière. J'avais très mal à la jambe et on m'a emmenée à l'hôpital, où l'on m'a dit que je pouvais rentrer parce que je n'avais rien. Ce matin, coup de fil de mon médecin, qui a eu les résultats : "Ça va avec le plâtre ?" Quel plâtre ? VDM |
Subscription date : 02 September 2009
Messages : 539
|
re,
bon, je m'ennuyais un peu lol.
donc je suis arrivé a ceci, je pense que cela répond a ton besoin.
donc sous forme de lanceur avec un fichier qui sert de stockage de l'etat.
il faut passer en option a la commande la classe a modifier donc par exemple 'salledereveil'
il creera un fichier de db avec un etat 1 et mettra l image verte
clic dessus, passage du fichier de db a l etat 0 et image rouge
petit cadeau, fichier de log qui enregistre dans un fichier ( fichier daté donc pas trop lourd et facile de rechercher dedans )
un petit log de quel lanceur a ete lancé.
23:25 - [testing] changement d etat : 1
23:25 - [testing] changement d etat : 0
23:25 - [testing] changement d etat : 1
23:26 - [testing2] changement d etat : 1 - Premier Lancement
23:26 - [testing2] changement d etat : 0
23:26 - [testing] changement d etat : 0
23:26 - [testing] changement d etat : 1
23:26 - [testing2] changement d etat : 1
23:26 - [testing] changement d etat : 0
bon, deux choix, soit je fait le salaud et je te file pas le code, soit je te le file. lol
fab et matt auront deja deviné que je vais te le donner avec plaisir
ecrit en Perl ( pas taper, pas taper, pas taper ( hein fab et matt ) ), modifiable a souhait.
lien ici : http://dl.free.fr/vaLQf2PbO
cordialement
Séb
edit : matt et fab, pk j'ai les menus en franglais ? lol
-------------
Aujourd'hui, pendant un stage dans un hôpital, j'assiste à une intervention chirurgicale. J'ai découvert quelque chose de pire que le "oups !" d'une coiffeuse. Le "merde, quel con !" d'un chirurgien. VDM |
matttbe, Saturday 30 June 2012 à 10:11
|
|
Subscription date : 24 January 2009
Messages : 12573
|
edit : matt et fab, pk j'ai les menus en franglais ? Parce que tu ecris tes applets en Perl!
Tu as ça depuis quand? La variable d'environnement LANG est correcte? Pourrais-tu ouvrir un nouveau sujet? |
Technical discussions | Discussions techniques
|