Quelques petits trucs pour wmii

Bonjour!
Je ne sais pas vous, mais pour afficher quelque chose dans wmii, j’ai cette ligne-ci dans le wmiirc :

status() { /home/xavier/.wmii-hg/wmiistatus.sh }
où le script wmiistatus.sh se termine par un

Bien évidemment, petit à petit, il est devenu assez complet.
Voila 2 ajouts que j’ai fait :

[code]percent() {
NUM=$(echo “scale=2;(($1/$2)*100)” | bc)

if [ "$(echo $NUM | grep -Eo '^.[0-9]+')" != "" ]; then
	NUM=$(echo "$NUM" | grep -Eo '^[0-9]+')
else
	NUM=0
fi

}

# Usage : percentbar NUM

percentbar() {
echo -n "["
i=1 ; j=1
while [ “$i” -le “$(($1/2))” ]; do
echo -n "="
i=$(($i+1))
done
echo -n ">"
while [ “$j” -le “$(((100-$1)/2))” ]; do
echo -n "-"
j=$(($j+1))
done
echo “]”
}
DAEMON=$(ps axo comm | grep -o mplayer | head -n1)
if [ -z $DAEMON]; then
DAEMON=$(ps axo comm | grep -o wget | head -n1)
fi
case $DAEMON in
mplayer )
#ajouter ceci dans le bashrc : alias mplayer='mplayer -v > /tmp/mplayer.log’
LOGFILE=/tmp/mplayer.log
TOTALFRAMES=$(cat $LOGFILE | grep “frames total:” | awk ‘{print $3}’)
CURFRAME=$(cat $LOGFILE | tail -n1 | awk ‘{print $7}’ | cut -d/ -f2)
percent $CURFRAME $TOTALFRAMES ; MPLAYERPERCENT=$NUM
MPLAYERBAR=$(percentbar $MPLAYERPERCENT)
MPLAYERTITLE=$(cat $LOGFILE | grep “Playing”)
echo “$MPLAYERTITLE $MPLAYERBAR $MPLAYERPERCENT%”
;;
wget )

	WGETLOG=/tmp/wget.log
	FILENAME=$( cat $WGETLOG | grep "Sauvegarde en" | cut -d: -f2)
	PROGRESS=$(cat $WGETLOG | tail -n-2 | grep -Eo "[0-9]{1,3}%")
	WGETBAR=$(percentbar $(cat $WGETLOG | tail -n-2 | grep -Eo "[0-9]{1,3}%" | cut -d% -f1) )
	echo "Télécharge : $FILENAME $WGETBAR"
;;
*)


…[/code]



En fait, si mplayer joue, il va m’afficher une barre d’avancement. De même si un téléchargement est en cours avec wget, il affiche l’avancement.
Cela oblige d’avoir ceci dans le bashrc :

alias mplayer='mplayer -v > /tmp/mplayer.log' alias wget='wget -o /tmp/wget.log'
Je me suis dit que ça pourrait être pratique pour ceux utilisant surf par exemple…

Pas bien compris, pourquoi t'utilise bc ?

[code]TOTALFRAMES=$(cat $LOGFILE | grep "frames  total:" | awk '{print $3}')[/code]
Ça serait pas plus simple ?
[code]TOTALFRAMES=$(awk '/frames  total:/{print $3}' $LOGFILE)[/code]

[code]CURFRAME=$(cat $LOGFILE | tail -n1 | awk '{ print $7}' | cut -d/ -f2)[/code]
Je comprend que tu ne fasse pas tout en awk mais là le cat il est vraiment mal utilisé:
[code]CURFRAME=$(tail -n1 $LOGFILE | awk '{ print $7}' | cut -d/ -f2)[/code]

