So che non sono il primo a chiedere questo, e prima di scrivere ho visto in lungo e largo google e questo forum
Sostanzalmente vorrei fare uno script che mi permetta di gestire il wallpaer (pictures, gradiente e solid).
Il problema principale riguarda la parte del gradient, poic la funzione di color selct di zenity da l'output in rgb nel seguente modo
rgb(xxx,yyy,zzz).
ora io dovrei convertire i tre valori in esadecimale. L'ostacolo non è tanto con convertire in hex, ma estrarre i singoli valori:xx,yyy,zzz. La soluzione che ho trovato (usando sed e poi cut) è troppo l'unga, percio mi chiedevo se con le espressioni regolari, in un colpo solo posso estrarre i songoli valori. La concatenazionefinale non è un problema.
Script di conversione rgb in hex
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- Linpassion
- Linux 2.x
- Messaggi: 208
- Iscritto il: mar ott 30, 2012 11:17
- Slackware: 14.0
- Kernel: 3.2.9-smp
- Desktop: xfce, fluxbox
- targzeta
- Iper Master
- Messaggi: 6538
- Iscritto il: gio nov 03, 2005 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Script di conversione rgb in hex
Intanto che posti quello che hai fatto, vedi se può andar bene questo:
Emanuele
Codice: Seleziona tutto
$> a=($(echo 'rgb(xxx,yyy,zzz)' | sed 's/.*(\([^)]*\))/\1/;s/,/ /g'))
$> set | grep '^a='
a=([0]="xxx" [1]="yyy" [2]="zzz")
Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
- Linpassion
- Linux 2.x
- Messaggi: 208
- Iscritto il: mar ott 30, 2012 11:17
- Slackware: 14.0
- Kernel: 3.2.9-smp
- Desktop: xfce, fluxbox
Re: Script di conversione rgb in hex
si il mio codice sarebbe questo
Codice: Seleziona tutto
function SETGRADIENT ()
{
# Converione da rbg ad dec .. echo "o base=16; nummero rgb" | bc ( esempio echo "obase=16; nummero 255"|bc -> FF)
# FROM - primo colore
FROM=$(zenity --color-selection)
# qui ci va la stringa che che con sed eleminavo le parentesi e la parola rgb
# con cut ho selezionato i tre colori
echo $FROM | cut -d',' -f1,
echo $FROM | cut -d',' -f2
echo $FROM | cut -d',' -f3
# TO secondo colore
TO=$(zenity --color-selection --show-palette)
# MODE tipo di gradiente
#MODE=$(zenity --list --text="Gradient mode" --radiolist --column "" --column "Mode" TRUE Horizontal FALSE Vertical FALSE Diagonal FALSE Crossdiagonal False Pipecross FALSE Elliptic FALSE Rectangle FALSE Piramid)
# Applicazione delle impostazioni
fbsetroot -gradient "$MODE" -from $FROM -to $TO
}
- targzeta
- Iper Master
- Messaggi: 6538
- Iscritto il: gio nov 03, 2005 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Script di conversione rgb in hex
Ora però manca sapere il formato di $FROM e $TO. Dal manuale mi pare di capire che tu debba passarli come '#XXXXXX' (esadecimale), però sicuro che non funziona anche con "rgb:<0,255>/<0,255>/<0,255>"? Purtroppo non ho fluxbox e non posso provare.
Nel primo caso: e quindi:
Nel secondo caso, semplicemente:
Emanuele
Nel primo caso:
Codice: Seleziona tutto
function rgbtohex ()
{
hex=$(echo "obase=16;$1" | sed 's/rgb(\([^)]*\))/\1/;s/,/;/g'| bc | tr -d '\n')
echo "#${hex}"
}
Codice: Seleziona tutto
FROM=$(rgbtohex $(zenity --color-selection))
Nel secondo caso, semplicemente:
Codice: Seleziona tutto
FROM=$(zenity --color-selection | tr '(,)' ':/\0')
Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà