#1 Le 28/02/2008, à 16:37
- Micnight
Notification aquatique pour Emesene
Bonjour,
Voilà j'ai réussi à modifier les scripts pour la notification aquatique qui se trouvé sur ce topic pour qu'il ne tienne qu'en un seul script :
http://forum.ubuntu-fr.org/viewtopic.php?id=81811&p=1
La notification aquatique permet d'avoir une vague qui part de l'icone du programme qui est dans la zone de notification lorsque l'on recoit un message sur emesene ou pidgin par exemple.
#!/bin/sh
WINFO=`xwininfo -root -tree | grep "$1" | egrep ' ([0-9][0-9])x([0-9][0-9])\+0\+0' | cut -d ')' -f 2-`
WINFO=`echo $WINFO | cut -d 'x' -f 2-`
WINFO=`echo $WINFO | cut -d '+' -f 2-`
WINFO=`echo $WINFO | cut -d '0' -f 2-`
WINFO=`echo $WINFO | cut -d '0' -f 2-`
WIX=`echo $WINFO | cut -d '+' -f 2`
WIY=`echo $WINFO | cut -d '+' -f 3`
WIX=`expr $WIX + 10`
WIY=`expr $WIY + 10`
dbus-send --type=method_call --dest=org.freedesktop.compiz /org/freedesktop/compiz/water/allscreens/point org.freedesktop.compiz.activate string:'root' int32:`xwininfo -root | grep id: | awk '{ print $4 }'` string:'amplitude' double:1000 string:'x' int32:$WIX string:'y' int32:$WIY
volume_actuel=`amixer get PCM | egrep '[0-9][0-9]%' |cut -d '[' -f 2 | sed 2d | sed s/]//g`
amixer set PCM 40%
aplay /home/mic/Musique/bruitage/ocean5.wav
amixer set PCM $volume_actuel
Ce programme trouve l'endroit où se trouve l'icone du programme par lequel on veut envoyer la vague et stock ces coordonée dans WIX et WIY.
Ensuite il envoie une vague a cette endroit.
Pour donner un peu plus de réalisme on envoie un son quasi en même temps. Pour lancer le son de la vague toujours au même volume sonore on enregistre le volume actuelle, on met le volume par exemple ici à 40% , on lance le son puis on remet le son au niveau d'avant.
Le son que j'utilise je l'ai pris ici:
http://www.sound-fishing.net/bruitages/ … OCEAN5.WAV
Vous pouvez appeler ce programme water_notification.
Effectuer les modifications en mettant l'endroit où est votre fichier et si vous ne voulez pas lancer de son en même temps vous pouvez supprimer les 4 dernière lignes du programme.
Maintenant il faut le mettre dans un dossier du PATH en faisant par exemple si votre fichier est dans votre home:
sudo cp water_notification /usr/local/bin/water_notification
maintenant il faut le rendre executable avec un petit :
sudo chmod +x /usr/local/bin/water_notification
Pour l'exécuter vous ouvrez une console et tapez water_notification
Là le programme envoie une vague à partir du coin supérieur gauche. Il faut donc lui spécifier en argument le nom de l'icone qui est dans la zone de notification.
Pour emesene c'est : Controller
Pour pidgin c'est: pidgin
Pour gajim c'est: gajim
Il faut donc avoir emesene ou pidgin d'ouvert si l'on veut executer maintenant le programme:
water_notification Controller
Pour ceux qui utilise pidgin il suffit d'aller dans Outils | Preferences | Sons
puis choisir comme methode Commande et dans commande pour le son mettre
water_notification pidgin
Pour ceux qui sont sur emesene cela ne va pas être aussi simple mais heureusement j'ai une solution:
Alors sous emesene il n'y a pas de plugin qui permet de lancer une commande lorsque on reçoit un message ou autre a ma connaissance. Il y a juste le plugin Son. Celui-ci permet de lancer un son selon les preferences que l'on etablie en faisant:
Options | Plugins | Son | Propriétés
En attendant de mettre en place un véritable plugin j'ai modifié le fichier de ce plugin afin d'exécuter un programme. Le fichier a modifier est /usr/share/emesene/plugins_base/Sound.py.
Avant tout une petite sauvegarde:
sudo cp /usr/share/emesene/plugins_base/Sound.py /usr/share/emesene/plugins_base/Sound.py.backup
Fermer le programme emesene avant toute modification.
Maintenant nous allons modifier quelques lignes du programme:
gksudo gedit /usr/share/emesene/plugins_base/Sound.py
L'indentation est importante en python, les modification doivent être faite exactement à l'alignement où sont déjà les commandes dans le fichier.
Modifier:
ligne 195
self.sound.play(self.sound_theme, 'online')
ligne 212
self.sound.play(self.sound_theme, 'type')
ligne 214
self.sound.play(self.sound_theme, 'type')
ligne 222
self.sound.play(self.sound_theme, 'nudge')
ligne 230
self.sound.play(self.sound_theme, 'send')
par
os.spawnlp(os.P_NOWAIT,"water_notification","water_notification","Controller")
Voilà maintenant emesene va emettre des vagues à partir de son icone selon les options que vous avez cocher dans le plugin Son .
Je ne peux pas encore dire si ces modifications persiste après une mise à jour de emesene.
J'espère pouvoir créer une véritable interface afin d'exécuter différente commande selon les evenements.
Voilà j'espère que vous aussi vous allez appréciez ce doux son des vagues lorsque vous recevez des messages ^^
EDIT du 4 mars 2008 : amélioration de la commande regex pour que ça marche avec gajim
Dernière modification par Micnight (Le 04/03/2008, à 15:48)
Hors ligne
#2 Le 29/02/2008, à 12:03
- Micnight
Re : Notification aquatique pour Emesene
Bon ben après une mise à jour de emesene la modification disparait effectivement...
Il faut donc a chaque mise à jour pour l'instant recopier le fichier modifier de Sound.py
Je dis ça mais remarque pour l'instant la possibilité de lancer une commande dans emesene à la réception d'un message n'a pas l'air d 'intéressé tant de monde que ça...
Hors ligne
#3 Le 03/03/2008, à 17:03
- Sleeper
Re : Notification aquatique pour Emesene
Pourquoi ne pas proposer tes modifications pour créer un nouveau plugins ou renomer le plugin "son" en "évenement" qui proposerai de jouer un son ou lancer un programme à la réception d'un message ?
Intel Core i5 750 : 4Go DDR : HD 2To : ATI HD4850 1Go DDR3 : SyncMaster 226bw
Pourquoi choisir GNU/Linux ? : Les commandes de base
Openbox : sur Ubuntu ou Debian, le tout en un script.
Hors ligne
#4 Le 03/03/2008, à 19:05
- Micnight
Re : Notification aquatique pour Emesene
Ben pour l'instant comme je le dis sur le premier post les modifications sont directement dans le fichier donc la commande que l'on veut exécuter est marqué directement dans le fichier.
Il faudrait que je crée une autre interface totalement qui pour chaque événement permet de choisir entre lancer un son ou une commande qu'on saisit.
Si d'autre personne sont prête à m'aider pour réalisé cette interface en pygtk j'accepte volontié...
Hors ligne
#5 Le 04/03/2008, à 10:59
- Jean_luc1
Re : Notification aquatique pour Emesene
Bonjour,
Je cherche à faire la même chose avec Gajim ? Est ce possible ?
D'avance merci
#6 Le 04/03/2008, à 12:07
- Micnight
Re : Notification aquatique pour Emesene
Je sais pas du tout je connais pas gajim , tu veux faire quoi sur gajim? lancer une commande quand tu recois un message ou alors tu veux la notification aquatique??
Est-ce que en fait avec gajim on peut lancer une commande...
Hors ligne
#7 Le 04/03/2008, à 13:54
- Jean_luc1
Re : Notification aquatique pour Emesene
ou alors tu veux la notification aquatique??
Oui c'est ça
Il est possible de faire jouer un son, et il y a une ligne pour indiquer le programme a utiliser (chez moi actuellement : "aplay -q"
Si je fais : /usr/local/bin/water_notification j'ai bien la vague dans le coin en haut a gauche
J'ai lancé : "/usr/local/bin/water_notification gajim" mais sans résultat, la vague est toujours en haut a gauche...
#8 Le 04/03/2008, à 15:01
- Jean_luc1
Re : Notification aquatique pour Emesene
Bon j'ai des nouvelles
En remplaçant la commande "aplay -q" par "water_notification" dans gajim ça a l'air de fonctionner, il me reste juste un souci c'est pour trouver le nom de l'icône dans le systray :
gajim = ko
gajim.py = ko
Comment faire pour trouver l'argument du nom de l'icône qui est dans la zone de notification ?
#9 Le 04/03/2008, à 15:32
- Micnight
Re : Notification aquatique pour Emesene
Coucou ^^
J'ai vu ton message depuis toute à l'heure mais j'ai galéré pour rechanger mon programme il était en effet pas compatible avec l'icone qu'il utilise pour gajim.
La commande en fait qui trouve l'endroit de ton programme dans la zone de notification c'est:
xwininfo
Alors il faut lui mettre tout plein d'argument pour trouver ce qu'on veut c'est ça le plus difficile ^^ et c'etait mes options qu'y n'allait pas maintenant y faut remplacer donc la première ligne du script après
#! /bin/sh
par:
WINFO=`xwininfo -root -tree | grep "$1" | egrep ' ([0-9][0-9])x([0-9][0-9])\+0\+0' | cut -d ')' -f 2-`
Pour voir dans une console le nom qu'y faut utilisé tu peu taper:
xwininfo -root -tree | grep "$1" | egrep ' ([0-9][0-9])x([0-9][0-9])\+0\+0'
Tu vois le nom de tout les icones situé dans les differentes barre de gnome-panel comme la corbeille ou les différents applets que t'as rajouté...
Certain sont noté "has no name" dans ce cas il faut prendre le numero 0x... à gauche pour les appelé avec le programme
Pour gajim donc pas la peine de chercher une fois que t'as remplacé la ligne que je marque du dessus tu peux mettre comme commande dans gajim::D
water_notification gajim
Voili voilou
Dernière modification par Micnight (Le 04/03/2008, à 15:42)
Hors ligne
#10 Le 04/03/2008, à 16:18
- Jean_luc1
Re : Notification aquatique pour Emesene
Merci beaucoup c'est nickel
Ça fonctionne même avec d'autre programme (xchat) !!
#11 Le 04/03/2008, à 16:25
- Micnight
Re : Notification aquatique pour Emesene
De rien
Oui normalement ça fonctionne avec nimporte quel programme il faut juste réussir à trouver le bon nom ou le bon numero en 0x comme t'as pu voir ^^
Hors ligne
#12 Le 04/03/2008, à 16:38
- Fractal
Re : Notification aquatique pour Emesene
Bonjour
Quand j'essaye d'exécuter ton script, le terminal me répond " expr: erreur de syntaxe "
Comment cela se fait-il?
Fractal
Hors ligne
#13 Le 04/03/2008, à 17:23
- Micnight
Re : Notification aquatique pour Emesene
Quand tu execute le script sans argument tu lui demande donc de cherché un icone se nommant "" , en gros rien dans la zone de notification, donc quand le script essaye d'ajouter 15 au coordonée de l'icone avec expr ben ça met une erreur vu qu'il n'y a pas d'icone...
Ca a dû te lancer une vague à partir du coin supérieur gauche... ou dans un endroit un peu aléatoire...
Si tu le lance avec par exemple:
"water_notification nm-applet" ça va lancé à partir de l'icone de network manager
ou encore "water_notification mixer" pour à partir de l'icone du son
ou même "water_notification trash" pour à partir de la corbeille
Voilà ...
Dernière modification par Micnight (Le 04/03/2008, à 17:24)
Hors ligne
#14 Le 04/03/2008, à 17:32
- Fractal
Re : Notification aquatique pour Emesene
Oki
Il ne me met plus d'erreur mais ne fait pas de vague...
Enfin, ça doit sans doute être du au fait que ma carte graphique est assez moyennement reconnue, elle refuse déjà d'activer les effets de bureau d'Ubuntu.
Fractal
Hors ligne
#15 Le 04/03/2008, à 17:46
- Micnight
Re : Notification aquatique pour Emesene
Ah ui afin d'avoir l'effet de la vague il faut avoir les effets de compiz fusion d'activer.
Et dans compiz fusion il faut avoir le plugin dbus et effet d'eau d'activer...
Hors ligne
#16 Le 05/03/2008, à 22:06
- invasiondivine
Re : Notification aquatique pour Emesene
allo
bravo, ça fonctionne très bien sur mon emesene
et merci.
M
Hors ligne
#17 Le 08/03/2008, à 00:55
- Fractal
Re : Notification aquatique pour Emesene
Effectivement, ça marche très bien avec Compiz activé
Ceci dit, j'aimerais proposer une modification mineure (ne sachant pas programmer en BASH ) qui serait que lors de l'appel de la fonction, on puisse également spécifier le chemin d'accès du son émis, par exemple
water_notification pidgin /home/mic/Musique/bruitage/ocean5.wav
ceci afin de pouvoir distinguer plusieurs sons suivant l'événement : nouvelle conversation, connexion d'un contact, déconnexion, etc.
Merci d'avance
Fractal
Hors ligne
#18 Le 08/03/2008, à 19:15
- Micnight
Re : Notification aquatique pour Emesene
Salut,
Désolé j'ai pas vu ton message avant. Bon alors les modifs sont pas très dure j'ai pas testé mais ça devrais fonctionné sans trop de problème tant que le chemin d'accès est sans espace je pense.
Alors d'abord il faut modifié le fichier /usr/local/bin/water_notification
Tu change la ligne qui permet de lire le fichier:
aplay /home/mic/Musique/bruitage/ocean5.wav
en
aplay "$2"
Après si t'es sur Emesene il faut modifier le fichier Sound.py ,il faut remplacer
os.spawnlp(os.P_NOWAIT,"water_notification","water_notification","Controller")
par:
os.spawnlp(os.P_NOWAIT,"water_notification","water_notification","Controller","/home/mic/Musique/bruitage/ocean5.wav")
Et en dehors de ça pour tester en console ou comme commande dans pidgin un simple
water_notification pidgin /home/mic/Musique/bruitage/ocean5.wav
te permettra de voir si ça fonctionne
Sinon pour pouvoir appliqué ça a différent evenements dans Emesene il faut juste reprendre par rapport aux lignes que je signale dans mon premier post de ce topic sur les différentes commande à remplacer, j'ai pas fait de test mais par exemple quand la commande était:
self.sound.play(self.sound_theme, 'online')
ça devait être pour une nouvelle connection
ou encore self.sound.play(self.sound_theme, 'nudge')
pour les wizz
il faut que tu remplace à chaque fois par
os.spawnlp(os.P_NOWAIT,"water_notification","water_notification","Controller","chemin du son approprié pour l'evenement")
Voilà j'espère que c'est clair et que ça va marché
Dernière modification par Micnight (Le 08/03/2008, à 19:24)
Hors ligne
#19 Le 08/03/2008, à 19:38
- Fractal
Re : Notification aquatique pour Emesene
Ca marche ! :)
Merci beaucoup
Fractal
Hors ligne
#20 Le 24/03/2008, à 20:13
- Micnight
Re : Notification aquatique pour Emesene
Mise à jour du programme:
Suite à une modification du logiciel Emesene maintenant il faut appeler le programme :
water_notification avec emesene la commande maintenant est donc plus logique qu'avance c'est :
water_notification emesene
Hors ligne
#21 Le 25/07/2008, à 20:36
- lnxvsxp
Re : Notification aquatique pour Emesene
Salut et Merci pour ce programme mais j'ai une petit erreur (ou bien 2):
/home/ocean5.wav: Aucun fichier ou dossier de ce type
Et voici la 2eme:
Le peripherique est occupé
Comment faire?
Hors ligne
#22 Le 26/07/2008, à 00:36
- Ch3mist
Re : Notification aquatique pour Emesene
Salut,
@lnxvsxp, tu n'as surement pas le son dans ton home.Télécharge un son sur http://www.sound-fishing.net dans ton home et dans le script de Micnight edit l'avant dernière ligne en indiquant le chemin de ton son.
Par contre moi j'ai un autre problème, sa marche nikel sauf que j'ai pas de son quand je test le script j'utilise pidgin.
Help!merci
http://target0.be/madchat/esprit/pactedesgnous_divx.avi
Jabber : ch3mist@jabber.ubuntu-fr.org
Hors ligne
#23 Le 26/07/2008, à 11:37
- Ras'
Re : Notification aquatique pour Emesene
j'ai bien envie de tester ça sous pidgin, surtout depuis cette dernière version nulle qui ne met même pas la barre des taches en orange à la réception d'un message :\
Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
Les types awesome n'ont rien à prouver. À personne.
'k bye là
Hors ligne
#24 Le 26/07/2008, à 16:05
- lnxvsxp
Re : Notification aquatique pour Emesene
Ca va merci a tous merch Ch3mist ca marcher mais le son rester tres bas je peux pas entendre le son que je j'ai mis k'au 60% du son et plus.
Mais l'important que ca marché..........et si on veux faire des sons divers,comment faire?
Hors ligne
#25 Le 03/08/2008, à 13:44
- Micnight
Re : Notification aquatique pour Emesene
Pour des sons divers je ne sais le faire que sous Emesene, sous pidgin connait pas.
Pour emesene il faudrait changer le script du fichier water_notification en remplaçant :
aplay /home/mic/Musique/bruitage/ocean5.wav
par
aplay $2
et maintenant dans les différents appel à la fonction water_notification dans le fichier Sound.py de Emesene selon les cas, genre ligne 222 c'est marqué nudge donc c'est quand tu reçoit un wizz tu change par:
os.spawnlp(os.P_NOWAIT,"water_notification","water_notification","Controller","chemin_vers_ta_musique_quand_tu_recois_un_wizz")
Ensuite les différents probleme de son peuvent venir du fait que dans mon script je regle à 40% le son mais pour le canal "PCM"ou je sais pas comment on appelle ça avec :
amixer set PCM 40%
et
amixer set PCM $volume_actuel
il faut remplacé PCM par le canal que tu utilise c'est généralement celui que t'as mis pour régler le son dans le controleur de volume de la barre du haut.
Cela peut être:
Master
PCM
Front
J'ai dû moi même changé en Master quand je suis passé à Hardy.
De plus certaine version de Emesene doivent être appelé avec le mot "Emesene" et pas "Controller" pour avoir les ondes qui parte bien de l'icone.
Enfin j'ai remarqué que mon script créer beaucoup de processus zombie car je ne fermé pas le processus de water_notification à chaque appel.
Donc pour changé cela dans le fichier Sound.py après chaque appel à :
os.spawnlp(os.P_NOWAIT,"water_notification","water_notification","Controller")
vous devez mettre :
os.waitpid(-1,os.WNOHANG)
Hors ligne