Archivio

Posts Tagged ‘Xfce4’

Xfwm4: modificare tema

19 Ottobre 2019 Commenti chiusi

Xfwm4, ovvero il window manager nativo di Xfce4, utilizza immagini in formato xpm ed un file di testo, per le altre opzioni di configurazione (themerc).
Come esempio di “theming”, modifichiamo il button close nella titlebar della finestra (in alto a destra) in modo che assuma la
colorazione rossa, quando il puntatore del mouse ci passa sopra.
Per fare questo, basterà modificare il file xpm corrispondente a quel pulsante.

Per prima cosa facciamo una copia del tema xfwm4 che ci interessa modificare, perchè non è mai una buona idea modificare i file originali; nel mio caso il tema in questione è Greybird.
Apriamo quindi un terminale e diamo i comandi per la copia:

banco@banco-desktop:~$ sudo cp -r /usr/share/themes/Greybird /usr/share/themes/GreybirdCustom

Il nome GreybirdCustom, indica il nostro tema che sceglieremo dopo aver effettuato le modifiche.

Ora dobbiamo identificare quale oggetto viene coinvolto dalla modifica.
Per prima cosa facciamo una distinzione

– Active Window e Inactive Window

Come da titolo, una window può essere attiva (active) e non attiva (inactive), pertanto quando cercheremo una parte di finestra, dovremo specificare anche se active o inactive, es:

title-1-active.xpm e title-1-inactive.xpm

– TitleBar

La titlebar della window è formata da 7 pixmaps per la active window:

top-left-active.xpm: raccordo in alto a sinistra


title-1-active.xpm
title-2-active.xpm
title-3-active.xpm
title-4-active.xpm
title-5-active.xpm

riguardano la titlebar

top-right-active.xpm: raccordo in alto a destra

e i relativi per la inactive window

top-left-inactive.xpm: raccordo in alto a sinistra
title-1-inactive.xpm
title-2-inactive.xpm
title-3-inactive.xpm
title-4-inactive.xpm
title-5-inactive.xpm
top-right-inactive.xpm: raccordo in alto a destra

Per modificare il testo della titlebar, quindi il colore, l’ombra e l’allineamento,
sarà necessario editare il file themerc.

– SideBars e Bottom

I cosiddetti lati della window, sono identificati da 2 pixmaps per parte, a sinistra:

left-active.xpm: lato sinistro
bottom-left-active.xpm: raccordo con il bottom bar

a destra:

right-active.xpm: lato destro
bottom-right-active.xpm: raccordo con il bottom bar

tra i due raccordi bottom-left-active.xpm e bottom-right-active.xpm, risiede il:

bottom-active.xpm

che verrà ripetuto fino a riempire la lunghezza della bottom bar.
Come si può notare dall’immagine del top-left-active, top-right-active, nel tema di riferimento Greybird, i lati sono minimi, infatti sono identificati da un unico pixel in trasparenza. Tali sezioni sono identificate dal file xpm:

/* XPM */
static char * <xpm_var_name>[] = {
"1 1 1 1",
" 	c #939393",
" "};

I relativi pixmaps dedicati alla inactive window.

– Buttons

Xfwm4 può utilizzare fino a 6 action-buttons:

stick
menu
shade
hide
maximize
close

Gli stati di questi bottoni sono 4:

active: aspetto del bottone nella active window
inactive: aspetto del bottone nella inactive window
prelight: aspetto del bottone quando il puntatore del mouse ci passa sopra
pressed: aspetto del bottone quando viene premuto

Alcune caratteristiche dei bottoni, come gli offset o la spaziatura tra essi, sono settabili, come per
i testi, nel file themerc, risiedente nella stessa dir dei pixmaps.

Ad esempio il file themerc di Greybird è:

active_text_color=#686868
active_text_shadow_color=#ececec
inactive_text_color=#bbbbbb
inactive_text_shadow_color=#ececec
title_shadow_active=true
title_shadow_inactive=true
full_width_title=true
title_vertical_offset_active=2
title_vertical_offset_inactive=2
button_offset=4
button_spacing=2
shadow_delta_height=2
shadow_delta_width=0
shadow_delta_x=0
shadow_delta_y=-10
shadow_opacity=50

Ricapitoliamo quali sono i pixmaps

Window frames:

active, inactive
top-left-active, top-left-inactive
title-1-active, title-1-inactive
title-2-active, title-2-inactive
title-3-active, title-3-inactive
title-4-active, title-4-inactive
title-5-active, title-5-inactive
top-right-active, top-right-inactive
right-active, right-inactive
bottom-right-active, bottom-right-inactive
bottom-active, bottom-inactive
bottom-left-active, bottom-left-inactive
left-active, left-inactive

