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 Création d'une applet qui change une icône au clic de la souris sur plusieurs terminal
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] Création d'une applet qui change une icône au clic de la souris sur plusieurs terminal
JSY Français 11 matttbe [Read]
30 June 2012 à 10:11

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


Subscription date : 21 June 2012
Messages : 3
C'est une clinique top cool!

Alors on est sous Ubuntu 11.10 et la version de cairo-dock mis en place est la 2.4.0~2. Il n'y a aucunes contraintes en ce qui concerne le langage à utiliser.

Au clic gauche, on change l'image utilisée comme icône par un bidouillage à base de copier/coller/remplacer (attention ça pique les yeux!) :

if
  
ls /home/chir/script/IconeSalle/bouton-ok.png 
    then
    cp 
/home/chir/script/bouton-annuler.png /home/chir/script/IconeSalle/bouton.png && cp /home/chir/script/bouton-annuler.png /home/chir/script/IconeSalle/ && rm /home/chir/script/IconeSalle/bouton-ok.png
    
else
    
cp /home/chir/script/bouton-ok.png /home/chir/script/IconeSalle/bouton.png && 
    
cp /home/chir/script/bouton-ok.png /home/chir/script/IconeSalle/ && rm /home/chir/script/IconeSalle/bouton-annuler.png
fi


Ensuite il faudrait rafraîchir le lanceur afin que le changement soit effectif et visible immédiatement.

Pour le moment, j'arrive à changer et rafraîchir l'icône d'une autre applet mais du coup il y à deux boutons...
Avant :
http://img835.imageshack.us/img835/4748/avantclic.png
Après :
http://img137.imageshack.us/img137/1795/apresclic.png

Après moult essais d'installer demo_bash, je n'y arrive pas... Je ne sais pas où le mettre (j'ai essayé un peu partout ^^)

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 .06i=$((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

fabounet, Friday 22 June 2012 à 12:30


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.

fabounet, Monday 25 June 2012 à 17:56


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

ours_en_pluche, Friday 29 June 2012 à 18:46


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

ours_en_pluche, Friday 29 June 2012 à 23:41


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é.

http://uppix.net/4/4/4/c5f8179e7428932c0168d9cdae239.png
http://uppix.net/d/4/8/1ca094d1e9e151dd2c3d23376763b.png
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

Subjects Author Language Messages Last message
[Locked] Création d'une applet qui change une icône au clic de la souris sur plusieurs terminal
JSY Français 11 matttbe [Read]
30 June 2012 à 10:11


Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Création d'une applet qui change une icône au clic de la souris sur plusieurs terminal 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.