WMFS, acte IV : La statusbar
Comme promis, le quatrième acte concernant WFMS est consacré à sa statusbar et plus particulièrement à son fichier status.sh.
Pour rappel et avant de rentrer dans le vif du sujet, WMFS permet d’afficher des informations de toutes sortes au sein même de sa statusbar, une fonctionnalité similaire aux infobars d’Awesome.
Mettez ce que vous voulez, WMFS se charge de l’afficher !
How to :
La première chose à faire est de renseigner correctement la section « [misc] [/misc] » de son wmfsrc :
$ nano ~/.config/wmfs/wmfsrc
[misc] status_timing = 1 #seconds status_path = "~/.config/wmfs/status.sh" [/misc]
Créez ensuite le fichier status.sh en le rendant exécutable par la même occasion :
$ touch ~/.config/wmfs/status.sh
$ chmod +x ~/.config/wmfs/status.sh
Donnez maintenant à manger à votre petit fichier :
$ echo -e '#!/bin/sh \nwmfs -s "Bonjour"' > ~/.config/wmfs/status.sh
Rechargez ensuite WMFS via la combinaison de touches [Ctrl + Alt + R] et appréciez le résultat !
Simple non ? Histoire de voir un peu ce que l’on peut faire voici une capture d’écran provenant de mon netbook suivi de son status.sh :
#!/bin/sh # # ## Couleurs ## rouge="\\#FF000B\\" vert="\\#1CB500\\" jaune="\\#FFF23D\\" bleu="\\#4599F8\\" orange="\\#FF6600\\" rose="\\#FF53B5\\" camel="\\#FFA500\\" cyan="\\#00F3FF\\" normal="\\#D9D9D9\\" # # ## Heure ## _hour () { hour=$(date '+%Hh %Mm') hour="$vert [ H : $normal$hour$vert ]" } # # ## Date ## _dat () { dat_s=$(date '+%a %d/%m/%y') dat_l=$(date '+%A %d %b %Y') dat="$orange [ D : $normal$dat_s$orange ]" } # # ## Uptime ## _uptim () { uptim=$(cut -d'.' -f1 /proc/uptime) mins=$((${uptim}/60%60)) hours=$((${uptim}/3600%24)) days=$((${uptim}/86400)) uptim="${mins}m" if [ "${hours}" -ne "0" ]; then uptim="${hours}h ${uptim}" fi if [ "${days}" -ne "0" ]; then uptim="${days}d ${uptim}" fi uptim="$jaune [ U : $normal$uptim$jaune ]" } # # ## Ram ## _ram () { mem_u=$(free -mto | grep Mem | awk '{ print $3 }') mem_t=$(free -mto | grep Mem | awk '{ print $2 }') ram="$bleu [ R : $normal$mem_u M / $mem_t M$bleu ]" } # # ## Hdd ## _hdd () { hdd_f=$(df -h / | grep "/dev/" | awk '{print $3}') hdd_t=$(df -h / | grep "/dev/" | awk '{print $2}') hdd="$camel [ H : $normal$hdd_f / $hdd_t$camel ]" } # # ## Températures ## _temp () { cpu_t=$(sensors | grep "CPU T" | awk {'print $3'}) mb_t=$(sensors | grep "MB T" | awk {'print $3'}) gpu_t=$(nvidia-settings -t -q GPUCoreTemp) temp="$vert [ T : $normal$cpu_t $mb_t +$gpu_t°C$vert ]" } # # ## Musique ## _mcp () { if [ -n $(mpc current) ]; then mus="off " mcp="$rose [ M : $normal$mus$rose ]" else if [ $(mpc current | wc -m) -gt "25" ]; then mus=$(mpc current | cut -b 1-25) mcp="$rose [ M : $normal$mus...$rose ]" else mus=$(mpc current) mcp="$rose [ M : $normal$mus$rose ]" fi fi } # _quod () { if [ -f ~/.quodlibet/current ]; then art=$(cat ~/.quodlibet/current | grep artist | cut -d '=' -f2) tit=$(cat ~/.quodlibet/current | grep title | cut -d '=' -f2) mus="$art - $tit" mus="$rose [ M : $normal$mus$rose ]" else mus="off " mus="$rose [ M : $normal$mus$rose ]" fi } # # ## IP local ## _ip () { if [ -z $(ifconfig wlan0 | grep "inet addr") ]; then ip="Non connecté" ip="$orange [ I : $normal$ip$orange ]" else ip=$(ifconfig wlan0 | grep "inet addr" | cut -b 21-32) ip="$orange [ I : $normal$ip$orange ]" fi } # # ## Gmail ## _mail () { if [ -z $(ifconfig wlan0 | grep "inet addr") ]; then mail="$rouge [ G : $normal ?$rouge ]" else gmailuser="adresse@gmail.com" gmailpass="motdepasse" mail=$(wget --secure-protocol=TLSv1 -T 3 -t 1 --no-check-certificate --user=$gmailuser --password=$gmailpass http://mail.google.com/mail/feed/atom -q -O - | grep "<fullcount>" | grep -o "[^/<fullcount>]") mail="$rouge [ G : $normal$mail @$rouge ]" fi } # # ## Volume ## _vol () { status=$(amixer get Master | grep "Mono: P" | awk '{print $6}') if [ "$status" = "[on]" ] ; then vol=$(amixer get Master | grep "Mono: P" | awk '{print $4}' | grep -oE "[[:digit:]]{1,}"%) vol="$cyan [ V : $normal$vol$cyan ]" else vol="mute" vol="$cyan [ V : $normal$vol$cyan ]" fi } # # ## Batterie ## _bat () { path="/proc/acpi/battery/BAT1" if [ $(cat $path/state | grep 'present:' | awk '{print $2}') = "no" ]; then bat="$vert [ B : $normal off$vert ]" else full=`cat $path/info|grep 'last full capacity'|awk -F: '{print $2}'|awk -Fm '{print $1}'` current=`cat $path/state|grep 'remaining capacity'|awk -F: '{print $2}'|awk -Fm '{print $1}'` state=$(( $current * 100 / $full)) if [ $(cat $path/state | grep 'charging' | awk '{print $3}') = "discharging" ]; then charge="↓" bat="$vert [ B : $normal$state % $charge $vert ]" else charge="↑" bat="$vert [ B : $normal$state % $charge $vert ]" fi fi } # # ## Status ## status () { for arg in $@; do _${arg} args="${args} `eval echo '$'$arg`" done wmfs -s 0 "$args" echo "$args" } # # ## Variables ## ## dat hour uptim ram hdd ram hdd ip mail mcp vol bat quod temp status dat hour uptim ram hdd ip mail mcp vol bat # #
À noter que le fichier status.sh peut être édité dans le langage voulu : Bash, C, Python, etc… Faites donc comme bon vous semble ( Merci à linkdd pour ce petit rappel )
Multi-écran :
WMFS permet de mettre un message différent pour chaque écran en faisant comme ceci :
$ nano ~/.config/wmfs/status.sh
#!/bin/sh # wmfs -s 0 "Écran 1" wmfs -s 1 "Écran 2" wmfs -s 2 "Écran 3" wmfs -s 3 "Écran 4"
Comme vous pouvez le voir la numérotation des écrans commence à partir de 0.
Intégration de Conky :
Il est tout à fait possible d’utiliser la sortie provenant de Conky dans la statusbar. En premier lieu, prennez soin de renseigner correctement votre fichier conkyrc :
$ nano ~/.conkyrc
out_to_console yes out_to_x no background no update_interval 0.9 total_run_times 0 no_buffers yes TEXT
Une fois les options insérées, il vous suffit d’éditer le fichier status.sh :
$ nano ~/.config/wmfs/status.sh
#!/bin/sh # conky -q | while read -r; do wmfs -s -name "$REPLY"; done
Sauvegardez, rechargez et appréciez !
Ce billet touche maintenant à sa fin et comme d’habitude, j’espère que celui-ci vous donnera envie de tester ce passionnant tiling manager !
Le prochain acte concernera la section « menu » : See you soon .