Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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  smile)

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 smile

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 smile ( 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.....!
smile


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 smile

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 roll


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