Un pò di tempo fà, nel post che trattava la configurazione generale di OpenBox si è accennato all’utilizzo di script (bash,perl,python…etc) che potessero essere implementati nel menu desktop “statico” del wm. Anche in PekWM questa funzione è supportata attraverso ciò che in gergo tecnico viene definito pipemenu. I pipemenus infatti sono menu “dinamici” (contenenti categorie,sottocategorie,link,funzioni,etc) che fanno capo al richiamo di semplici e/o complessi scripts.
Un esempio generico che sembra essere molto richiesto, può essere quello della visualizzazione della data e dell’ora nel menu di PekWM.
NB: per prima cosa ci procuriamo e/o scriviamo con il nostro editor preferito lo script necessario. Nel nostro esempio pkw-dateclock.sh (bash).
~$ vi pkw-dateclock.sh #!/bin/bash # pkw-dateclock.sh date=$(date +%A %d %b %H:%M) echo "Dynamic {" echo " Entry = "$date" { Actions = "Exec xclock & " }" echo "}" exit
NB: lo script stampa ad output di menu dinamico ciò che ci interessa (data e ora) ed apre l’utility xclock al click singolo del mouse.
Salvato lo script, è buona norma mantenere ordine e quindi spostiamo lo script creato in una sottodirectory /scripts creata nella directory di riferimento del wm (nel nostro caso PekWM la directory di riferimento resta ~/.pekwm/ ) . Ovviamente essendo uno script eseguibile provvederemo a dargli i permessi di esecuzione. Esempio:
~$ mkdir ~/.pekwm/scripts ~$ cp pkw-dateclock.sh ~/.pekwm/scripts/ ~$ su - ~# chmod +x ~/.pekwm/scripts/pkw-dateclock.sh
Finito il lato script, non resta che richiamare tale funzione modificando il menu statico di PekWM ed aggiungendo l’Entry necessaria come da esempio:
~$ vi ~/.pekwm/menu Submenu = "Data/ora" { Icon = "dateclock.png" ; Entry = "" { Actions = "Dynamic /home/utente/.pekwm/scripts/pwk-dateclock.sh"} }
NB: la modifica del menu statico di PekWM segue i soliti parametri. Se ci fossero dubbi in merito consultare il post: Un altro cugino della famiglia *box: PekWM - sezione MENU.
Il risultato finale sarà come da screen:
Allo stesso modo, si possono eseguire scripts in perl che richiamino statistiche di sistema, come il consumo della memoria RAM, percentuali, come da esempio:
~$ vi ~/.pekwm/scripts/stat.pl #!/usr/bin/perl print "Dynamic {n"; ($parta,$partb) = split(/Mem:/,`free -m`); ($partc,$partd) = split(/^ /,$partb); ($partf,$partg) = split(/ /,$partd); $partg =~ s/ //g; print "Submenu = "Memory" {n"; print "Entry = "$partg/$partf mb" { Actions = "Exec " }n"; print "}n"; ($pa,$pb) = split(/COMMANDn/,`ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'`); (@array) = split(/n/,$pb); print "Submenu = "CPU Usage" {n"; foreach $temp (@array) { $temp =~ s/^ //; ($percent,$process) = split(/ .{19}/,$temp); if ($process =~ ///) { ($pops,$use) = split(//(?!.*/)/,$process); } else { $use = $process; } print "Entry = "$use: $percent" . "%" { Actions = "Exec " }n"; } print "}n"; print "}n";
Modifichiamo il menu statico di PekWM aggiungendo anche in questo caso la solita Entry relativa**:
SubMenu = "Stat" { Icon = "boxstats.png" ; Entry = "" { Actions = "Dynamic /home/user/.pekwm/scripts/stat.pl" } }
Il risultato sarà:
# End