Buttons:

active, inactive, prelight, pressed
menu-active, menu-inactive, menu-prelight, menu-pressed
shade-active, shade-inactive, shade-prelight, shade-pressed
stick-active, stick-inactive, stick-prelight, stick-pressed
hide-active, hide-inactive, hide-prelight, hide-pressed
maximize-active, maximize-inactive, maximize-prelight, maximize-pressed
close-active, close-inactive, close-prelight, close-pressed

Toggled Buttons:

toggled-active, toggled-inactive, toggled-prelight, toggled-pressed
shade-toggled-active, shade-toggled-inactive, shade-toggled-prelight, shade-toggled-pressed
stick-toggled-active, stick-toggled-inactive, stick-toggled-prelight, stick-toggled-pressed
maximize-toggled-active, maximize-toggled-inactive, maximize-toggled-prelight, maximize-toggled-pressed

L’obbiettivo iniziale era di colorare di rosso il close button della window, quando il puntatore del mouse ci passa sopra. Il pixmap interessato sarà:

close-prelight.xpm

Apriamo con un editor di testo il file suddetto:

sudo mousepad /usr/share/themes/GreybirdCustom/xfwm4/close-prelight.xpm

Il contenuto sarà il seguente:

/* XPM */
static char * close_prelight_xpm[] = {
"20 24 8 1",
" 	c None",
".	c #939393",
"+	c #FFFFFF",
"@	c #DEDEDE s active_color_2",
"#	c #4B4B4B",
"$	c #666666",
"%	c #E5E5E5",
"&	c #8B8B8B",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@##@@@@##@@@@@@",
"@@@@@@$$#@@#$$@@@@@@",
"@@@@@@%$$##$$%@@@@@@",
"@@@@@@@%$$$$%@@@@@@@",
"@@@@@@@@&$$&@@@@@@@@",
"@@@@@@@#$$$$#@@@@@@@",
"@@@@@@#$$%%$$#@@@@@@",
"@@@@@@$$%@@%$$@@@@@@",
"@@@@@@%%@@@@%%@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@"};

Come sappiamo, ad ogni carattere corrisponde un colore.
Volendo mantenere lo stesso sfondo, basterà modificare i colori dei simboli: #, $, %, &.
Modificando ad esempio le stringhe inerenti i simboli precedenti, con queste tonalità di rosso:

"#	c #940e04",
"$	c #fc1303",
"%	c #c95951",
"&	c #e69b95",

…si dovrebbe ottenere l’effetto desiderato.

Ora basterà modificare il tema Xfwm4 mediante il Gestore delle Finestre, scegliendo il nostro GreybirdCustom.

Lo stesso principio può essere utilizzato per modificare la forma della finestra.
Prendiamo ad esempio il top-left-active.xpm, che per la versione default di Greybird è così costituito:

/* XPM */
static char * top_left_active_xpm[] = {
"8 24 4 1",
" 	c None",
".	c #939393",
"+	c #FFFFFF",
"@	c #DEDEDE s active_color_2",
"     ...",
"   ..+++",
"  .@@@@@",
" .@@@@@@",
" .@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@"
};

se lo confrontiamo con l’omonimo del thema Greybird compact:

/* XPM */
static char * top_left_inactive_xpm[] = {
"8 18 4 1",
" 	c None",
".	c #939393",
"+	c #FFFFFF",
"@	c #DEDEDE s active_color_2",
"     ...",
"   ..+++",
"  .@@@@@",
" .@@@@@@",
" .@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@",
".@@@@@@@"
};

Come si nota, l’altezza del pixmap è minore: 18 righe contro le 24 della versione di default.
Per l’effetto curvatura viene utilizzato il carattere ” ” (None), che indica la trasparenza.
Con queste indicazione è possibile quindi modificare il profilo della window stessa.

link utili:
file XPM

Categorie:Xfce, Xfwm4 Tag: ,

Xubuntu: modificare il colore del prompt del terminale

18 Ottobre 2019 Commenti chiusi

Vogliamo modificare il colore del prompt del terminale di Ubuntu.
Il tipo di terminale che ci interessa è il “non-login”, che carica le sue impostazioni dal file

.bashrc

residente nella home.

Per modificare tali caratteristiche, editare il file suddetto:

mousepad ~/.bashrc

e decommentare la riga di codice contenente:

force_color_prompt=yes

Questa modifica consente di abilitare la colorazione del prompt fornita nel file di default.

La colorazione di default (ad es. di Xubuntu), è racchiusa nella seguente stringa:

if [ "$color_prompt" = yes ]; then

    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Nota:
