Pages : 1
#1 Le 04/04/2009, à 18:39
- Coolgeek
changer le titre de la fenetre active
Bonjour a tous !
Je cherche un moyen d'afficher ce que je joue rhythmbox dans la barre de titre de la fenetre active.
j'ai donc chercher sur google et ici mais je n'ai rien trouvé.
je voudrais donc savoir, si c'est possible, comment faire, ou alors, changer la barre de titre (rhythmbox renvoie la chanson jouer via une commande dans un terminal).
Possible via gconf ? compiz ? nautilus ?
Pour info, je suis sous Hardy (8.04) avec compiz d'activé.
Merci
Hors ligne
#2 Le 04/04/2009, à 19:10
- AnsuzPeorth
Re : changer le titre de la fenetre active
Bjr,
avec wmctrl tu pourras peut etre y arrivé (pas garanti, mais ca doit etre faisable )
edit:j'avais pas bien vu "compiz activé", ca risque de pas plaire a wmctrl !
Dernière modification par AnsuzPeorth (Le 04/04/2009, à 19:11)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#3 Le 04/04/2009, à 23:24
- Coolgeek
Re : changer le titre de la fenetre active
merci de ta réponse !
j'ai continuer de chercher suite a ta reponse et j'ai fait ceci :
#!/bin/sh
id_focus_window="0x0`xdpyinfo | grep focus | cut -d, -f1 | cut -d\ -f 4 | cut -d "x" -f2`" # récupération de la fenêtre ayant le focus
id_foc=`echo $id_focus_window | cut -c 1-6` #xdpyinfo renvoyant presque le même ID de fenêtre que le vrai, découpage de l'ID.
id_awk=`wmctrl -l | grep $id_foc`
titre=`echo $id_awk | awk '{
for (i=4; i<=NF;i++)
print $i
}'` #recupération du titre courant de la fenêtre active
titre_song=`rhythmbox-client --no-start --print-playing` # récupération du nom de la chanson en cours
if [ "$titre_song" != "" ]
then
titre_mod=`echo $titre "|" $titre_song` # concaténation des 2
else
titre_mod=$titre
fi
echo $titre_mod
id_win=`echo $id_awk | awk '{ print $1 }'` # récupération du véritable ID de fenetre
echo $id_win
#wmctrl -r $id_win -N "$titre_mod" # modification du nom de la fenetre
xprop -id $id_win -set WM_NAME "$titre_mod" # modification du nom de la fenêtre
dans ce script la, xdpyinfo ne renvoie pas le même ID de fenêtre que xwininfo par exemple...
le titre n'est pas changer sur la fenêtre... je ne vois pas pourquoi ...
Dernière modification par Coolgeek (Le 05/04/2009, à 00:11)
Hors ligne
#4 Le 05/04/2009, à 01:08
- AnsuzPeorth
Re : changer le titre de la fenetre active
Bon..j'y ai jetté un oeil, comme je m'en doutais, c'est pas coton
J'ai remarqué que l'id envoyer par xdpyinfo est presque pareil que l'id nécessaire à wmctrl...!
Il y a un écart de -1 sur le dernier chiffre ! Il sera donc possible de récupérer l'id via xdpyinfo et renommé via wmctrl.
Je pense que ta commande xprop n'est ps valable, je suis nul en anglais, mais j'ai pas l'impression qu'on puisse modifier le nom de la fenêtre avec xprop (en tout cas, j'y suis pas arrivé !).
Mais le truc avec ton script, c'est que tes fenêtres auront n'importe quel nom....tu vas t'y perdre ( a moins d'ajouter le titre en écoute au nom de la fenêtre, il faudra donc le récupérer, le stocker et....galère !).
Tu seras également obligé de boucler a intervalles régulier pour checker le titre en écoute et la fenêtre en focus...ca va pas être économique en ressource tout ca !
rhythmbox n'aurait pas un mode "verbeux" pour récupérer les infos plutôt que de lui envoyer une requête a intervalle régulier (mplayer le fait)?
A la limite, pourquoi pas renommer toutes les fenêtres ? Ca serait plus simple, et finalement, au bout d'un moment, ca sera ce résultat, toutes les fenêtres passées au moins une fois en focus seront renommées.
Sinon, je suis arrivé a un début ! A affiner !
#! /bin/bash
ID_FENETRE=$(xdpyinfo | grep focus | cut -d " " -f4 | tr -d ",")
NB=$(sed 's/^.*\(.\)/\1/' <<< $ID_FENETRE) #j'utilise sed pour recup le dernier caractere, d'autres solutions existe, c'est ce qui m'est venu à l'esprit :)
NB_OK=$((NB-1))
ID_OK=$(sed "s/\(^.*\)./\1$NB_OK/;s/0x/0x0/" <<< $ID_FENETRE)
TITRE=$(wmctrl -l | grep $ID_OK | cut -d " " -f1,2,3,4 --complement) # titre de fenetre a voir si utile !
ECOUTE=$(rhythmbox-client --no-start --print-playing)
wmctrl -i -r $ID_OK -N "$TITRE | $ECOUTE"
exit
Le code c'est du "premier jet" hein...peut mieux faire !
Dernière modification par AnsuzPeorth (Le 05/04/2009, à 01:20)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#5 Le 05/04/2009, à 01:21
- Coolgeek
Re : changer le titre de la fenetre active
le script que j'avais fait était du one shot.
il nécessitait encore du travail pour pouvoir être utilisable.
je test ton script des que je peux
Hors ligne
#6 Le 05/04/2009, à 01:23
- AnsuzPeorth
Re : changer le titre de la fenetre active
Je viens de mieux regarde ton code, en fin de compte, on fait la même chose.....!
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#7 Le 05/04/2009, à 01:30
- Coolgeek
Re : changer le titre de la fenetre active
en remplacant
wmctrl -r $id_win -N "$titre_mod"
par
wmctrl -i -r $id_win -N "$titre_mod"
ca fonctionne !
faut que je vois pour le faire tourner en boucle (daemon ?) et eviter de concatener plusieurs chanson....
Hors ligne
#8 Le 05/04/2009, à 01:39
- AnsuzPeorth
Re : changer le titre de la fenetre active
Pourtant l'id de xdpyinfo n'est pas bonne, faut lui enlever 1 et remplacer 0x par 0x0 ! (edit; je viens juste de voir comment tu t'y est pris )
Sinon, c'est là que tu risque de te faire chi..,, faire un boucle tout en gardant le nom de fichier d'origine, qd tu chek le focus, si modifier.....enfin, ca va etre possible, les cellules grises font juste chauffées un peu
Dernière modification par AnsuzPeorth (Le 05/04/2009, à 01:41)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#9 Le 05/04/2009, à 01:49
- Coolgeek
Re : changer le titre de la fenetre active
pas besoin de garder le titre de base :
titre_pure=`echo $titre | cut -d "|" -f1`
avec ca je recupere le titre de base => le '|' servant de delimiteur !
Hors ligne
#10 Le 05/04/2009, à 01:55
- AnsuzPeorth
Re : changer le titre de la fenetre active
effectivement, c'est simple....
A c't'heure, j'ai un peu le cerf-volant
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#11 Le 05/04/2009, à 01:57
- Coolgeek
Re : changer le titre de la fenetre active
au final cela donne ca :
#!/bin/sh
while true
do
# récupération de la fenêtre ayant le focus.
id_focus_window="0x0`xdpyinfo | grep focus | cut -d, -f1 | cut -d\ -f 4 | cut -d "x" -f2`"
# xdpyinfo renvoyant un ID de fenêtre presque bon (décalage de 1), on tronque l'ID
id_foc=`echo $id_focus_window | cut -c 1-6`
# récupération des infos relative a la fenêtre active grace a celui calculer au dessus
id_awk=`wmctrl -l | grep $id_foc`
# récupération du titre de la fenetre
titre=`echo $id_awk | awk '{
for (i=4; i<=NF;i++)
print $i
}'`
# récupération du titre de la chanson en cours
titre_song=`rhythmbox-client --no-start --print-playing`
# épuration du titre de la fenetre si une chanson avait déjà été afficher
titre_pure=`echo $titre | cut -d "|" -f1`
if [ "$titre_song" != "" ]
then
titre_mod=`echo $titre_pure "|" $titre_song` # si rhythmbox en cours
else
titre_mod=$titre_pure # si rhythmbox arreter
fi
# récupération du veritable ID de la fenetre active
id_win=`echo $id_awk | awk '{ print $1 }'`
# modification du titre de la fenetre
wmctrl -i -r $id_win -N "$titre_mod"
# on effectue l'opération toutes les 10 secondes.
sleep 10
done
a lancer en arrière plan au démarrage d'ubuntu ?
Merci a toi AnsuzPeorth pour m'avoir mis sur la piste de wmctrl !
edit: commentaire dans le code
Dernière modification par Coolgeek (Le 05/04/2009, à 02:40)
Hors ligne
Pages : 1