sâmbătă, 27 noiembrie 2010

Vremea in imagini in coltul desktop-ului

Pentru cei care nu stiu, conky e jucaria cea mai utila pentru desktopul linuxului, practic e o fereastra transparenta (daca vrei sa fie) in care cu ajutorul unui fisier de configurare, poti formata text, imagine, informatii diverse despre servicii, programe, hardware.
Cel mai important lucru este ca poate fi folosit ca o platforma de afisare a rezultatului unui alt program cu conditia sa fie imagine sau text, logic.
Prin urmare se pot face tot felul de "jucarele" utile cu ajutorul limbajelor de scripting incluse in linux, bash, python, perl, etc.

Sunt multe scripturi si exemple pe net cu privire la afisarea vremii, dar toate implica tot felul de complicaturi cand vine vorba de formatare, de culesul datelor de pe server, si de cele mai multe ori e prea complicat, pur si simplu.
Tocmai asta e nasolia. Conky are propriul "limbaj de programare" si inca nu am gasit un tool cu care sa poti configura "cu mausu", prin urmare, trebuie sa folosesti vechea metoda: editarea manuala text.

Ca sa nu mai tragem de timp, am gasit un site care pur si simplu se potriveste de fiecare data cu realitatea(95% din cazuri) si care ofera un fel de bannere sub forma de imagini, exact ce avem nevoie ca sa afisam in conky.
Rezultatul pe desktop arata asa:


Observi ca ai minimul de informatii necesare:


- de cat timp ruleaza sistemul de operare
- cat e folosit CPU in acest moment
- top 3 cele mai "mancacioase" procese executate
- ministatistica spatiului utilizat in partitia /home (user folder)
- vremea in imagini pe 2 locatii (poti pune mai multe...)



Si totul e facut cu un minim de script-uri bash si python, din mici resturi de programe si informatii de pe net luate in timp real.

Dar hai sa iti arat cum se face:
In primul rand, daca nu le ai instalate, e cazul s-o faci:

sudo apt-get install conky
Deschide cu gedit sau cu ce vrei .conkyrc , sterge tot si da paste la asta:


use_xft yes
xftfont DejaVu Sans Mono:size=9
override_utf8_locale yes



text_buffer_size 2048
update_interval 4
total_run_times 0
double_buffer yes
no_buffers yes
net_avg_samples 1
cpu_avg_samples 1



background no
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager



imlib_cache_size 0
default_color D8D8D8
draw_borders no
border_width 0
border_inner_margin 0
draw_graph_borders yes
draw_outline no
draw_shades no



color0 E6E6E6
color1 B5DFFF
color2 E6E6E6
color3 F1F1BE
color4 FFFFFF
alignment top_right
gap_x 10
gap_y 10
minimum_size 182 0
maximum_width 250



default_bar_size 60 8



imlib_cache_size 0



TEXT
${font DejaVu Sans Mono:size=9}${uptime} - CPU: ${color1}${cpu cpu1}%${color}
${font DejaVu Sans Mono:bold:size=7}Processes: ${goto 113}CPU${alignr}RAM${color}${font DejaVu Sans Mono:size=7}
${voffset -1}${color2}${top name 1}${color}${color1} ${goto 100}${top cpu 1}${alignr }${top mem 1}${color}
${voffset -1}${color2}${top name 2}${color}${color1} ${goto 100}${top cpu 2}${alignr}${top mem 2}${color}
${voffset -1}${color2}${top name 3}${color}${color1} ${goto 100}${top cpu 3}${alignr}${top mem 3}${color}
#${voffset -1}${color2}${top name 4}${color}${color1} ${goto 100}${top cpu 4}${alignr}${top mem 4}${color}
#${voffset -1}${goto 38}${color2}${top name 5}${color}${color1} ${goto 127}${top cpu 5}${alignr }${top mem 5}${color}
Used ${fs_used /home/unixbox} of ${fs_size /home/unixbox} meaning ${fs_used_perc /home/unixbox}%
${if_existing /proc/net/route eth0}${execi 4 ~/cnkscr/meteobanner}${image /tmp/mban.png -p 25,90}${image /tmp/mbanb.png -p 25,206}${color}${endif}

Lasa 20 de linii blank catre finalul fisierului, pentru ca asa se realizeaza spatiul necesar pentru a afisa imagini in conky (imaginile sunt considerate background si nu elemente)
Inlocuieste /home/unixbox cu /home/numele_userului_tau.
Daca ai mai mult de 1 core pe procesor, vezi linia
${font DejaVu Sans Mono:size=9}${uptime} - CPU: ${color1}${cpu cpu1}%${color}
adauga cpu2, cpu3 si tot asa...
${font DejaVu Sans Mono:size=9}${uptime} - CPU: ${color1}${cpu cpu1}% | ${cpu cpu2}% | ${cpu cpu3}% | ${cpu cpu4}%${color}
sau pur si simplu pentru un dual core:
${font DejaVu Sans Mono:size=9}${uptime} - CPU: ${color1}${cpu cpu1}% | ${cpu cpu2}%${color}
Salveaza, si fa un nou folder cnkscr in care creaza fisierul meteobanner:
mkdir cnkscr
gedit ~/cnkscr/meteobanner


#!/bin/bash
url="http://img.weatheradd.com/i/embed/vremea_buzau_embed1.png"
url2="http://img.weatheradd.com/i/embed/vremea_bucuresti_embed1.png"
wget -q $url -O /tmp/zmf.png
wget -q $url2 -O /tmp/zmfb.png
if [ -f /tmp/zmf.png ]
then
convert -crop '150x112+0+0' /tmp/zmf.png /tmp/mban.png

#eog /tmp/mban.png
rm -f /tmp/zmf.png
else
echo "meteo unavailable!"
fi
if [ -f /tmp/zmfb.png ]
then
convert -crop '150x112+0+0' /tmp/zmfb.png /tmp/mbanb.png

#eog /tmp/mban.png
rm -f /tmp/zmfb.png
fi

Salveaza, da-i drepturi de executie cu

chmod +x ~/cnkscr/meteobanner
Eu am folosit doua url-uri pentru doua locatii.
Cum aflam url-urile astea? Pai mergem pe www.weatheradd.com si cautam orasul care ne intereseaza.
Apoi ii luam pur si simplu linkul catre imagine si inlocuim in script:
Scriptul bash se va ocupa de obtinerea acestor imagini, si o sa taie "click to embed" de jos, ca nu ar da bine pe desktop asa ceva, nu? :)

Daca e prima data cand folosesti conky, ca sa il pui in start-up, nu e chiar asa simplu, e bine sa porneasca cu o oarecare intarziere, altfel se cam bate pe resurse cu interfata grafica, nu ma intreba de ce ca nu stiu...

gedit ~/cnkscr/startconky
#!/bin/bash
sleep 30 && conky


chmod +x ~/cnkscr/startconky
Si in System/Preferences/Startup Applications dam un Add si bagam la Command :

~/cnkscr/startconky

Sau poti porni conky chiar acum bagand in consola.

In concluzie, posibilitatile sunt limitate doar de imaginatie si limbajele de scripting.
Alta data iti voi arata cum sa iti pui notificarile Facebook pe desktop si tot asa...
Asta a fost. Stiu, complicat, dar eu am explorat ca tu sa iei de-a gata acuma de la mine :)

Share this on: Share On Facebook ! Add To Del.icio.us ! Share On Digg ! Share On StumbleUpon ! Blog Feed !

0 comentarii:

Trimiteți un comentariu