Colors_conky
Este conky resume-se 7 círculos que simulam uma espécie de concavidade circular que é preenchida com cores consoante a utilização de cada aspeto do computador. Por ordem de cima para baixo os círculos indicam as seguintes informações:
- Processador utilizado
- Temperatura
- Memória Ram utilizada
- Upload da rede
- Download da rede
- Espaço ocupado na partição da Raiz
- Espaço ocupado na partição da /home (pasta pessoal)
O conky foi desenhado por
Dany e ele pode ser obtido originalmente neste
link. O Conky deste link tem alguns pressupostos: ele tem de ser guardado na Pasta pessoal (ficando à vista de toda a gente); tem um bug que é uma localização absoluta de uma imagem para o computador do Dany; e ele utiliza a placa de rede por cabo, ao invés da placa wireless para mostrar as estatísticas de utilização.
Por estes motivos referidos acima, eu resolvi fazer as minhas modificações (quase que já é costume!). Então fiz as seguintes modificações: pus as configurações de forma a que se ponha os ficheiros numa pasta oculta chamada ".conky", para ficarem salvaguardados; pus o ficheiro lua sem links absolutos para que a imagem de fundo seja carregada em qualquer computador; alterei a placa de rede para utilizar o valor comum para as placas wireless (o Wlan0) e ainda fiz alguns ajustes de posicionamento das letras.
Caso você precise de alterar a placa de rede (por cabo ou wireless) procure no ficheiro ".lua.lua" pela parte onde diz "wlan0" das configurações abaixo (no caso do ficheiro original deve procurar por eth0) e altere para o valor correto. Se precisar de ajuda neste aspeto pergunte aqui neste tópico!
Instalação do Conky
A instalação desta configuração do conky apresentado na imagem acima (com as minhas modificações) é relativamente simples. Antes de mais, como é óbvio você precisa de ter o
Conky instalado. Depois precisa de instalar as fontes
Aller que podem ser obtidas neste link (só precisa de instalar as fontes "Aller_Bd.ttf").
Quando já tiver estes dois pré-requisitos, grave os 3 ficheiros seguintes na pasta oculta chamada ".conky" que deve estar presente na sua Pasta Pessoal. Caso ela não exista (por padrão não existe!) crie uma exatamente com esse nome, mas sem aspas. Os ficheiros que deverá colocar são os seguintes (sempre sem aspas nos nomes):
- Um ficheiro de texto com o nome ".lua.lua" e com o seguinte conteúdo:
- Código: Selecionar todos
--[[
Ring Meters by londonali1010 (2009)
This script draws percentage meters as rings. It is fully customisable; all options are described in the script.
IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num > 5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num > 3; conversely if you update Conky every 0.5s, you should use update_num > 10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.
To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
lua_load ~/scripts/rings-v1.2.1.lua
lua_draw_hook_pre ring_stats
Changelog:
+ v1.2.1 -- Fixed minor bug that caused script to crash if conky_parse() returns a nil value (20.10.2009)
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]
settings_table = {
{
name='cpu',
arg='cpu0',
max=100,
bg_colour=0xffffff,
bg_alpha=0.0,
fg_colour=0x00C9FF,
fg_alpha=1.0,
x=35, y=35,
radius=29,
thickness=7,
start_angle=0,
end_angle=360
},
{
name='hwmon',
arg='temp 1',
max=100,
bg_colour=0xffffff,
bg_alpha=0.0,
fg_colour=0xFF00D9,
fg_alpha=1.0,
x=35, y=135,
radius=29,
thickness=7,
start_angle=0,
end_angle=360
},
{
name='memperc',
arg='',
max=100,
bg_colour=0xffffff,
bg_alpha=0.0,
fg_colour=0x47B13E,
fg_alpha=1.0,
x=35, y=235,
radius=29,
thickness=7,
start_angle=0,
end_angle=360
},
{
name='upspeedf',
--arg='eth0',
arg='wlan0',
max=33,
bg_colour=0xffffff,
bg_alpha=0.0,
fg_colour=0xFF9401,
fg_alpha=1.0,
x=35, y=335,
radius=29,
thickness=7,
start_angle=0,
end_angle=360
},
{
name='downspeedf',
--arg='eth0',
arg='wlan0',
max=65,
bg_colour=0xffffff,
bg_alpha=0.0,
fg_colour=0x6948FF,
fg_alpha=1.0,
x=35, y=435,
radius=29,
thickness=7,
start_angle=0,
end_angle=360
},
{
name='fs_used_perc',
arg='/',
max=100,
bg_colour=0xffffff,
bg_alpha=0.0,
fg_colour=0xFF2C34,
fg_alpha=1.0,
x=35, y=535,
radius=29,
thickness=7,
start_angle=0,
end_angle=360
},
{
name='fs_used_perc',
arg='/home',
max=100,
bg_colour=0xffffff,
bg_alpha=0.0,
fg_colour=0xEAE710,
fg_alpha=1.0,
x=35, y=635,
radius=29,
thickness=7,
start_angle=0,
end_angle=360
},
}
settings_t = {
}
require 'cairo'
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
function draw_ring(cr,t,pt)
local w,h=conky_window.width,conky_window.height
local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']
local angle_0=sa*(2*math.pi/360)-math.pi/2
local angle_f=ea*(2*math.pi/360)-math.pi/2
local t_arc=t*(angle_f-angle_0)
-- Draw background ring
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
cairo_set_line_width(cr,ring_w)
cairo_stroke(cr)
-- Draw indicator ring
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
cairo_stroke(cr)
end
function draw_ring_cc(cr,t,pt)
local w,h=conky_window.width,conky_window.height
local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']
local angle_0=sa*(2*math.pi/360)-math.pi/2
local angle_f=ea*(2*math.pi/360)-math.pi/2
local t_arc=t*(angle_f-angle_0)
-- Draw background ring
cairo_arc_negative(cr,xc,yc,ring_r,angle_0,angle_f)
cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
cairo_set_line_width(cr,ring_w)
cairo_stroke(cr)
-- Draw indicator ring
cairo_arc_negative(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
cairo_stroke(cr)
end
function conky_ring_stats()
local function setup_rings(cr,pt)
local str=''
local value=0
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
if value == nil then value = 0 end
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
local function setup_rings_cc(cr,pt)
local str=''
local value=0
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
if value == nil then value = 0 end
pct=value/pt['max']
draw_ring_cc(cr,pct,pt)
end
if conky_window==nil then return end
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(settings_table) do
setup_rings(cr,settings_table[i])
end
for i in pairs(settings_t) do
setup_rings_cc(cr,settings_t[i])
end
end
end
require 'imlib2'
function init_drawing_surface()
imlib_set_cache_size(4096 * 1024)
imlib_context_set_dither(1)
end
function draw_image()
init_drawing_surface()
--you'll need to change the path here (keep it absolute!)
image = imlib_load_image(os.getenv("HOME") .."/.conky/conky.png")
if image == nil then return end
imlib_context_set_image(image)
imlib_render_image_on_drawable(0,0)
imlib_free_image()
end
function conky_start()
if conky_window == nil then return end
draw_image()
end
- O ficheiro de configuração do Conky, também um ficheiro de texto, com o nome "conkyrc" e com o conteúdo seguinte:
- Código: Selecionar todos
# -- Conky settings -- #
background yes
update_interval 1
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
short_units yes
double_buffer yes
no_buffers yes
text_buffer_size 2048
imlib_cache_size 0
own_window_type normal
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
own_window yes
own_window_transparent yes
#own_window_argb_visual yes
#own_window_title pie/ring-chart + text
border_inner_margin 0
border_outer_margin 0
minimum_size 70 700
alignment tr
gap_x 30
gap_y 160
# -- Graphics settings -- #
draw_shades no
draw_outline no
default_color cccccc
draw_borders no
draw_graph_borders no
use_xft yes
xftfont Aller:Bold:size=10
xftalpha 0.5
# -- Lua load -- #
lua_load ~/.conky/.lua.lua
lua_draw_hook_pre ring_stats
lua_draw_hook_post start
#at least one line (empty or not) after TEXT
TEXT
${goto 22}${voffset 27}CPU
${goto 19}${voffset 83}TEMP
${goto 22}${voffset 83}RAM
${goto 27}${voffset 83}UP
${goto 16}${voffset 83}DOWN
${goto 18}${voffset 83}ROOT
${goto 17}${voffset 83}HOME
- Deverá guardar a imagem deste link com o nome "conky.png"
Por fim, para abrir esta configuração do conky, basta executar o comando seguinte que abre o Conky e chama o ficheiro da configuração:
conky -c ~/.conky/conkyrc
Vídeo demonstrativo
Neste vídeo mostra-se toda a instalação apresentada na secção anterior, desde a instalação do Conky à execução desta configuração: