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