cosa è ${debian_chroot:+($debian_chroot)}?
Questo è uno schema del tipo ${var:+value} che significa:
Se la variabile $var è definita, allora utilizza il valore ‘value’;
altrimenti non fare nulla.
La variabile debian_chroot è definita nel file /etc/bash.bashrc e si
occupa di prendere il contenuto del file /etc/debian_chroot, se questo file esiste
ed è leggibile. Di default però, tale file non esiste.

esempio:

banco@banco-desktop:~$ PS1='${var:+($var)}\u@\h:\w\$ '
banco@banco-desktop:~$ var="example"
(example)banco@banco-desktop:~$

La colorazione viene decisa da una stringa racchiusa tra i caratteri di escape

\[\033[ e \]

a volte \[\033[ è sostituito da \e[

– Stringhe Colori disponibili

Ecco le stringhe usate per la colorazione del testo:

txtblk=’0;30m’ # Nero – Regular
txtred=’0;31m’ # Rosso
txtgrn=’0;32m’ # Verde
txtylw=’0;33m’ # Giallo
txtblu=’0;34m’ # Blu
txtpur=’0;35m’ # Viola
txtcyn=’0;36m’ # Ciano
txtwht=’0;37m’ # Bianco
bldblk=’1;30m’ # Nero – Bold
bldred=’1;31m’ # Rosso
bldgrn=’1;32m’ # Verde
bldylw=’1;33m’ # Giallo
bldblu=’1;34m’ # Blu
bldpur=’1;35m’ # Viola
bldcyn=’1;36m’ # Ciano
bldwht=’1;37m’ # Bianco
unkblk=’4;30m’ # Nero – Underline
undred=’4;31m’ # Rosso
undgrn=’4;32m’ # Verde
undylw=’4;33m’ # Giallo
undblu=’4;34m’ # Blu
undpur=’4;35m’ # Viola
undcyn=’4;36m’ # Ciano
undwht=’4;37m’ # Bianco
bakblk=’40m’ # Nero – Background
bakred=’41m’ # Rosso
badgrn=’42m’ # Verde
bakylw=’43m’ # Giallo
bakblu=’44m’ # Blu
bakpur=’45m’ # Viola
bakcyn=’46m’ # Ciano
bakwht=’47m’ # Bianco
txtrst=’0m’ # Text Reset

Nel nostro caso specifico, verrà usata la sequenza di escape non stampabile, ‘1;32m’ (verde grassetto):

\[\033[01;32m\]

Il testo successivo, fino alla sequenza successiva, verrà modificato; la stringa GreenBold sarà:

\u@\h

dove ‘\u@\h\’ sta per user@host

– Comandi di escape disponibili

Ecco la lista dei comandi di escape disponibili:

\a         il carattere ASCII beep (07)
\d         la data nel formato "Giorno-della-settimana Mese Data"
\D{format} the format is passed to strftime(3) and the result
           is inserted into the prompt string an empty format
           results in a locale-specific time representation.
           The braces are required
\e         un carattere di escape ASCII (033)
\h         l'hostname fino al primo `.'
\H         l'hostname
\j         the number of jobs currently managed by the shell
\l         the basename of the shell's terminal device name
\n         il carattere "newline"
\r         il carattere "carriage return"
\s         il nome della shell, il nome base di $0
           (la parte che segue lo slash finale)
\t         l'ora corrente nel formato 24-ore HH:MM:SS
\T         l'ora corrente nel formato 12-ore HH:MM:SS
\@         l'ora corrente nel formato 12-ore am/pm
\A         the current time in 24-hour HH:MM format
\u         lo username dell'utente corrente
\v         la versione di bash (e.g., 2.00)
\V         la release di bash, versione + patchlevel
           (es, 2.00.0)
\w         la directory di lavoro corrente, con $HOME abbreviato con una tilde
\W         il nome di base della directory di lavoro corrente
           abbreviato con una tilde
\!         il numero cronologico (history number) di questo comando
\#         il numero di questo comando
\$         se l'UID effettivo è 0, un #, altrimenti un $
\nnn       il carattere corrispondente al numero ottale nnn
\\         un backslash
\[         comincia una sequenza di caratteri non stampabili, che
           potrebbero essere usati per inserire una sequenza di
           controllo del terminale nel prompt
\]         termina la sequenza di caratteri non stampabili

tornando alla stringa, dopo user@host, abbiamo un text reset, ovvero togliamo la colorazione per il carattere “:”,

\[\033[00m\]:

poi abbiamo il path in blu grassetto:

\[\033[01;34m\]\w

dove appunto \w sta per la directory corrente

ed infine, sempre senza colorazione:

\[\033[00m\]\$ '

dove \$ controlla l’UID (user identifier):
se è 0 (root), viene visualizzato un ‘#’, altrimenti il ‘$’.

– Modificare il prompt di root

Per modificare il prompt di root, ad esempio utilizzando il rosso, è necessario modificare il file
.bashrc in root.
Copiare in /root il file skeleton:

/etc/skel/.bashrc

sudo cp /etc/skel/.bashrc /root

Editare quindi il file .bashrc di root e, prima decommentare:

force_color_prompt=yes

poi modificare il colore nella stringa:

    PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Categorie:Xfce Tag: ,

XFwm4: XPM file

18 Ottobre 2019 Commenti chiusi

Il formato XPM è il formato standard dei pixmap gestiti da X Window.
XPM salva i dati dell’immagine in formato ASCII, formattandoli sottoforma di array di stringhe in formato Standard C. La comodità quindi, è di poter editare tale immagine con un comune text-editor.

Sintassi di un file XPM

Un file XPM deve essere strutturato secondo lo schema seguente:

/* XPM */
static char * <pixmap_name>[] = {
<Values>
<Colors>
<Pixels>
<Extensions>
};

Un file XPM deve sempre cominciare con la stringa XPM delimitata dai token-comments di Standard C.

/* XPM */

Subito dopo il commento di identificazione del file XPM, troviamo la definizione dell’array, che conterrà i dati del pixmap, in formato stringa.

static char * <pixmap_name>[] = {
...
};

All’interno dell’array, quindi, troviamo la definizione e i dati riguardando il pixmap.

<Values>
<Colors>
<Pixels>
<Extensions>

– Values

La sezione definisce, con 6 integer in base 10, come sarà costituito il pixmap, dalle dimensioni al numero di colori utilizzati.
La sintassi della sezione è quindi la seguente:

<width/columns> <height/rows> <numcolors> <cpp> [<x_hotspot><y_hotspot>] [XPMEXT]

dove:
: la larghezza (numero di colonne) del pixmap;
: l’altezza (numero di righe) del pixmap;
: il numero di colori utilizzati nel pixmap;
: chars per pixel, ovvero il numero di caratteri utilizzati per ogni pixel;
[]: opzionale ed indica le coordinate del hotspot dell’immagine;
[XPMEXT]: opzionale, indica che in fondo al file, vengono utilizzate informazioni sul pixmap supplementari.

– Colors

La sezione definisce i caratteri ASCII che difiniscono i colori utilizzati nel pixmap.
Qui verranno definite tante stringhe, quanti saranno i colori utilizzati.
La sintassi per la definizione del colore è la seguente:

<character> { <key> <color> } { <key> <color> }

dove:
: il tipo di carattere utilizzato per la rappresentazione il singolo pixel, nel pixmap;
: indica il tipo di colore/dato utilizzato e può assumere uno dei seguenti valori:

– m: Mono
– s: Symbolic name
– g4: 4 livelli di Scala di Grigio
– g: Sacla di Grigio (più di 4 livelli)
– c: Color

Il symbolic name specifica i colori in fase di caricamento e non verranno quindi generati all’interno del file.
: il colorname in formato RGB esadecimale, preceduto da # (es. #FFFFFF)

Passare a una stringa None significa che il colore è trasparente.

– Pixels

La sezione contiene i dati del bitmap, ovvero un’area composte da tante righe (), dove ogni riga è composta * .
Ogni deve essere un gruppo definito nella sezione .
In sostanza viene rappresentata l’immagine tramite caratteri.

– Extensions

La sezione contiene dati supplementari e deve essere dichiarata all’inizio nella sezione con un assposito flag.
Ogni Extensions supplementare si dichiara a fine file con la seguente sintassi:

XPMEXT <extension-name> <extension-data>

oppure si indica il nome della extension e nella sottosezione, si indicano le multiple extension-data:

XPMEXT <extension-name> 
    <extension-data-1>
    <extension-data-2>

terminata la definizione delle extensions, si deve aggiungere la stringa di fine sezione:

XPMENDEXT

un esempio di chiusura sezione:

"XPMEXT extension-1 data-1",
"XPMEXT extension-2",
"data-2_1",
"data-2_2",
"XPMENDEXT"
};

Esempio

Di seguito un pixmap di un tema Xfwm4 (Greybird), per la precisione il file XPM del bottone di chiusura della titlebar:

/* XPM */
static char * close_prelight_xpm[] = {
"20 24 8 1",
" 	c None",
".	c #939393",
"+	c #FFFFFF",
"@	c #DEDEDE s active_color_2",
"#	c #4B4B4B",
"$	c #666666",
"%	c #E5E5E5",
"&	c #8B8B8B",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@##@@@@##@@@@@@",
"@@@@@@$$#@@#$$@@@@@@",
"@@@@@@%$$##$$%@@@@@@",
"@@@@@@@%$$$$%@@@@@@@",
"@@@@@@@@&$$&@@@@@@@@",
"@@@@@@@#$$$$#@@@@@@@",
"@@@@@@#$$%%$$#@@@@@@",
"@@@@@@$$%@@%$$@@@@@@",
"@@@@@@%%@@@@%%@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@"};

Vediamo una sezione alla volta:

/* XPM */

il commento di identificazione del file XPM

static char * close_prelight_xpm[] = {
...
};

definizione dell’array

"20 24 8 1",

sezione dove si definiscono 20 colonne (width), 24 righe (height), 8 colori, 1 carattere per pixel, nessuna coordinata hotspot e nessuna extension supplementare.

" 	c None",
".	c #939393",
"+	c #FFFFFF",
"@	c #DEDEDE s active_color_2",
"#	c #4B4B4B",
"$	c #666666",
"%	c #E5E5E5",
"&	c #8B8B8B",

Questa è la sezione dove si definiscono gli 8 colori, anticipati nella sezione precedente.
lo schema è { } { }
se prendiamo il carattere “@” che fa da sfondo alla croce (la x di chiusura della titlebar), come si nota

"@	c #DEDEDE s active_color_2",

tramite la ‘s’ si definisce, in fase di caricamento, active_color_2, cioè lo sfondo del tema gtk in uso.

infine:

"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@##@@@@##@@@@@@",
"@@@@@@$$#@@#$$@@@@@@",
"@@@@@@%$$##$$%@@@@@@",
"@@@@@@@%$$$$%@@@@@@@",
"@@@@@@@@&$$&@@@@@@@@",
"@@@@@@@#$$$$#@@@@@@@",
"@@@@@@#$$%%$$#@@@@@@",
"@@@@@@$$%@@%$$@@@@@@",
"@@@@@@%%@@@@%%@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@"};

questa è la rappresentazione via carattere, del nostro simbolo.
Ad ogni carattere corrisponde un colore da noi definito e come si nota, l’area è precisamente quella definita nella sezione : 20×24.

Categorie:Xfce, Xfwm4 Tag: ,

Conky: Xfce4

9 Maggio 2018 Commenti chiusi

Installazione Conky

Installare i pacchetti conky-all, curl, lm-sensors e hddtemp,
con il comando:

sudo apt-get install conky-all curl lm-sensors hddtemp

Per prima cosa impostare il bit SUID su hddtemp in modo da assegnare allo user che esegue hddtemp, gli stessi privilegi dell’utente root.
Questo è necessario perchè conky non potrà altrimenti eseguire sudo autonomamente dal suo file di configurazione conkyrc:

sudo chmod u+s /usr/sbin/hddtemp

Comandi base di Conky

per eseguire conky da terminale:

conky &

per eseguire conky in background ed evitare che venga terminato alla chiusura del terminale:

conky -d

File di configurazione

Le configurazioni di conky risiedono nel file ~/.conkyrc, se non devesse esistere, fare una copia del file di default:

cp /etc/conky/conky.conf  ~/.conkyrc

E’ necessario riavviare conky per poter utilizzare il nostro file di configurazione:

killall conky
conky &

Il file di configurazione è diviso in due parti:
tutto ciò che riguarda la resa a schermo di conky risiede in conky.config mentre tutto ciò che riguarda la formattazione del testo risiede in conky.text.
Tutto ciò che non è compreso tra

${ }

viene interpretato da conky come testo semplice.

conky.config = {
    alignment = 'top_left',
    background = false,
    border_width = 1,
    cpu_avg_samples = 2,
    default_color = 'white',
    default_outline_color = 'white',
    default_shade_color = 'white',
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = false,
    use_xft = true,
    font = 'DejaVu Sans Mono:size=12',
    gap_x = 5,
    gap_y = 60,
    minimum_height = 5,
    minimum_width = 5,
    net_avg_samples = 2,
    no_buffers = true,
    out_to_console = false,
    out_to_stderr = false,
    extra_newline = false,
    own_window = true,
    own_window_class = 'Conky',
    own_window_type = 'desktop',
    stippled_borders = 0,
    update_interval = 1.0,
    uppercase = false,
    use_spacer = 'none',
    show_graph_scale = false,
    show_graph_range = false
}

conky.text = [[
${scroll 16 $nodename - $sysname $kernel on $machine | }
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]

e corrisponde alla seguente grafica:

La lista di tutti i parametri è reperibile sul sito ufficiale.

alignment = ‘top_left’:
Indica la posizione della finestra di conky sullo schermo.
I valori accettati sono: alignment top_left, alignment top_right, alignment bottom_left, alignment bottom_right, alignment none

background = false:
Se settato a true, conky viene forzato a funzionare in background e non dipende da nessun terminale

border_width = 1:
Spessore del bordo in pixels

cpu_avg_samples = 2:
Numero di campionamenti per il monitoraggio della cpu

default_color = ‘white’:
colore di default di testo e bordo

default_outline_color = ‘white’:
colore di default dell’outline

default_shade_color = ‘white’:
colore di default dell’ombreggiatura

draw_borders = false:
Disegna i bordi del testo

draw_graph_borders = true:
Disegna i bordi dei grafici

draw_outline = false:
Disegna i bordi attorno a testi e linee, utile se il contrasto di background è insufficiente

draw_shades = false:
Aggiunge una sottile ombra sotto testi e linee per facilitare la lettura con background a medio
contrasto. Per contrasti insufficienti, vedere draw_outline.

use_xft = true:
Utilizza Xft (X FreeType interface Library) per fonts anti-aliased

font = ‘DejaVu Sans Mono:size=12’:
Il nome del font utilizzato in X. Costituito da tre parametri:
Font Name – Il nome del font, nel nostro caso “‘DejaVu Sans Mono”;
[size=] – [optional] la dimensione del font in pixels;
[weight] – [optional] in caso si voglia il grassetto, inserire la parola “bold”.

gap_x = 5:
Gap sull’asse x, rispetto al bordo dello schermo

gap_y = 60:
Gap sull’asse y, rispoetto al bordo dello schermo

minimum_height = 5:
Minima altezza della finestra di conky

minimum_width = 5:
Minima larghezza della finestra di conky

net_avg_samples = 2:
numero campionamenti per il traffico di dati

no_buffers = true:
Sottrae i buffers (file system) dalla memoria utilizzata

out_to_console = false:
Stampa sullo “stdout” (standard output) per essere visualizzato a terminale

out_to_stderr = false
Stampa sullo “stderr” (standard error)

extra_newline = false
Aggiunge una linea extra alla fine, quando sta scrivendo sullo “stdout”

own_window_class = ‘Conky’
Imposta manualmente il nome del window manager WM_CLASS. “Conky” di default

own_window_type = ‘desktop’
Serve per utilizzare alcuni hints del window manager che influiscono sulla visualizzazione di Conky

stippled_borders = 0
Stippling dei bordi in pixels

update_interval = 1.0
Intervallo di update di conky in secondi

uppercase = false
Serve per visualizzare il testo in maiuscolo

use_spacer = ‘none’
Aggiunge spazi attorno a certi oggetti. Utile quando si usano font particolari come “Bitstream Vera Sans Mono”

show_graph_scale = false
Mostra il valore massimo nella scala del grafico

show_graph_range = false
Mostra il time-range del grafico

Analizzando ora il formato del testo visualizzato nel file di default:

${scroll 16 $nodename - $sysname $kernel on $machine | }

Scrolling del testo (su 16 caratteri in movimento) delle variabili indicate con $

$hr

Disegna una riga orizzontale

${color grey}Uptime:$color $uptime

Visualizza la scritta uptime in grigio (delimitata dai tag $color).
La variabile che segue, $uptime, utilizza il colore di default (“white”)

${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes

Stessa cosa del punto precedente con altri parametri.

$hr

Disegna una riga orizzontale

${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr

Disegna una riga orizzontale

${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}

Modifica File di configurazione

Un esempio di file personalizzato del mio desktop è il seguente e sono stati modificati i font, i size del font, i colori e i parametri da visualizzare.
E’ necessaria l’installazione del font-awesome quindi:

sudo apt-get install fonts-font-awesome
conky.config = {
	alignment = 'top_right',
	background = true,
	cpu_avg_samples = 2,
	default_color = "FFFFFF",
	draw_borders = false,
	draw_graph_borders = false,
	draw_outline = false,
	draw_shades = true,
	use_xft = true,
	font = 'Ubuntu Mono:size=10',
	gap_x = 10,
	gap_y = 10,
	minimum_width = 0, minimum_height = 0,
	net_avg_samples = 2,
	no_buffers = true,
	out_to_console = false,
	own_window = true,
	own_window_class = "Conky",
	own_window_type = "normal",
	own_window_hints = "undecorated,below,sticky,skip_taskbar,skip_pager",
	own_window_transparent = true,
	own_window_colour = "000000",
	update_interval = 1,
	uppercase = false,
	override_utf8_locale = true,
	double_buffer = true,
	text_buffer_size = 32768,
	border_inner_margin = 10,
	border_outer_margin = 0,
	xftalpha = 0.8,
        color1 = CCAB8D,
};

conky.text = [[
	${color1}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=50}${time %H:%M}${font}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=13}${time %A %d %B %Y}${font}
	${voffset 5}
	${color #DD3A21}$nodename: ${scroll 16 $sysname $kernel on $machine}${color}
	${hr}
	${font FontAwesome}?${font} IP address:
        ${goto 20}${addrs eth0}
	${goto 20}${upspeedgraph eth0 30,178 06E9F8 2104FA}${goto 202}${downspeedgraph eth0 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${upspeed eth0}${font FontAwesome}${goto 202}?${font} ${downspeed eth0}
	${hr}
	${font FontAwesome}?${font} DiskIO:
	${goto 20}${diskiograph_read 30,178 06E9F8 2104FA}${goto 202}${diskiograph_write 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${diskio_read}${font FontAwesome}${goto 202}?${font} ${diskio_write}
	${hr}
	${font FontAwesome}?${font} Memory usage: 
        ${goto 20}${mem}/${memmax} (${memperc}%) | Swap: ${swapperc}%
	${goto 20}${memgraph 30,355 AAF5D0 00B35B}
	${hr}
	${color1}File systems:
	${color1}sda: /home${goto 125}${color}${fs_used /home}/${fs_size /home} ${fs_used_perc /home}% ${color1}					
	${color1}sda: /${goto 125}${color}${fs_used /}/${fs_size /} ${fs_used_perc /}% ${color1}								
        ${color1}sdb: /home${goto 125}${color}${fs_used /home/banco/mediaHD/}/${fs_size /home/banco/mediaHD/} ${fs_used_perc /home/banco/mediaHD/}% ${color1}							

	${hr}
	${color1}Temperatures in Celsius:
	${color1}sda			${alignr}	${color} ${execi 10 hddtemp /dev/sda | cut -c32-36}
	${color1}sdb			${alignr}	${color} ${execi 10 hddtemp /dev/sdb | cut -c31-36}
	${color1}Core0 			${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
	${color1}Core1 			${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}
	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
	${hr}
	${goto 20}CPU0: ${cpu cpu0}%${goto 100}${cpubar 7,80 cpu0}
	${goto 20}CPU1: ${cpu cpu1}%${goto 100}${cpubar 7,80 cpu1}
	${hr}
	${color #FFFF00}${goto 20}Name ${goto 200}Pid${goto 255}Cpu%${goto 310}Mem%${color}
	${goto 20}${top name 1} ${goto 180}${top pid 1}${goto 235}${top cpu 1}${goto 290}${top mem 1}
	${goto 20}${top name 2} ${goto 180}${top pid 2}${goto 235}${top cpu 2}${goto 290}${top mem 2}
	${goto 20}${top name 3} ${goto 180}${top pid 3}${goto 235}${top cpu 3}${goto 290}${top mem 3}
	${goto 20}${top name 4} ${goto 180}${top pid 4}${goto 235}${top cpu 4}${goto 290}${top mem 4}
	${goto 20}${top name 5} ${goto 180}${top pid 5}${goto 235}${top cpu 5}${goto 290}${top mem 5}

]];

Ecco le sezioni una per una

Orario e data

	${color1}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=50}${time %H:%M}${font}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=13}${time %A %d %B %Y}${font}


Nodename e Net

	${color #DD3A21}$nodename: ${scroll 16 $sysname $kernel on $machine}${color}
	${hr}
	${font FontAwesome}?${font} IP address:
        ${goto 20}${addrs eth0}
	${goto 20}${upspeedgraph eth0 30,178 06E9F8 2104FA}${goto 202}${downspeedgraph eth0 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${upspeed eth0}${font FontAwesome}${goto 202}?${font} ${downspeed eth0}

Con scroll è possibile far scorrere il testo (16 caratteri) delle variabili sysname, kernel e machine.
Il traffico di rete in entrata ed uscita si ottiene con le variabili:
upspeedgraph, downspeedgraph, upspeed e downspeed
“hr” indica una linea di separazione

Disk IO

	${hr}
	${font FontAwesome}?${font} DiskIO:
	${goto 20}${diskiograph_read 30,178 06E9F8 2104FA}${goto 202}${diskiograph_write 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${diskio_read}${font FontAwesome}${goto 202}?${font} ${diskio_write}

Il traffico di dati sull’HDD in lettura e scrittura si ottiene con le variabili:
diskiograph_read, diskiograph_write, diskio_read e diskio_write

Memory usage

	${hr}
	${font FontAwesome}?${font} Memory usage: 
        ${goto 20}${mem}/${memmax} (${memperc}%) | Swap: ${swapperc}%
	${goto 20}${memgraph 30,355 AAF5D0 00B35B}

“mem” indica la memoria utilizzata
“memmax” indica la memoria totale disponibile
“memperc” indica il rapporto tra le due
“swapperc” indica la percentuale di swap utilizzata


File Systems

	${hr}
	${color1}File systems:
	${color1}sda: /home${goto 125}${color}${fs_used /home}/${fs_size /home} ${fs_used_perc /home}% ${color1}					
	${color1}sda: /${goto 125}${color}${fs_used /}/${fs_size /} ${fs_used_perc /}% ${color1}								
        ${color1}sdb: /home${goto 125}${color}${fs_used /home/banco/mediaHD/}/${fs_size /home/banco/mediaHD/} ${fs_used_perc /home/banco/mediaHD/}% ${color1}							

“fs_used” indica la quantità di spazio utilizzato
“fs_size” indica la quantità di spazio totale disponibile
“fs_used_perc” indica la quantità di spazio disponibile occupata

Temperatures

	${hr}
	${color1}Temperatures in Celsius:
	${color1}sda			${alignr}	${color} ${execi 10 hddtemp /dev/sda | cut -c32-36}
	${color1}sdb			${alignr}	${color} ${execi 10 hddtemp /dev/sdb | cut -c31-36}
	${color1}Core0 			${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
	${color1}Core1 			${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}
	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
	${hr}

execi esegue il comando “command” ogni “num” secondi.
Nel caso specifico viene eseguito

hddtemp /dev/sda | cut -c32-36

ecco il perchè dell’assegnare il bit SUID ad hddtemp, che altrimenti, senza sudo non ritornerebbe nessun output. Dalla stringa in output di hddtem si estrapolano i gradi tramite cut.
Nel mio caso, avendo 2 HDD, si esegue la stessa cosa, sia per sda che sdb.
Per i processori si utilizza invece sensors.

	${color1}Core0 			${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
	${color1}Core1 			${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}

Il discorso GPU invece dipende dai driver utilizzati.
Nel mio caso, avendo installato i driver NVIDIA proprietari, è necessario utilizzare il tool nvidia-settings con:

	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C

Con i driver open invece, è sempre possibile estrapolare i dati con sensors.
sensors può essere eseguito da terminale per visualizzare parecchie informazioni

	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C

La temperatura inerente la GPU, dovrebbe essere qualcosa simile a “temp1”, in questo caso:

sensors | grep "temp"

Nel mio caso l’output sarebbe di più righe e quindi ci si potrebbe avvalere di cut e awk.
Con awk selezionerei solo la seconda riga, poi filtrerei solo i caratteri indicanti la temperatura:

sensors | grep "temp1" | awk 'FNR == 2 {print}' | cut -c16-19}°C

Cpus

	${hr}
	${goto 20}CPU0: ${cpu cpu0}%${goto 100}${cpubar 7,80 cpu0}
	${goto 20}CPU1: ${cpu cpu1}%${goto 100}${cpubar 7,80 cpu1}
	${hr}
	${color #FFFF00}${goto 20}Name ${goto 200}Pid${goto 255}Cpu%${goto 310}Mem%${color}
	${goto 20}${top name 1} ${goto 180}${top pid 1}${goto 235}${top cpu 1}${goto 290}${top mem 1}
	${goto 20}${top name 2} ${goto 180}${top pid 2}${goto 235}${top cpu 2}${goto 290}${top mem 2}
	${goto 20}${top name 3} ${goto 180}${top pid 3}${goto 235}${top cpu 3}${goto 290}${top mem 3}
	${goto 20}${top name 4} ${goto 180}${top pid 4}${goto 235}${top cpu 4}${goto 290}${top mem 4}
	${goto 20}${top name 5} ${goto 180}${top pid 5}${goto 235}${top cpu 5}${goto 290}${top mem 5}

Qui vengono indicate le cpu e le barre grafiche (cpubar)
Infine con top vengon mostrati i 5 processi più esosi di risorse.

Inserire in avvio automatico il nostro script personalizzato.

Nel mio caso (xfce4) avviare Sessione e Avvio e nella sezione Avvio Automatico aggiungere
la voce conky, la descrizione del comando e il comando conky stesso:

Riavviando conky dovrebbe avviarsi in automatico secondo le nostre indicazioni.

Categorie:Conky, Xfce Tag: , ,