[code]FILENAME=$( cat $WGETLOG | grep "Sauvegarde en" | cut -d: -f2)[/code]
Pourrais être fait :
[code]FILENAME=$(grep "Sauvegarde en" $WGETLOG | cut -d: -f2)[/code]
ou comme ça
[code]FILENAME=$(awk -F: '/Sauvegarde en/{ print $2 }' $WGETLOG[/code]

Sinon moi avec mon 10" j'ai jamais trop mis de trucs comme ça (par contre j'ai cherché à afficher le nom de la chanson joué par xmms2 et j'ai pas trouvé comment faire).

Pas bien compris, pourquoi t’utilise bc ?

Ça serait pas plus simple ?

Je comprend que tu ne fasse pas tout en awk mais là le cat il est vraiment mal utilisé:

Pourrais être fait :

ou comme ça

Sinon moi avec mon 10" j’ai jamais trop mis de trucs comme ça (par contre j’ai cherché à afficher le nom de la chanson joué par xmms2 et j’ai pas trouvé comment faire).

Encore une fois Misterfreeze, tu es mon parfait correcteur! cela doit te donner des boutons tous mes bidouillages :blush: . Quoi qu’il en soit je te remercie grandement de prendre le temps à chaque fois de me montrer comment je peux améliorer les choses. :023 Ça me permet d’apprendre bien plus vite, même si un bon cours sur sed et cie me ferait du bien :115 .

L’utilisation de bc, en fait, c’est un bout de script quej’avais récupérer sur le forum, pour avoir une barre de progression, et je l’ai pas changé… bc sert à faire le calcul du pourcentage.
Sur un 10’’, c’est vrai que tu ne peux pas afficher beaucoup. C’est pourquoi c’est pratique d’afficher quelque chose que si ça tourne. Mais bon, les barres de progressions sont à proscrire.
Pour xmms, il doit forcément y avoir un moyen, suffit de trouver. Tiens, je vais chercher et je te dis quoi :006 .

ps : Pour les utilisateurs de dwm, il suffit à la place de mettre xsetroot -name “$(le_script_en_question)”

cette ligne : awk '/frames total:/{print $3}' LOGFILE
Me retourne : awk: program limit exceeded: maximum number of fields size=32767 FILENAME="-" FNR=1 NR=1

Pour xmms2, taper

ou

devrait te suffire :slight_smile:

[quote=“thuban”]cette ligne : awk '/frames total:/{print $3}' LOGFILE
Me retourne : awk: program limit exceeded: maximum number of fields size=32767 FILENAME="-" FNR=1 NR=1[/quote]
Tu peut poster la ligne qui est envoyée ? Celle que retourne grep “frames total” ?

[quote=“thuban”]Pour xmms2, taper

Ne reviens jamais il affiche des trucs en permanence c’est pas terrible à parser.

[quote=“thuban”]xmms2 current
devrait te suffire :)[/quote]
Je l’avais pas vu cette option je regarderais quand j’aurais le temps.

PS: Je suis en période d’examen donc j’ai pas le temps de travailler sur les docs.

C’est le mien ! Je le reconnais [*] ! J’avais utilisé bc, car dans le cas du script en question, j’avais besoin d’avoir un résultat décimal et non entier, mais dans le cas présent, ça n’a plus l’air nécessaire…

[*] Je reconnais aussi le style dans la suite. :blush:
Heureusement MisterFreez veille au grain… :023

Très juste, c’était le tien kna . J’ai essayé de le réécrire avec seulement des $((expression)), mais sans grand succès, je n’ai pas bien pris le temsp de résoudre non plus, étant donné que ça marche bien avec ta méthode.

Avec xmms2 status, en le renvoyant dans un fichier, ça peut peut-être le faire? (récupérer la dernière ligne dans le fichier).

Je ne suis pas sur mon pc, je renvoie la ligne dès que possible.

Du coup tu peut remplacer ça :

par ça :

[quote=“MisterFreez”]Du coup tu peut remplacer ça :

par ça :

Pour ça, oui, c’est bon, car il n’y a pas de demi-frames. Par contre, pour la partie mpd par exemple, le temps écoulé sur le temps total de la piste, ce n’est pas un entier, donc je garde la méthode kna qui fonctionne avec les décimaux.

POur le retour de commande demandé :

cat /tmp/mplayer.log | grep "frames total:" frames total: 215548 initial: 0
Ce ne serai tpas parce que awk est limité, du coup, si ça dépasse un certain chiffre, il ne peut fonctionner?

Je ne sais pas pourquoi, mais tail -n1 ne me sort pas qu’une ligne, mais pleins! de même si je fais sed -n ‘$p’. Donc du coup, awk s’affole et arrive à ses limites.

Si je te l’ai demandé c’est pour ne plus m’embêter avec awk :slightly_smiling: :

Pour awk je ne vois pas pourquoi il plante.

Quand tu as des nombres à virgule flottante :

avec bash sinon :

PS:
Grep peut prendre en paramettre les fichiers qu’il traite donc utilise plutôt :