From bd8c0fc134e004eebb40d6b0e74c2c860c24fb91 Mon Sep 17 00:00:00 2001 From: lance colton Date: Wed, 9 Nov 2011 00:43:30 -0700 Subject: [PATCH] harmattan version. --- data/LoadAll.lua | 30 ++ data/Makefile.am | 2 +- data/bargraph_eng.lua | 580 +++++++++++++++++++++++++++++++++++++ data/box.lua | 309 ++++++++++++++++++++ data/conky.conf | 84 +++--- data/conky.conf.nolua | 96 +++++++ data/conky_no_x11.conf | 52 ---- data/graph.lua | 529 ++++++++++++++++++++++++++++++++++ data/luatraverse.lua | 195 +++++++++++++ data/misc.lua | 204 +++++++++++++ data/n950-kobol.jpg | Bin 0 -> 110337 bytes data/piechart.lua | 654 ++++++++++++++++++++++++++++++++++++++++++ data/strict.lua | 42 +++ data/testCairo.lua | 236 +++++++++++++++ data/text.lua | 558 +++++++++++++++++++++++++++++++++++ debian/changelog | 14 + debian/conky-n900.docs | 6 - debian/conky-n900.install | 1 - debian/conky-n900.menu | 2 - debian/conky-n950.docs | 6 + debian/conky-n950.install | 1 + debian/conky-n950.menu | 2 + debian/control | 39 +-- debian/optify | 1 - debian/rules | 27 +- lua_scripts/LoadAll.lua | 2 + lua_scripts/bargraph_eng.lua | 4 +- lua_scripts/conky.conf | 92 ++++++ lua_scripts/graph.lua | 232 +++++++-------- lua_scripts/n900-kobol.jpg | Bin 98431 -> 0 bytes lua_scripts/n950-kobol.jpg | Bin 0 -> 110337 bytes lua_scripts/piechart.lua | 6 +- lua_scripts/text.lua | 67 ++--- src/dbus/Makefile.am | 10 +- src/linux.c | 104 ++++--- 35 files changed, 3847 insertions(+), 340 deletions(-) create mode 100644 data/LoadAll.lua create mode 100644 data/bargraph_eng.lua create mode 100644 data/box.lua create mode 100644 data/conky.conf.nolua delete mode 100644 data/conky_no_x11.conf create mode 100644 data/graph.lua create mode 100644 data/luatraverse.lua create mode 100644 data/misc.lua create mode 100644 data/n950-kobol.jpg create mode 100644 data/piechart.lua create mode 100644 data/strict.lua create mode 100644 data/testCairo.lua create mode 100644 data/text.lua delete mode 100644 debian/conky-n900.docs delete mode 100644 debian/conky-n900.install delete mode 100644 debian/conky-n900.menu create mode 100644 debian/conky-n950.docs create mode 100644 debian/conky-n950.install create mode 100644 debian/conky-n950.menu delete mode 100644 debian/optify create mode 100644 lua_scripts/conky.conf delete mode 100644 lua_scripts/n900-kobol.jpg create mode 100644 lua_scripts/n950-kobol.jpg diff --git a/data/LoadAll.lua b/data/LoadAll.lua new file mode 100644 index 0000000..ca4c013 --- /dev/null +++ b/data/LoadAll.lua @@ -0,0 +1,30 @@ +do + package.path = "/etc/conky/?.lua" --loads all lua files from here + require 'text' --specify each one we really want again like this, text = text.lua + require 'graph' + require 'bargraph_eng' + require 'misc' + require 'luatraverse' + require 'strict' + require 'box' + + --local count + + function conky_main() --conky will run this if you specified to load 'main' in the conf + conky_main_box() + conky_main_bars() + conky_main_graph() + conky_draw_text() + --collectgarbage(collect) + --local y = traverse.countreferences(deleteme) + --print (tostring(y)) + --count = #(_G) + --local run = true + --io.output("/home/user/MyDocs/lua/lua.log") + --for n,v in pairs(_G) do + -- io.write (tostring(n)," ",tostring(v),"\n") + --end + --io.write (tostring(count)) + --print (count) + end +end \ No newline at end of file diff --git a/data/Makefile.am b/data/Makefile.am index a7607d9..480b2c1 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -26,6 +26,6 @@ # configdir = ${sysconfdir}/conky -dist_config_DATA = conky.conf conky_no_x11.conf +dist_config_DATA = bargraph_eng.lua box.lua conky.conf conky.conf.nolua graph.lua LoadAll.lua luatraverse.lua misc.lua n950-kobol.jpg piechart.lua strict.lua testCairo.lua text.lua # vi:set ts=4 sw=4 noet ai nocindent syntax=automake: diff --git a/data/bargraph_eng.lua b/data/bargraph_eng.lua new file mode 100644 index 0000000..675941e --- /dev/null +++ b/data/bargraph_eng.lua @@ -0,0 +1,580 @@ + + +--[[ BARGRAPH WIDGET + v2.0 by wlourf (12.07.2010) + this widget draws a bargraph with different effects + http://u-scripts.blogspot.com/2010/07/bargraph-widget.html + + +Parameters are : +3 parameters are mandatory +name - the name of the conky variable to display, for example for {$cpu cpu0}, just write name="cpu" +arg - the argument of the above variable, for example for {$cpu cpu0}, just write arg="cpu0" + arg can be a numerical value if name="" +max - the maximum value the above variable can reach, for example, for {$cpu cpu0}, just write max=100 + +Optional parameters: +x,y - coordinates of the starting point of the bar, default = middle of the conky window +cap - end of cap line, ossibles values are r,b,s (for round, butt, square), default="b" + http://www.cairographics.org/samples/set_line_cap/ +angle - angle of rotation of the bar in degress, default = 0 (i.e. a vertical bar) + set to 90 for an horizontal bar +skew_x - skew bar around x axis, default = 0 +skew_y - skew bar around y axis, default = 0 +blocks - number of blocks to display for a bar (values >0) , default= 10 +height - height of a block, default=10 pixels +width - width of a block, default=20 pixels +space - space between 2 blocks, default=2 pixels +angle_bar - this angle is used to draw a bar on a circular way (ok, this is no more a bar !) default=0 +radius - for cicular bars, internal radius, default=0 + with radius, parameter width has no more effect. + +Colours below are defined into braces {colour in hexadecimal, alpha} +fg_colour - colour of a block ON, default= {0x00FF00,1} +bg_colour - colour of a block OFF, default = {0x00FF00,0.5} +alarm - threshold, values after this threshold will use alarm_colour colour , default=max +alarm_colour - colour of a block greater than alarm, default=fg_colour +smooth - (true or false), create a gradient from fg_colour to bg_colour, default=false +mid_colour - colours to add to gradient, with this syntax {position into the gradient (0 to1), colour hexa, alpha} + for example, this table {{0.25,0xff0000,1},{0.5,0x00ff00,1},{0.75,0x0000ff,1}} will add + 3 colurs to gradient created by fg_colour and alarm_colour, default=no mid_colour +led_effect - add LED effects to each block, default=no led_effect + if smooth=true, led_effect is not used + possibles values : "r","a","e" for radial, parallelel, perdendicular to the bar (just try!) + led_effect has to be used with theses colours : +fg_led - middle colour of a block ON, default = fg_colour +bg_led - middle colour of a block OFF, default = bg_colour +alarm_led - middle colour of a block > ALARM, default = alarm_colour + +reflection parameters, not avaimable for circular bars +reflection_alpha - add a reflection effect (values from 0 to 1) default = 0 = no reflection + other values = starting opacity +reflection_scale - scale of the reflection (default = 1 = height of text) +reflection_length - length of reflection, define where the opacity will be set to zero + calues from 0 to 1, default =1 +reflection - position of reflection, relative to a vertical bar, default="b" + possibles values are : "b","t","l","r" for bottom, top, left, right + + +v1.0 (10 Feb. 2010) original release +v1.1 (13 Feb. 2010) numeric values can be passed instead conky stats with parameters name="", arg = numeric_value +v1.2 (28 Feb. 2010) just renamed the widget to bargraph +v1.3 (03 March 2010) added parameters radius & angle_bar to draw the bar in a circular way +v2.0 (12 Jul. 2010) rewrite script + add reflection effects and parameters are now set into tables +]] + +require 'cairo' + +----------------START OF PARAMETERS ---------- +function conky_main_bars() + local bars_settings={ + + { + name="fs_used", + arg="/", + max=conky_parse("${to_bytes ${fs_size /}}"), + --alarm=1,--no alarm with 1 smooth block, don't do extra work here + bg_colour={0x00ff00,0.25}, + fg_colour={0x00ff00,1}, + alarm_colour={0xff0000,1}, + x=5,y=112, + angle=90, + blocks=1, + height=210,width=18, + smooth=true, + mid_colour={{0.5,0xffff00,1}}, + }, + + { + name="fs_used", + arg="/home", + max=conky_parse("${to_bytes ${fs_size /home}}"), + --alarm=1,--no alarm with 1 smooth block, don't do extra work here + bg_colour={0x00ff00,0.25}, + fg_colour={0x00ff00,1}, + alarm_colour={0xff0000,1}, + x=5,y=132, + angle=90, + blocks=1, + height=210,width=18, + smooth=true, + mid_colour={{0.5,0xffff00,1}}, + }, + { + name="fs_used", + arg="/home/user/MyDocs", + max=conky_parse("${to_bytes ${fs_size /home/user/MyDocs}}"), + --alarm=1,--no alarm with 1 smooth block, don't do extra work here + bg_colour={0x00ff00,0.25}, + fg_colour={0x00ff00,1}, + alarm_colour={0xff0000,1}, + x=5,y=152, + angle=90, + blocks=1, + height=210,width=18, + smooth=true, + mid_colour={{0.5,0xffff00,1}}, + DrawMe=conky_parse("${if_mounted /home/user/MyDocs}1$endif") + }, + --[[{ + name="fs_used", + arg="/media/mmc1", + max=conky_parse("${to_bytes ${fs_size /media/mmc1}}"), + --alarm=1,--no alarm with 1 smooth block, don't do extra work here + bg_colour={0x00ff00,0.25}, + fg_colour={0x00ff00,1}, + alarm_colour={0xff0000,1}, + x=5,y=172, + angle=90, + blocks=1, + height=210,width=18, + smooth=true, + mid_colour={{0.5,0xffff00,1}}, + DrawMe=conky_parse("${if_mounted /media/mmc1}1$endif") + },]] + { + name="mem", + arg="", + max=conky_parse("${to_bytes ${memmax}}"), + alarm=100, + bg_colour={0x00ff00,0.25}, + fg_colour={0x00ff00,1}, + alarm_colour={0xff0000,1}, + x=9,y=95, + angle=90, + blocks=18, + height=10,width=18, + smooth=true, + --mid_colour={{0.5,0xffff00,1}}, + }, + { + name="battery_percent", + arg="", + max=100, + angle=90, + alarm=25, + alarm_colour={0x00ffff,0.5}, + bg_colour={0x00ffff,0.5}, + fg_colour={0xff0000,0.5}, + led_effect="e", + bg_led ={0x0000ff,1}, + fg_led ={0xffff00,1}, + x=575,y=40, + skew_y=15, + }, + { + name="wireless_link_qual_perc", + arg="wlan0", + max=100, + angle=270, + bg_colour={0x00ff33,0}, + fg_colour={0x00ff33,1}, + blocks=10, + x=390,y=225, + height=3, + cap="b", + angle_bar=20, + radius=9, + mid_colour={{0,0xFF0000,1},{0.5,0xff0000,1},{0.7,0xffff00,1},{0.85,0x00ff33,1}}, + smooth = true, + DrawMe=conky_parse("${if_empty ${wireless_essid wlan0}}${else}1$endif"), + }, + { + name="wireless_link_qual_perc", + arg="wlan0", + max=100, + angle=90, + bg_colour={0x00ff33,0}, + fg_colour={0x00ff33,1}, + blocks=10, + x=410,y=225, + height=3, + cap="b", + angle_bar=20, + radius=9, + mid_colour={{0,0xFF0000,1},{0.5,0xff0000,1},{0.7,0xffff00,1},{0.85,0x00ff33,1}}, + smooth = true, + DrawMe=conky_parse("${if_empty ${wireless_essid wlan0}}${else}1$endif"), + }, + { + name="cell_radio_percent", + arg="", + max=100, + bg_colour={0x00ff33,0}, + fg_colour={0x00ff33,1}, + blocks=10, + x=445, + y=49, + height=3, + cap="b", + angle_bar=20, + angle=90, + radius=9, + mid_colour={{0,0xFF0000,1},{0.5,0xff0000,1},{0.7,0xffff00,1},{0.85,0x00ff33,1}}, + smooth = true, + --DrawMe=conky_parse("${if_up gprs0}1$endif") + }, + } + + 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) + cr = cairo_create(cs) + --prevent segmentation error when reading cpu state + if tonumber(conky_parse('${updates}'))>3 then + for i in pairs(bars_settings) do + draw_multi_bar_graph(bars_settings[i]) + end + end + cairo_destroy(cr) + cairo_surface_destroy(cs) + cr=nil +end + +function draw_multi_bar_graph(t) + cairo_save(cr) + --check values + if t.DrawMe~=nil and t.DrawMe ~= "1" then return end + if t.name==nil and t.arg==nil then + print ("No input values ... use parameters 'name' with 'arg' or only parameter 'arg' ") + return + end + if t.max==nil then + print ("No maximum value defined, use 'max'") + return + end + if t.name==nil then t.name="" end + if t.arg==nil then t.arg="" end + + --set default values + if t.x == nil then t.x = conky_window.width/2 end + if t.y == nil then t.y = conky_window.height/2 end + if t.blocks == nil then t.blocks=10 end + if t.height == nil then t.height=10 end + if t.angle == nil then t.angle=0 end + t.angle = t.angle*math.pi/180 + --line cap style + if t.cap==nil then t.cap = "b" end + local cap="b" + for i,v in ipairs({"s","r","b"}) do + if v==t.cap then cap=v end + end + local delta=0 + if t.cap=="r" or t.cap=="s" then delta = t.height end + if cap=="s" then cap = CAIRO_LINE_CAP_SQUARE + elseif cap=="r" then + cap = CAIRO_LINE_CAP_ROUND + elseif cap=="b" then + cap = CAIRO_LINE_CAP_BUTT + end + --end line cap style + --if t.led_effect == nil then t.led_effect="r" end + if t.width == nil then t.width=20 end + if t.space == nil then t.space=2 end + if t.radius == nil then t.radius=0 end + if t.angle_bar == nil then t.angle_bar=0 end + t.angle_bar = t.angle_bar*math.pi/360 --halt angle + --colours + if t.bg_colour == nil then t.bg_colour = {0x00FF00,0.5} end + if #t.bg_colour~=2 then t.bg_colour = {0x00FF00,0.5} end + if t.fg_colour == nil then t.fg_colour = {0x00FF00,1} end + if #t.fg_colour~=2 then t.fg_colour = {0x00FF00,1} end + if t.alarm_colour == nil then t.alarm_colour = t.fg_colour end + if #t.alarm_colour~=2 then t.alarm_colour = t.fg_colour end + if t.mid_colour ~= nil then + for i=1, #t.mid_colour do + if #t.mid_colour[i]~=3 then + print ("error in mid_color table") + t.mid_colour[i]={1,0xFFFFFF,1} + end + end + end + if t.bg_led ~= nil and #t.bg_led~=2 then t.bg_led = t.bg_colour end + if t.fg_led ~= nil and #t.fg_led~=2 then t.fg_led = t.fg_colour end + if t.alarm_led~= nil and #t.alarm_led~=2 then t.alarm_led = t.fg_led end + if t.led_effect~=nil then + if t.bg_led == nil then t.bg_led = t.bg_colour end + if t.fg_led == nil then t.fg_led = t.fg_colour end + if t.alarm_led == nil then t.alarm_led = t.fg_led end + end + if t.alarm==nil then t.alarm = t.max end --0.8*t.max end + if t.smooth == nil then t.smooth = false end + if t.skew_x == nil then + t.skew_x=0 + else + t.skew_x = math.pi*t.skew_x/180 + end + if t.skew_y == nil then + t.skew_y=0 + else + t.skew_y = math.pi*t.skew_y/180 + end + if t.reflection_alpha==nil then t.reflection_alpha=0 end + if t.reflection_length==nil then t.reflection_length=1 end + if t.reflection_scale==nil then t.reflection_scale=1 end + --end of default values + + local function rgb_to_r_g_b(col_a) + return ((col_a[1] / 0x10000) % 0x100) / 255., ((col_a[1] / 0x100) % 0x100) / 255., (col_a[1] % 0x100) / 255., col_a[2] + end + + --functions used to create patterns + local function create_smooth_linear_gradient(x0,y0,x1,y1) + local pat = cairo_pattern_create_linear (x0,y0,x1,y1) + cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour)) + cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour)) + if t.mid_colour ~=nil then + for i=1, #t.mid_colour do + cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]})) + end + end + return pat + end + + local function create_smooth_radial_gradient(x0,y0,r0,x1,y1,r1) + local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1) + cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour)) + cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour)) + if t.mid_colour ~=nil then + for i=1, #t.mid_colour do + cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]})) + end + end + return pat + end + + local function create_led_linear_gradient(x0,y0,x1,y1,col_alp,col_led) + local pat = cairo_pattern_create_linear (x0,y0,x1,y1) ---delta, 0,delta+ t.width,0) + cairo_pattern_add_color_stop_rgba (pat, 0.0, rgb_to_r_g_b(col_alp)) + cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led)) + cairo_pattern_add_color_stop_rgba (pat, 1.0, rgb_to_r_g_b(col_alp)) + return pat + end + + local function create_led_radial_gradient(x0,y0,r0,x1,y1,r1,col_alp,col_led,mode) + local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1) + if mode==3 then + cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_alp)) + cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led)) + cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp)) + else + cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_led)) + cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp)) + end + return pat + end + + local function draw_single_bar() + --this fucntion is used for bars with a single block (blocks=1) but + --the drawing is cut in 3 blocks : value/alarm/background + --not zvzimzblr for circular bar + local function create_pattern(col_alp,col_led,bg) + local pat + if not t.smooth then + if t.led_effect=="e" then + pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led) + elseif t.led_effect=="a" then + pat = create_led_linear_gradient (t.width/2, 0,t.width/2,-t.height,col_alp,col_led) + elseif t.led_effect=="r" then + pat = create_led_radial_gradient (t.width/2, -t.height/2, 0, t.width/2,-t.height/2,t.height/1.5,col_alp,col_led,2) + else + pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp)) + end + else + if bg then + pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour)) + else + pat = create_smooth_linear_gradient(t.width/2, 0, t.width/2,-t.height) + end + end + return pat + end + + local y1=-t.height*pct/100 + local y2,y3=nil + if pct>(100*t.alarm/t.max) then + y1 = -t.height*t.alarm/100 + y2 = -t.height*pct/100 + if t.smooth then y1=y2 end + end + + if t.angle_bar==0 then + + --block for fg value + local pat = create_pattern(t.fg_colour,t.fg_led,false) + cairo_set_source(cr,pat) + cairo_rectangle(cr,0,0,t.width,y1) + cairo_fill(cr) + cairo_pattern_destroy(pat) + -- block for alarm value + if not t.smooth and y2 ~=nil then + pat = create_pattern(t.alarm_colour,t.alarm_led,false) + cairo_set_source(cr,pat) + cairo_rectangle(cr,0,y1,t.width,y2-y1) + cairo_fill(cr) + y3=y2 + cairo_pattern_destroy(pat) + else + y2,y3=y1,y1 + end + -- block for bg value + cairo_rectangle(cr,0,y2,t.width,-t.height-y3) + pat = create_pattern(t.bg_colour,t.bg_led,true) + cairo_set_source(cr,pat) + cairo_pattern_destroy(pat) + cairo_fill(cr) + end + end --end single bar + + local function draw_multi_bar() + --function used for bars with 2 or more blocks + for pt = 1,t.blocks do + --set block y + local y1 = -(pt-1)*(t.height+t.space) + local light_on=false + + --set colors + local col_alp = t.bg_colour + local col_led = t.bg_led + if pct>=(100/t.blocks) or pct>0 then --ligth on or not the block + if pct>=(pcb*(pt-1)) then + light_on = true + col_alp = t.fg_colour + col_led = t.fg_led + if pct>=(100*t.alarm/t.max) and (pcb*pt)>(100*t.alarm/t.max) then + col_alp = t.alarm_colour + col_led = t.alarm_led + end + end + end + + --set colors + --have to try to create gradients outside the loop ? + local pat + if not t.smooth then + if t.angle_bar==0 then + if t.led_effect=="e" then + pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led) + elseif t.led_effect=="a" then + pat = create_led_linear_gradient (t.width/2, -t.height/2+y1,t.width/2,0+t.height/2+y1,col_alp,col_led) + elseif t.led_effect=="r" then + pat = create_led_radial_gradient (t.width/2, y1, 0, t.width/2,y1,t.width/1.5,col_alp,col_led,2) + else + pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp)) + end + else + if t.led_effect=="a" then + pat = create_led_radial_gradient (0, 0, t.radius+(t.height+t.space)*(pt-1), + 0, 0, t.radius+(t.height+t.space)*(pt), + col_alp,col_led,3) + else + pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp)) + end + end + else + if light_on then + if t.angle_bar==0 then + pat = create_smooth_linear_gradient(t.width/2, t.height/2, t.width/2,-(t.blocks-0.5)*(t.height+t.space)) + else + pat = create_smooth_radial_gradient(0, 0, (t.height+t.space), 0,0,(t.blocks+1)*(t.height+t.space),2) + end + else + pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour)) + end + end + cairo_set_source (cr, pat) + cairo_pattern_destroy(pat) + + --draw a block + if t.angle_bar==0 then + cairo_move_to(cr,0,y1) + cairo_line_to(cr,t.width,y1) + else + cairo_arc( cr,0,0, + t.radius+(t.height+t.space)*(pt)-t.height/2, + -t.angle_bar -math.pi/2 , + t.angle_bar -math.pi/2) + end + cairo_stroke(cr) + end + end + + local function setup_bar_graph() + --function used to retrieve the value to display and to set the cairo structure + if t.blocks ~=1 then t.y=t.y-t.height/2 end + local value = 0 + if t.name ~="" then + value = (conky_parse(string.format('${%s %s}', t.name, t.arg))) + if string.match(value,"%w") then + value = conky_parse(string.format('${to_bytes %s}',value)) + end + value=tonumber(value) + else + value = tonumber(t.arg) + end + if value==nil then value =0 end + pct = 100*value/t.max + pcb = 100/t.blocks + cairo_set_line_width (cr, t.height) + cairo_set_line_cap (cr, cap) + cairo_translate(cr,t.x,t.y) + cairo_rotate(cr,t.angle) + local matrix0 = cairo_matrix_t:create() + tolua.takeownership(matrix0) + cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0) + cairo_transform(cr,matrix0) + --call the drawing function for blocks + if t.blocks==1 and t.angle_bar==0 then + draw_single_bar() + if t.reflection=="t" or t.reflection=="b" then cairo_translate(cr,0,-t.height) end + else + draw_multi_bar() + end + --call the drawing function for reflection and prepare the mask used + if t.reflection_alpha>0 and t.angle_bar==0 then + local pat2 + local matrix1 = cairo_matrix_t:create() + tolua.takeownership(matrix1) + if t.angle_bar==0 then + pts={-delta/2,(t.height+t.space)/2,t.width+delta,-(t.height+t.space)*(t.blocks)} + if t.reflection=="t" then + cairo_matrix_init (matrix1,1,0,0,-t.reflection_scale,0,-(t.height+t.space)*(t.blocks-0.5)*2*(t.reflection_scale+1)/2) + pat2 = cairo_pattern_create_linear (t.width/2,-(t.height+t.space)*(t.blocks),t.width/2,(t.height+t.space)/2) + elseif t.reflection=="r" then + cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,delta+2*t.width,0) + pat2 = cairo_pattern_create_linear (delta/2+t.width,0,-delta/2,0) + elseif t.reflection=="l" then + cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,-delta,0) + pat2 = cairo_pattern_create_linear (-delta/2,0,delta/2+t.width,-0) + else --bottom + cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(t.height+t.space)*(t.reflection_scale+1)/2) + pat2 = cairo_pattern_create_linear (t.width/2,(t.height+t.space)/2,t.width/2,-(t.height+t.space)*(t.blocks)) + end + end + cairo_transform(cr,matrix1) + if t.blocks==1 and t.angle_bar==0 then + draw_single_bar() + cairo_translate(cr,0,-t.height/2) + else + draw_multi_bar() + end + cairo_set_line_width(cr,0.01) + cairo_pattern_add_color_stop_rgba (pat2, 0,0,0,0,1-t.reflection_alpha) + cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1) + if t.angle_bar==0 then + cairo_rectangle(cr,pts[1],pts[2],pts[3],pts[4]) + end + cairo_clip_preserve(cr) + cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR) + cairo_stroke(cr) + cairo_mask(cr,pat2) + cairo_pattern_destroy(pat2) + cairo_set_operator(cr,CAIRO_OPERATOR_OVER) + end --reflection + pct,pcb=nil + end --setup_bar_graph() + + --start here ! + setup_bar_graph() + cairo_restore(cr) +end + diff --git a/data/box.lua b/data/box.lua new file mode 100644 index 0000000..4eda773 --- /dev/null +++ b/data/box.lua @@ -0,0 +1,309 @@ +--[[BOX WIDGET v1.0 by Wlourf 19/12/2010 +This widget can drawn some boxes, even circles in your conky window +http://u-scripts.blogspot.com/ (HowTo coming soon) + +Inspired by Background by londonali1010 (2009) + +The parameters (all optionals) are : +x - x coordinate of top-left corner of the box, default = 0 = (top-left corner of conky window) +y - y coordinate of top-left corner of the box, default = 0 = (top-left corner of conky window) +w - width of the box, default = width of the conky window +h - height of the box, default = width of the conky window +radius - radius of the corner, default = 0 = no radius +mode - mode for drawing the radius, possible values are "circle" or "curve", default ="curve" +linear_gradient - table with the coordinates of two points to define a linear gradient, + points are relative to top-left corner of the box, (not the conky window) + {x1,y1,x2,y2} +radial_gradient - table with the coordinates of two circle to define a radial gradient, + colour={{0,0xCCCCCC,1},{1,0xCCCCCC,0}} points are relative to top-left corner of the box, (not the conky window) + {x1,y1,r1,x2,y2,r2} (r=radius) +colour - table of colours, default = plain white {{1,0xFFFFFF,1}} + this table contains one or more tables with format {P,C,A} + P=position of gradient (0 = start of the gradient, 1= end of the gradient) + C=hexadecimal colour + A=alpha (opacity) of color (0=invisible,1=opacity 100%) + Examples : + for a plain color {{1,0x00FF00,0.5}} + for a gradient with two colours {{0,0x00FF00,0.5},{1,0x000033,1}} + or {{0.5,0x00FF00,1},{1,0x000033,1}} -with this one, gradient will start in the middle + for a gradient with three colours {{0,0x00FF00,0.5},{0.5,0x000033,1},{1,0x440033,1}} + and so on ... + + + +To call this script in Conky, use (assuming you have saved this script to ~/scripts/): + lua_load ~/scripts/draw_bg.lua + lua_draw_hook_pre main_box + +And leave one line blank or not after TEXT + +Changelog: ++ v1.0 -- Original release (19.12.2010) +]] + +-- Change these settings to affect your background. + +table_settings={ + { + x=5, + y=57, + h=40, + w=650, + linear_gradient = {300,200,550,350}, + colour = {{0,0x000000,0.5},{1,0x000000,0.5}}, + radius=20, + }, + { + x=315, + y=100, + h=90, + w=485, + linear_gradient = {300,200,550,350}, + colour = {{0,0x000000,0.2},{1,0x000000,0.1}}, + radius=20, + }, + { + x=5, + y=192, + h=44, + w=795, + linear_gradient = {300,200,550,350}, + colour = {{0,0x000000,0.4},{1,0x000000,0.1}}, + radius=20, + }, + { + x=5, + y=355, + h=125, + w=795, + colour = {{0,0x000000,0.25}}, + radius=20, + }, + { + x=5, + y=240, + h=110, + w=795, + colour = {{0,0x000000,0.4}}, + radius=20, + }, + +--[[ + { --backgound with gradient + radius=25, + mode="circle", + linear_gradient = {300,200,550,350}, + colour={{0,0xCCCCCC,1},{1,0xCCCCCC,0}} + }, + + + + + { --pink rounded box + x=25, + y=150, + h=200, + w=100, + colour = {{O,0xff00ff,0.5}}, + radius=30, + mode="circle" + }, + { --border for pink rounded box + x=25, + y=150, + h=200, + w=100, + radius=30, + border=3, + mode="circle", + colour={ + {0,0x0000CC,1}, + }, + }, + + { --box with linear gradient + x=150, + y=150, + h=100, + w=100, + linear_gradient = {50,0,50,100 }, + colour={ + {0,0xffff00,1}, + {0.5,0xff0000,1}, + {1,0xff00ff,1}, + }, + }, + + { --box with radial gradient + x=150, + y=270, + h=100, + w=100, + radius=10, + radial_gradient = {20,20,0,20,20,100 }, + colour={ + {0,0xff0000,1}, + {1,0xffff00,1}, + }, + mode="circle", + border=0 + }, + { --border for above box --gradient are inversed + x=150, + y=270, + h=100, + w=100, + radius=10, + radial_gradient = {20,20,0,20,20,100 }, + colour={ + {1,0xff0000,1}, + {0,0xffff00,1}, + }, + mode="circle", + border=5 + }, + + + { --oh my god, a circle with radial gradient + x=300, y=30, + w=100,h=100, + mode="circle", + radius=50, + radial_gradient = {50,50,0,50,50,50 }, + colour={ + {0,0xff0000,1}, + {1,0xffff00,1}, + }, + }, + + { --no name for this one ! radius > w or h ! + x=300, y=250, + w=100,h=100, + mode="circle", + radius=100, + radial_gradient = {50,50,0,50,50,50 }, + colour={ + {0,0xff0000,1}, + {0.5,0x0000ff,1}, + {1,0xffff00,1}, + }, + }, +]] + + + } + +---------END OF PARAMETERS + +require 'cairo' + + + +function conky_main_box() + 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) + cr=cairo_create(cs) + + for i in pairs(table_settings) do + draw_bg (table_settings[i]) + end + + cairo_destroy(cr) + cairo_surface_destroy(cs) +end + +function draw_bg(t) + function rgba_to_r_g_b_a(tc) + --tc={position,colour,alpha} + local colour = tc[2] + local alpha = tc[3] + return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha + end + + local PI = math.pi + + --check values and set default values + if t.x == nil then t.x = 0 end + if t.y == nil then t.y = 0 end + if t.w == nil then t.w = conky_window.width end + if t.h == nil then t.h = conky_window.height end + if t.radius == nil then t.radius = 0 end + if t.border == nil then t.border = 0 end + if t.colour==nil then t.colour={{1,0xFFFFFF,1}} end + if t.linear_gradient ~= nil then + if #t.linear_gradient ~= 4 then + t.linear_gradient = {t.x,t.y,t.width,t.height} + end + end + if t.radial_gradient ~= nil then + if #t.radial_gradient ~= 6 then + t.radial_gradient = {t.x,t.y,0, t.x,t.y, t.width} + end + end + + for i=1, #t.colour do + if #t.colour[i]~=3 then + print ("error in color table") + t.colour[i]={1,0xFFFFFF,1} + end + end + + --for better reading + t.linear = t.linear_gradient + t.radial = t.radial_gradient + t.no_gradient = (t.linear == nil ) and (t.radial == nil ) + + cairo_save(cr) + cairo_translate(cr, t.x, t.y) + + if t.radius>0 then + if t.mode=="circle" then + cairo_arc(cr, t.radius, t.radius, t.radius, -PI, -PI/2) + cairo_line_to(cr,t.w-t.radius,0) + cairo_arc(cr, t.w-t.radius, t.radius, t.radius, -PI/2,0) + cairo_line_to(cr,t.w,t.h-t.radius) + cairo_arc(cr, t.w-t.radius, t.h-t.radius, t.radius, 0,PI/2) + cairo_line_to(cr,t.radius,t.h) + cairo_arc(cr, t.radius, t.h-t.radius, t.radius, PI/2,-PI) + cairo_line_to(cr,0,t.radius) + else + cairo_move_to(cr, t.radius, 0) + cairo_line_to(cr, t.w-t.radius, 0) + cairo_curve_to(cr, t.w, 0, t.w, 0, t.w, t.radius) + cairo_line_to(cr, t.w, t.h-t.radius) + cairo_curve_to(cr, t.w, t.h, t.w, t.h, t.w - t.radius, t.h) + cairo_line_to(cr, t.radius, t.h) + cairo_curve_to(cr, 0, t.h, 0, t.h, 0, t.h-t.radius) + cairo_line_to(cr, 0, t.radius) + cairo_curve_to(cr, 0, 0, 0, 0, t.radius,0) + end + cairo_close_path(cr) + else + cairo_rectangle(cr,0,0,t.w,t.h) + end + + if t.no_gradient then + cairo_set_source_rgba(cr,rgba_to_r_g_b_a(t.colour[1])) + else + if t.linear ~= nil then + pat = cairo_pattern_create_linear (t.linear[1],t.linear[2],t.linear[3],t.linear[4]) + elseif t.radial ~= nil then + pat = cairo_pattern_create_radial (t.radial[1],t.radial[2],t.radial[3],t.radial[4],t.radial[5],t.radial[6]) + end + for i=1, #t.colour do + cairo_pattern_add_color_stop_rgba (pat, t.colour[i][1], rgba_to_r_g_b_a(t.colour[i])) + end + cairo_set_source (cr, pat) + cairo_pattern_destroy(pat) + end + + if t.border>0 then + cairo_set_line_width(cr,t.border) + cairo_stroke(cr) + else + cairo_fill(cr) + end + + cairo_restore(cr) +end + diff --git a/data/conky.conf b/data/conky.conf index ff650e6..610540b 100644 --- a/data/conky.conf +++ b/data/conky.conf @@ -1,18 +1,15 @@ -# cpu red > white -# memory blue > white -# disk green > white -# -# -# -# cool blue > cyan: 0000ff 00FFFF -# +#don't modify this file directly because an update could overwrite your changes! +#copy any files you modify to /home/user/MyDocs and update the path below and also in the loadAll.lua file +#conky will load the .conf file from there unless you are using mass storage usb at that moment + +lua_load /etc/conky/LoadAll.lua +lua_draw_hook_pre main alignment top_left background no -maximum_width 800 +maximum_width 854 border_width 1 cpu_avg_samples 2 -default_color white default_outline_color white default_shade_color white diskio_avg_samples 10 @@ -31,7 +28,7 @@ own_window yes own_window_class Conky own_window_type normal own_window_transparent no -own_window_hints undecorated +own_window_hints fullscreen #own_window_colour ff0000 override_utf8_locale yes show_graph_scale no @@ -44,51 +41,34 @@ update_interval_on_battery 4 uppercase no use_spacer none use_xft yes -xftfont Droid Sans Mono:size=11 +xftfont Nokia Pure:size=11 xftalpha 0.8 +default_color FFFFFF + TEXT -${color }$alignr$sysname $kernel on $machine ${color 4072a5}Uptime:$color $uptime -${color }$alignr${color #4072a5}Battery: ${color}${battery_short} ${battery_temp}°C ${battery_volts}mV -${color }$alignr${color #4072a5}Cell Radio: $color ${cell_radio_dbm}dBm ${cell_radio_percent}% -${color 4072a5}CPU:${goto 45}${color red}${voffset 2}${cpubar cpu0 14,240}${goto 300}${color 4072a5}Load 1/5/15:$color $loadavg $alignr ${color 4072a5}Processes:$color $processes ${color 4072a5}Running:$color $running_processes -${color }${alignr 460}${voffset -20}$cpu%${voffset 0}#can't alignr two things on the same line. alignr is the only way to get the % symbol to stay lined up. it will move if you use goto -${color }${goto 119}$freq MHz -${color 4072a5}CPU:${color black}${cpugraph 16,240 ffffff ff0000 -t}${color 4072a5}${goto 300}Load1 avg:${color black}${loadgraph 16,105 ffffff ff0000 -t -1}${color 4072a5} Dio:${color black}${diskiograph /dev/mmcblk0 16,105 ffffff 00ff00 -t -1}${color 4072a5} Mem:${color black}${memgraph 16,105 ffffff 0000ff -t} -${color 4072a5}RAM:${goto 47}${color blue}${voffset 2}${membar 16,240} -${color }${voffset -20}${goto 110}$mem${goto 160}/ $memmax -${color }${alignr 525}${voffset -18}$memperc% -${color 4072a5}${voffset -18}${goto 315} Top I/O ${goto 480}READ ${goto 550}WRITE ${goto 630}% -${color 4072a5}Swap:${goto 48}${color green}${swapbar 16,240} -${color }${voffset -19}${goto 110}$swap${goto 160}/ $swapmax -${color }${alignr 525}${voffset -18}$swapperc% -${color red}${voffset -18}${goto 315} ${top_io name 1} ${goto 480}${top_io io_read 1}${goto 550}${top_io io_write 1}${goto 610}${top_io io_perc 1} -${color 4072a5}rootfs:${goto 70}${color darkgreen}${fs_bar 16,240 /} -${color }${voffset -18}${goto 110}${fs_used /}${goto 160}/ ${fs_size /} -${color }${alignr 490}${voffset -20}(${fs_free /}) -${color }${voffset -18}${goto 315} ${top_io name 2} ${goto 480}${top_io io_read 2}${goto 550}${top_io io_write 2}${goto 610}${top_io io_perc 2} -${color 4072a5}home:${goto 70}${color darkgreen}${fs_bar 16,240 /home} -${color }${voffset -19}${goto 110}${fs_used /home}${goto 160}/ ${fs_size /home} -${color }${alignr 490}${voffset -20}(${fs_free /home}) -${color }${voffset -18}${goto 315} ${top_io name 3} ${goto 480}${top_io io_read 3}${goto 550}${top_io io_write 3}${goto 610}${top_io io_perc 3} -${voffset 1}${if_mounted /home/user/MyDocs}${color 4072a5}MyDocs:${goto 70}${color darkgreen}${fs_bar 16,240 /home/user/MyDocs} -${color }${voffset -19}${goto 110}${fs_used /home/user/MyDocs}${goto 160}/ ${fs_size /home/user/MyDocs} -${color }${alignr 490}${voffset -19}(${fs_free /home/user/MyDocs})$endif -${if_mounted /media/mmc1}${color 4072a5}MicroSD:${goto 70}${color darkgreen}${fs_bar 16,240 /media/mmc1} -${color }${voffset -18}${goto 110}${fs_used /media/mmc1}${goto 160}/ ${fs_size /media/mmc1} -${color }${alignr 490}${voffset -20}(${fs_free /media/mmc1})$endif -${if_up gprs0}${color 4072a5}gprs0: ${color 4072a5}Up:$color ${upspeed gprs0}/s ${color 4072a5}Down:$color ${downspeed gprs0}/s -${color 4072a5}gprs0 Up: ${color black}${upspeedgraph gprs0 20,290 ff0000 00ff00}$alignr${color 4072a5}gprs0 Down: ${color black}${downspeedgraph gprs0 20,290 00ff0000 ff0000}$else${if_empty ${wireless_essid wlan0}}$else${color #4072a5}wlan0 ESSID: $color${wireless_essid wlan0} ${color #4072a5}Rate: ${color}${wireless_bitrate wlan0} ${color #4072a5}Connection Quality: $color${wireless_link_qual_perc wlan0}% ${color #4072a5}Up:$color ${upspeed wlan0}/s ${color grey} ${color #4072a5}Down:$color ${downspeed wlan0}/s -${color 4072a5}wlan0 Up: ${color black}${upspeedgraph wlan0 20,290 00ff00 ff0000}$alignr${color 4072a5}wlan0 Down: ${color black}${downspeedgraph wlan0 20,290 ff0000 00ff00}$endif$endif -${color 4072a5}CONNECTIONS [$color${tcp_portmon 1 65535 count}${color 4072a5}] (lport:rservice:rport):$color ${goto 405}${tcp_portmon 1 65535 lservice 0}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 0}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 0}} +${image /etc/conky/n950-kobol.jpg} + + +${goto 265}${color 4072a5}Load1 avg: ${goto 517}${color 4072a5}Processes:$color $processes +${color 4072a5}${goto 265}Load 1/5/15: $color$loadavg${goto 517}${color 4072a5}Running:${goto 620}$color$running_processes +${voffset -10} +${color 4072a5}${goto 315} Top I/O READ WRITE % +${color red} ${goto 315} ${lua_parse top_io_colour 1} +${color }${goto 315} ${lua_parse top_io_colour 2} +${color }${goto 315} ${lua_parse top_io_colour 3} + + +${voffset 10} +${color 33cc99}CONNECTIONS [$color${tcp_portmon 1 65535 count}${color 33cc99}] (lport:rservice:rport):$color ${goto 405}${tcp_portmon 1 65535 lservice 0}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 0}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 0}} $color${tcp_portmon 1 65535 lservice 1}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 1}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 1}}${goto 405}${tcp_portmon 1 65535 lservice 2}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 2}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 2}} $color${tcp_portmon 1 65535 lservice 3}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 3}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 3}}${goto 405}${tcp_portmon 1 65535 lservice 4}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 4}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 4}} $color${tcp_portmon 1 65535 lservice 5}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 5}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 5}}${goto 405}${tcp_portmon 1 65535 lservice 6}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 6}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 6}} $color${tcp_portmon 1 65535 lservice 7}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 7}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 7}}${goto 405}${tcp_portmon 1 65535 lservice 8}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 8}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 8}} -${color 4072a5}Top CPU% CPU% MEM% ${goto 257}${color 4072a5} | ${color 4072a5}Top Total Memory RAM VM ${goto 555}${color 4072a5}| ${color 4072a5}Top CPU TIME MM:SS.cs -${color red}${top name 1}${top cpu 1}${top mem 1} ${goto 257}${color 4072a5} | ${color red}${top_mem name 1}${top_mem mem_res 1} ${top_mem mem_vsize 1} ${goto 555}${color 4072a5}| ${color red}${top_time name 1}${top_time time 1} ${top_time cpu 1} -$color${top name 2}${top cpu 2}${top mem 2} ${goto 257}${color 4072a5} | ${color }${top_mem name 2}${top_mem mem_res 2} ${top_mem mem_vsize 2} ${goto 555}${color 4072a5}| ${color }${top_time name 2}${top_time time 2} ${top_time cpu 2} -$color${top name 3}${top cpu 3}${top mem 3} ${goto 257}${color 4072a5} | ${color }${top_mem name 3}${top_mem mem_res 3} ${top_mem mem_vsize 3} ${goto 555}${color 4072a5}| ${color }${top_time name 3}${top_time time 3} ${top_time cpu 3} -$color${top name 4}${top cpu 4}${top mem 4} ${goto 257}${color 4072a5} | ${color }${top_mem name 4}${top_mem mem_res 4} ${top_mem mem_vsize 4} ${goto 555}${color 4072a5}| ${color }${top_time name 4}${top_time time 4} ${top_time cpu 4} -$color---------1---------2---------3---------4---------5---------6---------7---------8---------9---------0---------1 -#imagetest: ${image /home/user/image-test.png -p 100,410} +$color${tcp_portmon 1 65535 lservice 9}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 9}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 9}}${goto 405}${tcp_portmon 1 65535 lservice 10}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 10}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 10}} +${voffset 10}${color 4072a5}Top CPU% CPU% MEM% ${goto 257}${color 4072a5} | ${color 4072a5}Top Total Memory RAM VM ${goto 555}${color 4072a5}| ${color 4072a5}Top CPU TIME MM:SS.cs +${lua_parse top_cpu_colour 1} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 1} ${goto 555}${color 4072a5}| ${color }${top_time name 1}${top_time time 1} ${top_time cpu 1} +$color${top name 2}${top cpu 2}${top mem 2} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 2} ${goto 555}${color 4072a5}| ${color }${top_time name 2}${top_time time 2} ${top_time cpu 2} +$color${top name 3}${top cpu 3}${top mem 3} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 3} ${goto 555}${color 4072a5}| ${color }${top_time name 3}${top_time time 3} ${top_time cpu 3} +$color${top name 4}${top cpu 4}${top mem 4} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 4} ${goto 555}${color 4072a5}| ${color }${top_time name 4}${top_time time 4} ${top_time cpu 4} +$color${top name 5}${top cpu 5}${top mem 5} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 5} ${goto 555}${color 4072a5}| ${color }${top_time name 5}${top_time time 5} ${top_time cpu 5} diff --git a/data/conky.conf.nolua b/data/conky.conf.nolua new file mode 100644 index 0000000..bd7607d --- /dev/null +++ b/data/conky.conf.nolua @@ -0,0 +1,96 @@ +# this is the non-lua conf file, please don't modify it directly -- copy it to /home/user/MyDocs instead. conky.sh looks for it there and will load it instead. +# if you modify it directly, it can get replaced and your changes lost when you update, so make sure to back it up!!! +# cpu red > white +# memory blue > white +# disk green > white +# +# +# +# cool blue > cyan: 0000ff 00FFFF +# + +alignment top_left +background no +maximum_width 854 +border_width 1 +cpu_avg_samples 2 +default_color white +default_outline_color white +default_shade_color white +diskio_avg_samples 10 +draw_borders no +draw_graph_borders yes +draw_outline no +draw_shades no +double_buffer yes +gap_x 20 +gap_y 60 +minimum_size 5 5 +net_avg_samples 2 +no_buffers yes +out_to_console no +own_window yes +own_window_class Conky +own_window_type normal +own_window_transparent no +own_window_hints fullscreen +#own_window_colour ff0000 +override_utf8_locale yes +show_graph_scale no +show_graph_range no +short_units yes +stippled_borders 0 +temperature_unit celsius +update_interval 1.5 +update_interval_on_battery 4 +uppercase no +use_spacer none +use_xft yes +xftfont Nokia Pure:size=11 +xftalpha 0.8 + +TEXT +${color }$alignr$sysname $kernel on $machine ${color 4072a5}Uptime:$color $uptime +${color }$alignr${color #4072a5}Battery: ${color}${battery_short} ${battery_temp}°C ${battery_volts}mV +${color }$alignr${color #4072a5}Cell Radio: $color ${cell_radio_dbm}dBm ${cell_radio_percent}% +${color 4072a5}CPU:${goto 45}${color red}${voffset 2}${cpubar cpu0 14,240}${goto 300}${color 4072a5}Load 1/5/15:$color $loadavg $alignr ${color 4072a5}Processes:$color $processes ${color 4072a5}Running:$color $running_processes +${color }${alignr 460}${voffset -20}$cpu%${voffset 0}#can't alignr two things on the same line. alignr is the only way to get the % symbol to stay lined up. it will move if you use goto +${color }${goto 119}$freq MHz +${color 4072a5}CPU:${color black}${cpugraph 16,240 ffffff ff0000 -t}${color 4072a5}${goto 300}Load1 avg:${color black}${loadgraph 16,105 ffffff ff0000 -t -1}${color 4072a5} Dio:${color black}${diskiograph /dev/mmcblk0 16,105 ffffff 00ff00 -t -1}${color 4072a5} Mem:${color black}${memgraph 16,105 ffffff 0000ff -t} +${color 4072a5}RAM:${goto 47}${color blue}${voffset 2}${membar 16,240} +${color }${voffset -20}${goto 110}$mem${goto 160}/ $memmax +${color }${alignr 525}${voffset -18}$memperc% +${color 4072a5}${voffset -18}${goto 315} Top I/O ${goto 480}READ ${goto 550}WRITE ${goto 630}% +${color 4072a5}Swap:${goto 48}${color green}${swapbar 16,240} +${color }${voffset -19}${goto 110}$swap${goto 160}/ $swapmax +${color }${alignr 525}${voffset -18}$swapperc% +${color red}${voffset -18}${goto 315} ${top_io name 1} ${goto 480}${top_io io_read 1}${goto 550}${top_io io_write 1}${goto 610}${top_io io_perc 1} +${color 4072a5}rootfs:${goto 70}${color darkgreen}${fs_bar 16,240 /} +${color }${voffset -18}${goto 110}${fs_used /}${goto 160}/ ${fs_size /} +${color }${alignr 490}${voffset -20}(${fs_free /}) +${color }${voffset -18}${goto 315} ${top_io name 2} ${goto 480}${top_io io_read 2}${goto 550}${top_io io_write 2}${goto 610}${top_io io_perc 2} +${color 4072a5}home:${goto 70}${color darkgreen}${fs_bar 16,240 /home} +${color }${voffset -19}${goto 110}${fs_used /home}${goto 160}/ ${fs_size /home} +${color }${alignr 490}${voffset -20}(${fs_free /home}) +${color }${voffset -18}${goto 315} ${top_io name 3} ${goto 480}${top_io io_read 3}${goto 550}${top_io io_write 3}${goto 610}${top_io io_perc 3} +${voffset 1}${if_mounted /home/user/MyDocs}${color 4072a5}MyDocs:${goto 70}${color darkgreen}${fs_bar 16,240 /home/user/MyDocs} +${color }${voffset -19}${goto 110}${fs_used /home/user/MyDocs}${goto 160}/ ${fs_size /home/user/MyDocs} +${color }${alignr 490}${voffset -19}(${fs_free /home/user/MyDocs})$endif +#${if_mounted /media/mmc1}${color 4072a5}MicroSD:${goto 70}${color darkgreen}${fs_bar 16,240 /media/mmc1} +#${color }${voffset -18}${goto 110}${fs_used /media/mmc1}${goto 160}/ ${fs_size /media/mmc1} +#${color }${alignr 490}${voffset -20}(${fs_free /media/mmc1})$endif +${if_up gprs0}${color 4072a5}gprs0: ${color 4072a5}Up:$color ${upspeed gprs0}/s ${color 4072a5}Down:$color ${downspeed gprs0}/s +${color 4072a5}gprs0 Up: ${color black}${upspeedgraph gprs0 20,290 ff0000 00ff00}$alignr${color 4072a5}gprs0 Down: ${color black}${downspeedgraph gprs0 20,290 00ff0000 ff0000}$else${if_empty ${wireless_essid wlan0}}$else${color #4072a5}wlan0 ESSID: $color${wireless_essid wlan0} ${color #4072a5}Rate: ${color}${wireless_bitrate wlan0} ${color #4072a5}Connection Quality: $color${wireless_link_qual_perc wlan0}% ${color #4072a5}Up:$color ${upspeed wlan0}/s ${color grey} ${color #4072a5}Down:$color ${downspeed wlan0}/s +${color 4072a5}wlan0 Up: ${color black}${upspeedgraph wlan0 20,290 00ff00 ff0000}$alignr${color 4072a5}wlan0 Down: ${color black}${downspeedgraph wlan0 20,290 ff0000 00ff00}$endif$endif +${color 4072a5}CONNECTIONS [$color${tcp_portmon 1 65535 count}${color 4072a5}] (lport:rservice:rport):$color ${goto 405}${tcp_portmon 1 65535 lservice 0}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 0}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 0}} +$color${tcp_portmon 1 65535 lservice 1}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 1}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 1}}${goto 405}${tcp_portmon 1 65535 lservice 2}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 2}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 2}} +$color${tcp_portmon 1 65535 lservice 3}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 3}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 3}}${goto 405}${tcp_portmon 1 65535 lservice 4}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 4}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 4}} +$color${tcp_portmon 1 65535 lservice 5}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 5}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 5}}${goto 405}${tcp_portmon 1 65535 lservice 6}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 6}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 6}} +$color${tcp_portmon 1 65535 lservice 7}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 7}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 7}}${goto 405}${tcp_portmon 1 65535 lservice 8}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 8}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 8}} +${color 4072a5}Top CPU% CPU% MEM% ${goto 257}${color 4072a5} | ${color 4072a5}Top Total Memory RAM VM ${goto 555}${color 4072a5}| ${color 4072a5}Top CPU TIME MM:SS.cs +${color red}${top name 1}${top cpu 1}${top mem 1} ${goto 257}${color 4072a5} | ${color red}${top_mem name 1}${top_mem mem_res 1} ${top_mem mem_vsize 1} ${goto 555}${color 4072a5}| ${color red}${top_time name 1}${top_time time 1} ${top_time cpu 1} +$color${top name 2}${top cpu 2}${top mem 2} ${goto 257}${color 4072a5} | ${color }${top_mem name 2}${top_mem mem_res 2} ${top_mem mem_vsize 2} ${goto 555}${color 4072a5}| ${color }${top_time name 2}${top_time time 2} ${top_time cpu 2} +$color${top name 3}${top cpu 3}${top mem 3} ${goto 257}${color 4072a5} | ${color }${top_mem name 3}${top_mem mem_res 3} ${top_mem mem_vsize 3} ${goto 555}${color 4072a5}| ${color }${top_time name 3}${top_time time 3} ${top_time cpu 3} +$color${top name 4}${top cpu 4}${top mem 4} ${goto 257}${color 4072a5} | ${color }${top_mem name 4}${top_mem mem_res 4} ${top_mem mem_vsize 4} ${goto 555}${color 4072a5}| ${color }${top_time name 4}${top_time time 4} ${top_time cpu 4} +$color---------1---------2---------3---------4---------5---------6---------7---------8---------9---------0---------1 +#imagetest: ${image /home/user/image-test.png -p 100,410} diff --git a/data/conky_no_x11.conf b/data/conky_no_x11.conf deleted file mode 100644 index 2799245..0000000 --- a/data/conky_no_x11.conf +++ /dev/null @@ -1,52 +0,0 @@ -# Conky, a system monitor, based on torsmo -# -# Any original torsmo code is licensed under the BSD license -# -# All code written since the fork of torsmo is licensed under the GPL -# -# Please see COPYING for details -# -# Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen -# Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al. (see AUTHORS) -# All rights reserved. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -background no -cpu_avg_samples 2 -net_avg_samples 2 -no_buffers yes -out_to_stderr no -update_interval 1.0 -uppercase no -use_spacer none - -TEXT -${scroll 16 $nodename - $sysname $kernel on $machine | } -Uptime: $uptime -Frequency (in MHz): $freq -Frequency (in GHz): $freq_g -RAM Usage: $mem/$memmax - $memperc% ${membar 4} -Swap Usage: $swap/$swapmax - $swapperc% ${swapbar 4} -CPU Usage: $cpu% ${cpubar 4} -Processes: $processes Running: $running_processes -File systems: - / ${fs_used /}/${fs_size /} ${fs_bar 6 /} -Networking: -Up: ${upspeed eth0} - Down: ${downspeed eth0} -Name PID CPU% MEM% - ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1} - ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2} - ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3} - ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4} diff --git a/data/graph.lua b/data/graph.lua new file mode 100644 index 0000000..dbff1d4 --- /dev/null +++ b/data/graph.lua @@ -0,0 +1,529 @@ +--[[ GRAPH widget v1.0 by wlourf (31.10.2010) + this widget draws some graphs with some effects + http://u-scripts.blogspot.com/2010/10/graph-widget.html + +To call the script in a conky, use, before TEXT + lua_load /path/to/the/script/graph.lua + lua_draw_hook_pre main_graph +and add one line (blank or not) after TEXT + + +Parameters are : +3 parameters are mandatory +name - the name of the conky variable to display, + for example for {$cpu cpu0}, just write name="cpu" +arg - the argument of the above variable, + for example for {$cpu cpu1}, just write arg="cpu1" + arg can be a numerical value if name="" +max - the maximum value the above variable can reach, + for example for {$cpu cpu1}, just write max=100 or less or more + +Optional parameters: +x,y - coordinates of the bottom-left corner of the graph, + relative to the top-left corner of the conky window + default = bottom-left corner of the conky window +width - width of the graph, default = 100 pixels +height - height of the graph, default = 20 pixels +nb_values - number of values to display in the graph, default=width + i.e. 1 pixel for 1 value +autoscale - if set to true, calculate the max valeu of the y axis and + doesn't use the max parameter above, default=false +skew_x - skew graph around x axis, défaut = 0 +skew_y - skew graph around y axis, défaut = 0 +angle - angle of rotation of the graph in degress, default = 0 + i.e. a horizontal graph) +inverse - if set to true, graph are draw from right to left, default=false +background - if set to false, background is not drawn, default=true +foreground - if set to false, foreground is not drawn, default=true + foreground = plain graph +bg_bd_size - size of the border of the background, default=0=no border +fg_bd_size - size of the border of the foreground, default=0=no border + + +Colours tables below are defined into braces : +{position in the gradient (0 to 1), colour in hexadecimal, alpha (0 to 1)} +example for a single colour table : +{{0,0xFFAA00,1}} position parameter doesn't matter +example for a two-colours table : +{{0,0xFFAA00,1},{1,0x00AA00,1}} or {{0.5,0xFFAA00,1},{1,0x00AA00,1}} +example for a three-colours table : +{{0,0xFFAA00,1},{0.5,0xFF0000,1},{1,0x00AA00,1}} + +bg_colour - colour table for background, + default = {{0,0x000000,.5},{1,0xFFFFFF,.5}} +fg_colour - colour table for foreground, + default = {{0,0x00FFFF,1},{1,0x0000FF,1}} +bg_bd_colour- colour table for background border, + default = {{1,0xFFFFFF,1}} +fg_bd_colour- colour table for foreground border, + default = {{1,0xFFFF00,1}} + +bg_orientation, bg_bd_orientation, fg_orientation, fg_bd_orientation, + - "orientation" defines the starting point of the gradient, + default="nn" + there are 8 available starting points : + "nw","nn","ne","ee","se","ss","sw","ww" + (n for north, w for west ...) + theses 8 points are the 4 corners + the 4 middles of graph + so a gradient "nn" will go from "nn" to "ss" + a gradient "nw" will go from "nw" to "se" + + +v1.0 (31 Oct. 2010) original release + +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation version 3 (GPLv3) +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +-- MA 02110-1301, USA. + +]] + +require 'cairo' + +function set_settings() + graph_settings={ + { + name="cpu", + arg="", + max=100, + y=87, + x=5, + autoscale=false, + width=215, + height=29, + nb_values=120, + fg_bd_size=2, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + --fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFF3300,1},{1,0xFFFFFF,1}}, + --fg_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, + fg_colour = { {0,0x00CCFF,0.7},{0.5,0x0000FF,0.7},{1,0x000000,0.1}}, + foreground=true, + fg_orientation="ne", + bg_bd_orientation="nn", + bg_orientation="ne", + }, + { + name="upspeedf", + arg="wlan0", + max=9999, + y=233, + x=5, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + inverse=true, + DrawMe="${if_up wlan0}1${else}0$endif", + bg_orientation="ww", + }, + { + name="downspeedf", + arg="wlan0", + max=9999, + y=233, + x=525, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + DrawMe="${if_up wlan0}1${else}0$endif", + bg_orientation="ee", + }, + { + name="upspeedf", + arg="gprs0", + max=9999, + y=233, + x=5, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + inverse=true, + DrawMe="${if_up gprs0}1${else}0$endif", + bg_orientation="ww", + }, + { + name="downspeedf", + arg="gprs0", + max=9999, + y=233, + x=525, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + DrawMe="${if_up gprs0}1${else}0$endif", + bg_orientation="ee", + }, + { + name="loadavg", + arg="1", + max=20, + y=95, + x=372, + autoscale=true, + width=140, + height=36, + nb_values=100, + fg_bd_size=0, + bg_colour = {{0,0x667AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xdd0000,0.7},{0.5,0xdddd00,0.7},{1,0xFFFF00,0.7}}, + fg_colour = { {0,0x000000,0.7},{0.5,0xdd0000,0.7},{1,0xff0000,0.7}}, + foreground=true, + }, + { + name="to_bytes ${diskio", + arg="mmcblk0}", + max=2500000, + y=187, + x=640, + autoscale=true, + width=160, + height=89, + nb_values=130, + fg_bd_size=0, + bg_colour = {{0,0x667AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xdd0000,1},{0.5,0xdddd00,1},{1,0xFFFF00,1}}, + fg_colour = { {1,0x111111,0.3},{0.5,0x33cc00,0.6},{0,0x00FF00,0.8}}, + foreground=true, + bg_orientation="ne", + fg_orientation="ee", + }, + } +end + +function check_settings(t) + --tables are check only when conky start + if t.name==nil and t.arg==nil then + print ("No input values ... use parameters 'name'" .. + " with 'arg' or only parameter 'arg' ") + return 1 + end + if t.max==nil then + print ("No maximum value defined, use 'max'") + print ("for name=" .. t.name .. " with arg=" .. t.arg) + return 1 + end + if t.name==nil then t.name="" end + if t.arg==nil then t.arg="" end + return 0 +end + +function conky_main_graph() + if conky_window == nil then return end + local w=conky_window.width + local h=conky_window.height + local cs=cairo_xlib_surface_create(conky_window.display, + conky_window.drawable, conky_window.visual, w, h) + cr=cairo_create(cs) + updates=tonumber(conky_parse('${updates}')) + --start drawing after "updates_gap" updates + --prevent segmentation error for cpu + updates_gap=5 + if updates==1 then + set_settings() + flagOK=0 + for i in pairs(graph_settings) do + if graph_settings[i].width==nil then graph_settings[i].width=100 end + if graph_settings[i].nb_values==nil then + graph_settings[i].nb_values= graph_settings[i].width + end + --create an empty table to store values + graph_settings[i]["values"]={} + --beginning point + graph_settings[i].beg = graph_settings[i].nb_values + --graph_settings[i].beg = 0 + for j =1, graph_settings[i].nb_values do + graph_settings[i].values[j]=0 + end + graph_settings[i].flag_init=true + flagOK=flagOK + check_settings(graph_settings[i]) + end + end + if flagOK>0 then + --abort script if error in one of the tables + print ("ERROR : Check the graph_setting table") + return + end + --drawing process + if updates > updates_gap then + for i in pairs(graph_settings) do + if (graph_settings[i].DrawMe==nil or conky_parse(graph_settings[i].DrawMe) == "1") then + --print(graph_settings[i].DrawMe.."= '"..conky_parse(graph_settings[i].DrawMe).."'") + --return + --cancel fetch value from conky if interface down or whatever + local nb_values=graph_settings[i].nb_values + graph_settings[i].automax=0 + for j =1, nb_values do + if graph_settings[i].values[j+1]==nil then + graph_settings[i].values[j+1]=0 + end + graph_settings[i].values[j]=graph_settings[i].values[j+1] + if j==nb_values then + --store value + if graph_settings[i].name=="" then + value=graph_settings[i].arg + else + value=tonumber(conky_parse('${' .. + graph_settings[i].name .. " " .. + graph_settings[i].arg ..'}')) + end + graph_settings[i].values[nb_values]=value + end + graph_settings[i].automax=math.max(graph_settings[i].automax, + graph_settings[i].values[j]) + if graph_settings[i].automax == 0 then graph_settings[i].automax = 1 end --should stop weird glitches at beginning when no values reported yet for upspeed or diskio + end + draw_graph(graph_settings[i]) + end + end + end + cairo_destroy(cr) + cairo_surface_destroy(cs) + updates=nil + updates_gap=nil +end + +function draw_graph(t) + --drawing function + local function rgb_to_r_g_b(colour) + return ((colour[2] / 0x10000) % 0x100) / 255., ((colour[2] / 0x100) % 0x100) / 255., (colour[2] % 0x100) / 255., colour[3] + end + + local function linear_orientation(o,w,h) + --set gradient for bg and bg border + local p + if o=="nn" then + p={w/2,h,w/2,0} + elseif o=="ne" then + p={w,h,0,0} + elseif o=="ww" then + p={0,h/2,w,h/2} + elseif o=="se" then + p={w,0,0,h} + elseif o=="ss" then + p={w/2,0,w/2,h} + elseif o=="ee" then + p={w,h/2,0,h/2} + elseif o=="sw" then + p={0,0,w,h} + elseif o=="nw" then + p={0,h,w,0} + end + return p + end + + local function linear_orientation_inv(o,w,h) + --set gradient for fg and fg border + local p + if o=="ss" then + p={w/2,h,w/2,0} + elseif o=="sw" then + p={w,h,0,0} + elseif o=="ee" then + p={0,h/2,w,h/2} + elseif o=="nw" then + p={w,0,0,h} + elseif o=="nn" then + p={w/2,0,w/2,h} + elseif o=="ww" then + p={w,h/2,0,h/2} + elseif o=="ne" then + p={0,0,w,h} + elseif o=="se" then + p={0,h,w,0} + end + return p + end + if t.DrawMe~=nil and conky_parse(t.DrawMe) ~= "1" then + --print(t.DrawMe.."= '"..conky_parse(t.DrawMe).."'") + return + --else + -- print(t.name) + end --cancel drawing for same reason as earlier + --set default values + if t.height==nil then t.height=20 end + --checked in previous part : width and nb_values + if t.background==nil then t.background=true end + if t.bg_bd_size==nil then t.bg_bd_size=0 end + if t.x==nil then t.x=t.bg_bd_size end + if t.y==nil then t.y=conky_window.height -t.bg_bd_size end + if t.bg_colour==nil then t.bg_colour={{0,0x000000,.5},{1,0xFFFFFF,.5}} end + if t.bg_bd_colour==nil then t.bg_bd_colour={{1,0xFFFFFF,1}} end + if t.foreground==nil then t.foreground=true end + if t.fg_colour==nil then t.fg_colour={{0,0x00FFFF,1},{1,0x0000FF,1}} end + if t.fg_bd_size==nil then t.fg_bd_size=0 end + if t.fg_bd_colour==nil then t.fg_bd_colour={{1,0xFFFF00,1}} end + if t.autoscale==nil then t.autoscale=false end + if t.inverse==nil then t.inverse=false end + if t.angle==nil then t.angle=0 end + if t.bg_bd_orientation==nil then t.bg_bd_orientation="nn" end + if t.bg_orientation==nil then t.bg_orientation="nn" end + if t.fg_bd_orientation==nil then t.fg_bd_orientation="nn" end + if t.fg_orientation==nil then t.fg_orientation="nn" end + --check colours tables + for i=1, #t.fg_colour do + if #t.fg_colour[i]~=3 then + print ("error in fg_colour table") + t.fg_colour[i]={1,0x0000FF,1} + end + end + for i=1, #t.fg_bd_colour do + if #t.fg_bd_colour[i]~=3 then + print ("error in fg_bd_colour table") + t.fg_bd_colour[i]={1,0x00FF00,1} + end + end + for i=1, #t.bg_colour do + if #t.bg_colour[i]~=3 then + print ("error in background color table") + t.bg_colour[i]={1,0xFFFFFF,0.5} + end + end + for i=1, #t.bg_bd_colour do + if #t.bg_bd_colour[i]~=3 then + print ("error in background border color table") + t.bg_bd_colour[i]={1,0xFFFFFF,1} + end + end + --calculate skew parameters if needed + if t.flag_init then + if t.skew_x == nil then + t.skew_x=0 + else + t.skew_x = math.pi*t.skew_x/180 + end + if t.skew_y == nil then + t.skew_y=0 + else + t.skew_y = math.pi*t.skew_y/180 + end + t.flag_init=false + end + cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND) + cairo_set_line_join(cr,CAIRO_LINE_JOIN_ROUND) + local matrix0 = cairo_matrix_t:create() + tolua.takeownership(matrix0) + cairo_save(cr) + cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0) + cairo_transform(cr,matrix0) + local ratio=t.width/t.nb_values + cairo_translate(cr,t.x,t.y) + cairo_rotate(cr,t.angle*math.pi/180) + cairo_scale(cr,1,-1) + --background + if t.background then + local pts=linear_orientation(t.bg_orientation,t.width,t.height) + local pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4]) + for i=1, #t.bg_colour do + --print ("i",i,t.colour[i][1], rgb_to_r_g_b(t.colour[i])) + cairo_pattern_add_color_stop_rgba (pat, t.bg_colour[i][1], rgb_to_r_g_b(t.bg_colour[i])) + end + cairo_set_source (cr, pat) + cairo_rectangle(cr,0,0,t.width,t.height) + cairo_fill(cr) + cairo_pattern_destroy(pat) + end + --autoscale + cairo_save(cr) + if t.autoscale then + t.max= t.automax*1.1 + end + local scale_x = t.width/(t.nb_values-1) + local scale_y = t.height/t.max + --define first point of the graph + if updates-updates_gap 0 then + local pts=linear_orientation_inv(t.fg_bd_orientation,t.width,t.height) + local pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4]) + for i=1,#t.fg_bd_colour,1 do + cairo_pattern_add_color_stop_rgba (pat, 1-t.fg_bd_colour[i][1], rgb_to_r_g_b(t.fg_bd_colour[i])) + end + cairo_set_source (cr, pat) + cairo_move_to(cr,t.beg*scale_x,t.values[t.beg+1]*scale_y) + for i=t.beg, t.nb_values-1 do + cairo_line_to(cr,i*scale_x,t.values[i+1]*scale_y) + end + cairo_set_line_width(cr,t.fg_bd_size) + cairo_stroke(cr) + cairo_pattern_destroy(pat) + end + cairo_restore(cr) + --background border + if t.bg_bd_size>0 then + local pts=linear_orientation(t.bg_bd_orientation,t.width,t.height) + local pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4]) + for i=1, #t.bg_bd_colour do + --print ("i",i,t.colour[i][1], rgb_to_r_g_b(t.colour[i])) + cairo_pattern_add_color_stop_rgba (pat, t.bg_bd_colour[i][1], rgb_to_r_g_b(t.bg_bd_colour[i])) + end + cairo_set_source (cr, pat) + cairo_rectangle(cr,0,0,t.width,t.height) + cairo_set_line_width(cr,t.bg_bd_size) + cairo_stroke(cr) + cairo_pattern_destroy(pat) + end + + cairo_restore(cr) + +end + diff --git a/data/luatraverse.lua b/data/luatraverse.lua new file mode 100644 index 0000000..f0a3234 --- /dev/null +++ b/data/luatraverse.lua @@ -0,0 +1,195 @@ +------------------------------------------------------------------------------- +-- This module implements a function that traverses all live objects. +-- You can implement your own function to pass as a parameter of traverse +-- and give you the information you want. As an example we have implemented +-- countreferences and findallpaths +-- +-- Alexandra Barros - 2006.03.15 +------------------------------------------------------------------------------- + +module("traverse", package.seeall) + +local List = {} + +function List.new () + return {first = 0, last = -1} +end + +function List.push (list, value) + local last = list.last + 1 + list.last = last + list[last] = value +end + +function List.pop (list) + local first = list.first + if first > list.last then error("list is empty") end + local value = list[first] + list[first] = nil + list.first = first + 1 + return value +end + +function List.isempty (list) + return list.first > list.last +end + +-- Counts all references for a given object +function countreferences(value) + local count = -1 + local f = function(from, to, how, v) + if to == value then + count = count + 1 + end + end + traverse({edge=f}, {count, f}) + return count +end + +-- Main function +-- 'funcs' is a table that contains a funcation for every lua type and also the +-- function edge edge (traverseedge). +function traverse(funcs, ignoreobjs) + + -- The keys of the marked table are the objetcts (for example, table: 00442330). + -- The value of each key is true if the object has been found and false + -- otherwise. + local env = {marked = {}, list=List.new(), funcs=funcs} + + if ignoreobjs then + for i=1, #ignoreobjs do + env.marked[ignoreobjs[i]] = true + end + end + + env.marked["traverse"] = true + env.marked[traverse] = true + + -- marks and inserts on the list + edge(env, nil, "_G", "isname", nil) + edge(env, nil, _G, "value", "_G") + + -- traverses the active thread + -- inserts the local variables + -- interates over the function on the stack, starting from the one that + -- called traverse + + for i=2, math.huge do + local info = debug.getinfo(i, "f") + if not info then break end + for j=1, math.huge do + local n, v = debug.getlocal(i, j) + if not n then break end + + edge(env, nil, n, "isname", nil) + edge(env, nil, v, "local", n) + end + end + + while not List.isempty(env.list) do + + local obj = List.pop(env.list) + local t = type(obj) + _M["traverse" .. t](env, obj) + + end + +end + +function traversetable(env, obj) + + local f = env.funcs.table + if f then f(obj) end + + for key, value in pairs(obj) do + edge(env, obj, key, "key", nil) + edge(env, obj, value, "value", key) + end + + local mtable = debug.getmetatable(obj) + if mtable then edge(env, obj, mtable, "ismetatable", nil) end + +end + +function traversestring(env, obj) + local f = env.funcs.string + if f then f(obj) end + +end + +function traverseuserdata(env, obj) + local f = env.funcs.userdata + if f then f(obj) end + + local mtable = debug.getmetatable(obj) + if mtable then edge(env, obj, mtable, "ismetatable", nil) end + + local fenv = debug.getfenv(obj) + if fenv then edge(env, obj, fenv, "environment", nil) end + +end + +function traversefunction(env, obj) + local f = env.funcs.func + if f then f(obj) end + + -- gets the upvalues + local i = 1 + while true do + local n, v = debug.getupvalue(obj, i) + if not n then break end -- when there is no upvalues + edge(env, obj, n, "isname", nil) + edge(env, obj, v, "upvalue", n) + i = i + 1 + end + + local fenv = debug.getfenv(obj) + edge(env, obj, fenv, "environment", nil) + +end + +function traversethread(env, t) + local f = env.funcs.thread + if f then f(t) end + + for i=1, math.huge do + local info = debug.getinfo(t, i, "f") + if not info then break end + for j=1, math.huge do + local n, v = debug.getlocal(t, i , j) + if not n then break end + print(n, v) + + edge(env, nil, n, "isname", nil) + edge(env, nil, v, "local", n) + end + end + + local fenv = debug.getfenv(t) + edge(env, t, fenv, "environment", nil) + +end + + +-- 'how' is a string that identifies the content of 'to' and 'value': +-- if 'how' is "key", then 'to' is a key and 'name' is nil. +-- if 'how' is "value", then 'to' is an object and 'name' is the name of the +-- key. +function edge(env, from, to, how, name) + + local t = type(to) + + if to and (t~="boolean") and (t~="number") and (t~="new") then + -- If the destination object has not been found yet + if not env.marked[to] then + env.marked[to] = true + List.push(env.list, to) -- puts on the list to be traversed + end + + local f = env.funcs.edge + if f then f(from, to, how, name) end + + end +end + +return _M; diff --git a/data/misc.lua b/data/misc.lua new file mode 100644 index 0000000..9e9a739 --- /dev/null +++ b/data/misc.lua @@ -0,0 +1,204 @@ +-- +-- Conky Lua scripting example +-- +-- Copyright (c) 2009 Brenden Matthews, all rights reserved. +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- + +function components_to_colour(r, g, b) + -- Take the RGB components r, g, b, and return an RGB integer + return ((math.floor(r + 0.5) * 0x10000) + (math.floor(g + 0.5) * 0x100) + math.floor(b + 0.5)) % 0xffffff -- no bit shifting operator in Lua afaik +end + +function colour_to_components(colour) + -- Take the RGB components r, g, b, and return an RGB integer + return (colour / 0x10000) % 0x100, (colour / 0x100) % 0x100, colour % 0x100 +end + +function conky_top_colour(value, default_colour, lower_thresh, upper_thresh) + --[[ + This function returns a colour based on a threshold, by adding more of + the red component and reducing the other components. ``value'' is the + value we're checking the thresholds against, ``default_colour'' is the + original colour (before adjusting), and the ``lower_thresh'' and + ``upper_thresh'' parameters are the low and high values for which we + start applying redness. + ]] + local r, g, b = colour_to_components(default_colour) + local colour = 0 + if value ~= nil and (value - lower_thresh) > 0 then + if value > upper_thresh then value = upper_thresh end + local perc = (value - lower_thresh) / (upper_thresh - lower_thresh) + if perc > 1 then perc = 1 end + -- add some redness, depending on where ``value'' lies within the + -- threshhold range + r = r + perc * (0xff - r) + b = b - perc * b + g = g - perc * g + end + colour = components_to_colour(r, g, b) + return string.format("${color #%06x}", colour) +end + +-- parses the output from top and calls the colour function +function conky_top_cpu_colour(arg) + -- input is the top var number we want to use + local str = conky_parse(string.format('${top name %i}${top cpu %i}${top mem %i}', tonumber(arg), tonumber(arg), tonumber(arg))) + local cpu = tonumber(string.match(str, '(%d+%.%d+)')) + return conky_top_colour(cpu, 0xd3d3d3, 25, 70) .. str +end + +function conky_top_mem_colour(arg) + -- input is the top var number we want to use + local str = conky_parse(string.format('${top_mem name %i}${top_mem mem_res %i} ${top_mem mem_vsize %i}', tonumber(arg), tonumber(arg), tonumber(arg))) + local mem = tonumber(string.match(str, '%w+%s+(%d+%.%d+)%w%s%s')) + -- tweak the last 3 parameters to your liking + -- my machine has ~8GiB of ram, so an upper thresh of 15% seemed appropriate + return conky_top_colour(mem, 0xd3d3d3, 10, 24) .. str +end + +function conky_top_io_colour(arg) + -- input is the top var number we want to use + local str = conky_parse(string.format('${top_io name %i}${top_io io_read %i} ${top_io io_write %i} ${top_io io_perc %i}', tonumber(arg), tonumber(arg), tonumber(arg), tonumber(arg))) + local ioR,ioW = string.match(str, '%w+%s+(%d+%.*%d*%w)%s+(%d+%.*%d*%w)%s+') + local tot = conky_parse("${to_bytes "..ioR.."}") + conky_parse("${to_bytes "..ioW.."}") --these can be bytes or mb :( + -- tweak the last 3 parameters to your liking + -- my machine has ~8GiB of ram, so an upper thresh of 15% seemed appropriate + str = string.gsub(str," 0B", " 0.00B") + return conky_top_colour(tot, 0xd3d3d3, 100, 200) .. str +end + +function colour_transition(start, stop, position) + --[[ + Transition from one colour to another based on the value of + ``position'', which should be a number between 0 and 1. + ]] + local rs, gs, bs = colour_to_components(start) -- start components + local re, ge, be = colour_to_components(stop) -- end components + local function tr(s, e, p) + return e + (e - s) * p + end + local rr, gr, br = tr(rs, re, position), tr(gs, ge, position), tr(bs, be, position) -- result components + return components_to_colour(rr, gr, br) +end + +function get_timezone_offset() + -- returns the number of seconds of timezone offset + local tz = tonumber(os.date('%z')) + local tzh = math.floor(tz / 100 + 0.5) + local tzm = math.abs(tz) % 100 / 60. + if tzh < 0 then tzm = -tzm end + return (tzh + tzm) * 3600 +end + +function julian_to_unix(J) + -- converts a julian date into unit time + return (J - 2440588) * 86400 +end + +function get_julian_now() + -- returns the current time in julian date format + local now = os.time() + return now / 86400. + 2440588 +end + +function calculate_sunrise_sunset(latitude, longitude) + --[[ + This function returns the unix timestamps in the local time for sunrise and + sunset times, according to ``latitude'' and ``longitude''. For the + latitude, north is positive and south is negative. For the longitude, west + is negative, and east is positive. You can usually determine the lat/long + for your location from Wikipedia or using some mapping tool. + + In my case (Calgary, AB) the lat/long are 51.045 and -114.057222 + + Reference: http://en.wikipedia.org/wiki/Sunrise_equation + ]] + + -- Negate longitude, west is positive and east is negative + longitude = -longitude + + -- Calculate current Julian Cycle + local n = math.floor(get_julian_now() - 2451545 - 0.0009 - longitude / 360 + 0.5) + + -- Approximate Solar Noon + local Js = 2451545 + 0.0009 + longitude / 360 + n + + -- Solar Mean Anomaly + local M = (357.5291 + 0.98560028 * (Js - 2451545)) % 360 + + -- Equation of Center + local C = (1.9148 * math.deg(math.sin(math.rad(M)))) + (0.0200 * math.deg(math.sin(math.rad(2 * M)))) + (0.0003 * math.deg(math.sin(math.rad(3 * M)))) + + -- Ecliptic Longitude + local lam = (M + 102.9372 + C + 180) % 360 + + -- Solar Transit + local Jt = Js + (0.0053 * math.deg(math.sin(math.rad(M)))) - (0.0069 * math.deg(math.sin(math.rad(2 * lam)))) + + -- Declination of the Sun + local delta = math.deg(math.asin(math.sin(math.rad(lam)) * math.sin(math.rad(23.45)))) + + -- Hour Angle + local w = math.deg(math.acos((math.sin(math.rad(-0.83)) - math.sin(math.rad(delta)) * math.sin(math.rad(latitude))) / (math.cos(math.rad(latitude)) * math.cos(math.rad(delta))))) + + local J_set = 2451545 + 0.0009 + ((w + longitude)/360 + n + (0.0053 * math.deg(math.sin(math.rad(M)))) - (0.0069 * math.deg(math.sin(math.rad(2 * lam))))) + local J_rise = Jt - (J_set - Jt) + + + local rising_t, setting_t = julian_to_unix(J_rise), julian_to_unix(J_set) + + -- apply timezone offset + local tz_offset = get_timezone_offset() + rising_t = rising_t + tz_offset + setting_t = setting_t + tz_offset + + return rising_t, setting_t +end + +local last_sunrise_set_check = 0 +local sunrise, sunset = 0 + +function conky_datey(latitude, longitude, change) + --[[ + Returns a colour at or between day_sky and night_sky (see below) depending on the + time of day. You must provide the ``latitude'' and ``longitude'' + parameters for your location (see the comments for + calculate_sunrise_sunset() above for more info). The ``change'' parameter + is the number of hours we want to start and have a transition, so a value + of 1 will mean the transition starts 30 minutes before, and ends 30 minutes + after. + ]] + local function to_hours(t) + return tonumber(os.date('%k', t)) + (tonumber(os.date('%M', t)) / 60) + (tonumber(os.date('%S', t)) / 3600) + end + if last_sunrise_set_check < os.time() - 86400 then + sunrise, sunset = calculate_sunrise_sunset(tonumber(latitude), tonumber(longitude)) + -- convert unix times into hours + sunrise, sunset = to_hours(sunrise), to_hours(sunset) + end + local day_sky = 0x6698FF -- colour to use during daytime + local night_sky = 0x342D7E -- colour to use during nighttime + local hour = to_hours(os.time()) + if hour > sunrise + change / 2 and hour < sunset - change / 2 then + -- midday + sky = day_sky + elseif hour > sunset + change / 2 or hour < sunrise - change / 2 then + -- midnight + sky = night_sky + elseif hour > sunset - change / 2 then + -- sunset time + sky = colour_transition(day_sky, night_sky, (hour - sunset - change / 2) / change) + elseif hour < sunrise + change / 2 then + -- sunrise time + sky = colour_transition(night_sky, day_sky, (hour - sunrise - change / 2) / change) + end + return string.format('${color #%6x}', sky) +end + +require 'imlib2' + diff --git a/data/n950-kobol.jpg b/data/n950-kobol.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6d69ccae74444930bfc5c53147a20c1e1cf32890 GIT binary patch literal 110337 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

56wE%WsE$j9SWqwyTTESC)xy}Fz=}a6!TT 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 EKPu-LRsaA1 literal 0 HcmV?d00001 diff --git a/data/piechart.lua b/data/piechart.lua new file mode 100644 index 0000000..5320cce --- /dev/null +++ b/data/piechart.lua @@ -0,0 +1,654 @@ +--[[PIE CHART WIDGET BY WLOURF v1.21 26 june 2010 + +This widget draw a pie chart or a ring in a conky window. +More info on the parameters with pictures on this page : +http://u-scripts.blogspot.com/2010/04/pie-chart-widget.html + +Parameters are : +tableV -- table of labels and values {{label,conky_variable,conky_argument,convert to Go-Mo-Ko units (true/false) or unit}, ...} + -- this table is mandatory, others parameters are optionals + -- example : + tableV={ + {"cpu 0","cpu","cpu0",100,"%"}, + {"cpu 1","cpu","cpu1",100,"%"}, + }, + -- to know disk space, use this line : + tableV=read_df(true,true), + +xc -- x center of the pie, default = conky_window.width/2 +yc, -- y center of the pie, default = conky_window.height/2 +radius_int -- internal radius in pixel, default = conky_window.width/6 +radius_ext -- external radius in pixel, default = conky_window.width/4 +first_angle -- first angle of the pie (in degrees), default=0 +last_angle -- last angle of the pie (in degrees), default=360 +type_arc, -- fill the arc in a linear way (ring) or radial way (pie), values l or r, default=l +inverse_l_arc -- inverse arc for rings (true/false), default=false +proportional -- display proportional sectors (true/false); default =false +gradient_effect -- gradient effect (true/false), default=true +line_length -- length for horizontal line (from radius_ext to end of line), default=radius_ext +line_thickness -- thickness of line, default=1 +line_space -- vertical space between two lines, default=10 pixels +extend_line -- grow up the line (true/false) if length of text> line_length, default=true +nb_decimals -- number of decimals for numbers, default=1 +show_text -- display text (true/false), default=true +font_name -- font, default "Nokia Pure" +font_size -- font size, default=12 +font_color -- font color (for gradient) or nil (for constant color), default = nil +font_alpha -- font alpha, default=1 +txt_offset -- space between text and line, default=1 +txt_format -- string for formatting text, possibles values are : default = "&l : &v" + -- &l for label + -- &o for occupied percentage + -- &f for free percentage + -- &v for value + -- &n for free value (non-occupied) + -- &m for max value + -- &p for percentage value of full graph +tablebg -- table of tables of colours for background {colors,alpha} +tablefg -- table of tables of colours for foreground {colors,alpha} + + +v1.0 10/04/2010 original release +v1.1 15/05/2010 the parameters are in a table (pie_settings), only the values in pie_settings.tableV are mandatory + added an option to draw values like a ring (type_arc="l") +v1.2 26/05/2010 add inverse_l parameter (for type_arc="l") + bug fix : line_length problem + read_df function improved +v1.21 26/06/2010 rename some parameters and write more infos +]] + + +require 'cairo' + + +--main function +function conky_main_pie() + if conky_window==nil then return end + + +-- ------------------PARAMETERS TO SET----------------------- + --theses parameters are called many times so I put them into variables + local font_name,font_size="Nokia Pure",14 + local col0,col1,col2=0xFFFFCC,0xCCFF99,0x99FF00 + local colbg=0x99CCFF + + --for the clock + local temp = os.date("*t") + local hour=temp.hour + if hour>12 then hour=hour-12 end + local hpc,mpc,spc=hour/12,temp.min/60,temp.sec/60 + + + pie_settings= { + + {--CIRCLE 4 : DISK SPACE + tableV=read_df(true,true), + xc=500, + yc=150 , + int_radius=30, + radius=45, + type_arc="r", + proportional=true, + first_angle=-90, + last_angle=270, + gradient_effect=true, + show_text=true, + line_lgth=100, + line_space=19, + txt_format="&l free &n", + font_color=colbg, + tablebg={ + {colbg,0.5}, + }, + tablefg={ + {col0,1}, + {col1,1}, + {col2,1}, + }, + }, + + + {--CIRCLE 1 : ARCS 1 & 2 INTERNET SPEED + tableV={ + {"dl","downspeedf","eth1",1000,"kb/s"}, + {"ul","upspeedf","eth1",100,"kb/s"}, + }, + xc=300, + yc=200, + int_radius=30, + radius=45, + first_angle=-30, + last_angle=210, + type_arc="r", + --line_lgth=150, + line_width=0, + show_text=false, + font_color=colbg, + tablebg={ + {colbg,0.5}, + }, + tablefg={ + {col0,1}, + {col1,1}, + }, + }, + + + {--CIRCLE 2 : ARC 1 CPU 0 + tableV={ + {"cpu 0","cpu","cpu 0",100,"%"}, + --{"cpu 1","cpu","cpu 1",100,"%"}, + }, + xc=300, + yc=350, + int_radius=30, + radius=45, + first_angle=-30, + last_angle=210, + type_arc="l", + show_text=false, + tablebg={ + {colbg,0.5}, + }, + tablefg={ + {col0,1}, + }, + }, + +-- {--CIRCLE 2 : ARC 2 CPU 1 +-- tableV={ +-- --{"cpu 0","cpu","cpu 0",100,"%"}, +-- {"cpu 1","cpu","cpu 1",100,"%"}, +-- }, +-- xc=200, +-- yc=350, +-- int_radius=30, +-- radius=45, +-- first_angle=90, +-- last_angle=220, +-- type_arc="l", +-- inverse_l_arc=true, +-- show_text=false, +-- tablebg={ +-- {colbg,0.5}, +-- }, +-- tablefg={ +-- {col0,1}, +-- }, +-- }, + + + + + + {--CIRCLE 3 : MEMORY : ram + tableV={ + {"mem","memperc","",100,"%"}, + }, + xc=400, + yc=370, + int_radius=30, + radius=45, + first_angle=-30, + last_angle=220, + type_arc="l", + inverse_l_arc=false, + proportional=false, + gradient_effect=true, + nb_decimals=0, + show_text=false, + tablebg={ + {colbg,0.5}, + }, + tablefg={ + {col0,1}, + }, + }, + + + } +-------------------END OF PARAMETERS --------------- + + local w=conky_window.width + local h=conky_window.height + local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h) + cr=cairo_create(cs) + + if tonumber(conky_parse('${updates}'))>5 then + for i in pairs(pie_settings) do + draw_pie(pie_settings[i]) + end + end + cairo_surface_destroy(cs) + cairo_destroy(cr) +end + + + +function string:split(delimiter) +--source for the split function : http://www.wellho.net/resources/ex.php4?item=u108/split + local result = { } + local from = 1 + local delim_from, delim_to = string.find( self, delimiter, from ) + while delim_from do + table.insert( result, string.sub( self, from , delim_from-1 ) ) + from = delim_to + 1 + delim_from, delim_to = string.find( self, delimiter, from ) + end + table.insert( result, string.sub( self, from ) ) + return result +end + + +function rgb_to_r_g_b(colour, alpha) + return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha +end + +function round(num, idp) + local mult = 10^(idp or 0) + return math.floor(num * mult + 0.5) / mult +end + +function size_to_text(size,nb_dec) + local txt_v + if nb_dec<0 then nb_dec=0 end + size = tonumber(size) + if size>1024*1024*1024 then + txt_v=string.format("%."..nb_dec.."f G",size/1024/1024/1024) + elseif size>1024*1024 then + txt_v=string.format("%."..nb_dec.."f M",size/1024/1024) + elseif size>1024 then + txt_v=string.format("%."..nb_dec.."f K",size/1024) + else + txt_v=string.format("%."..nb_dec.."f B",size) + end + return txt_v +end + +function text_to_bytes(txt_in) + local txt_modifier + local num_bytes + txt_modifier = string.match(txt_in,"%d(%a)") + num_bytes = string.gsub(txt_in,"%d(%a)","") + if txt_modifier == "G" then + num_bytes = num_bytes*1024*1024*1024 + elseif txt_modifier == "M" then + num_bytes = num_bytes*1024*1024 + elseif txt_modifier == "K" then + num_bytes = num_bytes*1024 + elseif txt_modifier == "B" then + num_bytes = num_bytes + end + return num_bytes +end + + + +function read_df(show_media,sort_table) + --read output of command df and return arrays of value for files systems + --reurn array of table {file syst, "", occupied space , total space , convert to G, M, K ...} + + local f = io.popen("df") + + local results={} + table.insert(results,{"/home/user/MyDocs","",text_to_bytes(conky_parse("${fs_used /home/user/MyDocs}")),text_to_bytes(conky_parse("${fs_size /home/user/MyDocs}")),true}) + table.insert(results,{"/home","",text_to_bytes(conky_parse("${fs_used /home}")),text_to_bytes(conky_parse("${fs_size /home}")),true}) + table.insert(results,{"rootfs","",text_to_bytes(conky_parse("${fs_used /}")),text_to_bytes(conky_parse("${fs_size /}")),true}) + table.insert(results,{"SD","",text_to_bytes(conky_parse("${fs_used /media/mmc1}")),text_to_bytes(conky_parse("${fs_size /media/mmc1}")),true}) + --table.insert(results,{"/home/user/MyDocs2","","30","50",true}) + --table.insert(results,{text_to_bytes(conky_parse("${fs_used /home/user/MyDocs}")),"","10","50",true}) +-- while true do +-- local line = f:read("*l") +-- if line == nil then break end +-- while string.match(line," ") do +-- line=string.gsub(line," "," ") +-- end +-- local arr_l=string.split(line," ") +-- local match = string.match(arr_l[1],"/") +-- +-- if string.match(arr_l[1],"/") then +-- if not show_media then arr_l[6]=string.gsub(arr_l[6],"/media/","",1) end +-- if string.match(arr_l[1],"opt/") then break end +-- table.insert(results,{arr_l[6],"",(arr_l[2]-arr_l[4])*1024,arr_l[2]*1024,true}) +-- end +-- end +-- +-- f:close() +-- +-- if sort_table then +-- --how to sort table into table? +-- local flagS=true +-- while flagS do +-- for k=2, #results do +-- flagS=false +-- if tonumber(results[1][3])>tonumber(results[2][3]) then +-- local tmpV = results[1] +-- results[1] = results[2] +-- results[2] = tmpV +-- flagS=true +-- end +-- if tonumber(results[k][3])0 and x2-x11 then + local dY = math.abs(y2-lastPt2[2]) + if dY < line_space and lastPt2[1]*x1>0 then + if x0>0 then + y2 = line_space+lastPt2[2] + else + y2 = -line_space+lastPt2[2] + end + if (y2>y1 and x0>0) or (y20 then x3=x3+txt_offset end + else + Z=intercept({x0,y0},{x1,y1},{0,y2},{1,y2}) + x1,y1=Z[1],Z[2] + end + end + else + --remind x2,y2 of first value + x2first,y2first = x2,y2 + end + + if font_color==nil then + cairo_set_source_rgba(cr,rgb_to_r_g_b(table_colors[idx_color][1],table_colors[idx_color][2])) + else + local pat = cairo_pattern_create_linear (x2,y2, x0,y0) + cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(font_color,font_alpha)) + cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(table_colors[idx_color][1],table_colors[idx_color][2])) + cairo_set_source (cr, pat) + cairo_pattern_destroy(pat) + end + + + cairo_move_to(cr,x0,y0) + cairo_line_to(cr,x1,y1) + cairo_line_to(cr,x2,y2) + if x3~=nil then + cairo_line_to(cr,x3,y3) + x2,y2=x3,y3 + end + cairo_set_line_width(cr,line_width) + cairo_stroke(cr) + --lastAngle=lastAngle+angle + return {x2,y2} + end + + function intercept(p11,p12,p21,p22) + --calculate interscetion of two lines and return coordinates + a1=(p12[2]-p11[2])/(p12[1]-p11[1]) + + a2=(p22[2]-p21[2])/(p22[1]-p21[1]) + + b1=p11[2]-a1*p11[1] + + b2=p21[2]-a2*p21[1] + + X=(b2-b1)/(a1-a2) + + Y=a1*X+b1 + return {X,Y} + end + + --some checks + if t.first_angle>=t.last_angle then + local tmp_angle=t.last_angle + --t.last_angle=t.first_angle + --t.first_angle=tmp_angle + print ("inversed angles") + end + + if t.last_angle-t.first_angle>360 and t.first_angle>0 then + t.last_angle=360+t.first_angle + print ("reduce angles") + end + + if t.last_angle+t.first_angle>360 and t.first_angle<=0 then + t.last_angle=360+t.first_angle + print ("reduce angles") + end + + if t.int_radius<0 then t.int_radius =0 end + if t.int_radius>t.radius then + local tmp_radius=t.radius + t.radius=t.int_radius + t.int_radius=tmp_radius + print ("inversed angles") + end + if t.int_radius==t.radius then + t.int_radius=0 + print ("int radius set to 0") + end + --end of checks + + cairo_save(cr) + cairo_translate(cr,t.xc,t.yc) + cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND) + cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND) + + local nbArcs=#tableV + local anglefull= (t.last_angle-t.first_angle)*math.pi/180 + local fullsize = 0 + for i= 1,nbArcs do + fullsize=fullsize+tableV[i][4] + end + + local cb,cf,angle=0,0,anglefull/nbArcs + lastAngle=t.first_angle*math.pi/180 + lastPt2={nil,nil} + + for i =1, nbArcs do + if t.proportional then + angle=tableV[i][4]/fullsize*anglefull + end + --set colours + cb,cf=cb+1,cf+1 + if cb>#t.tablebg then cb=1 end + if cf>#t.tablefg then cf=1 end + + if tableV[i][2]~="" then + str=string.format('${%s %s}',tableV[i][2],tableV[i][3]) + else + str = tableV[i][3] + end + str=conky_parse(str) + value=tonumber(str) + if value==nil then value=0 end + + --draw sectors + draw_sector(t.tablebg,cb,1,lastAngle,angle,t.radius,t.int_radius,t.gradient_effect,t.type_arc,t.inverse_l_arc) + --print (t.tablefg,cf,tableV[i][2],tableV[i][3],lastAngle,angle,t.radius,t.int_radius) + --print (cf,tableV[i],tableV[i][2],tableV[i][3]) + draw_sector(t.tablefg,cf,value/tableV[i][4],lastAngle,angle,t.radius,t.int_radius,t.gradient_effect,t.type_arc,t.inverse_l_arc) + + if t.show_text then + --draw text + local txt_l = tableV[i][1] + local txt_opc = round(100*value/tableV[i][4],t.nb_decimals).."%%" + local txt_fpc = round(100*(tableV[i][4]-value/tableV[i][4]),t.nb_decimals).."%%" + local txt_ov,txt_fv,txt_max + if tableV[i][5]==true then + txt_ov = size_to_text(value,t.nb_decimals) + txt_fv = size_to_text(tableV[i][4]-value,t.nb_decimals) + txt_max = size_to_text(tableV[i][4],t.nb_decimals) + else + if tableV[i][5]=="%" then tableV[i][5]="%%" end + txt_ov=string.format("%."..t.nb_decimals.."f ",value)..tableV[i][5] + txt_fv=string.format("%."..t.nb_decimals.."f",tableV[i][4]-value)..tableV[i][5] + txt_max=string.format("%."..t.nb_decimals.."f",tableV[i][4])..tableV[i][5] + end + txt_pc = string.format("%."..t.nb_decimals.."f",100*tableV[i][4]/fullsize).."%%" + local txt_out = t.txt_format + txt_out = string.gsub(txt_out,"&l",txt_l) --label + txt_out = string.gsub(txt_out,"&o",txt_opc)--occ. % + txt_out = string.gsub(txt_out,"&f",txt_fpc)--free % + txt_out = string.gsub(txt_out,"&v",txt_ov) --occ. value + txt_out = string.gsub(txt_out,"&n",txt_fv) --free value + txt_out = string.gsub(txt_out,"&m",txt_max)--max + txt_out = string.gsub(txt_out,"&p",txt_pc)--percent + + local te=cairo_text_extents_t:create() + cairo_set_font_size(cr,t.font_size) + cairo_select_font_face(cr, t.txt_font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL) + cairo_text_extents (cr,txt_out,te) + + --draw lines + lastPt2=draw_lines(i,nbArcs,angle,t.tablefg,cf,t.extend_line,t.line_lgth+t.radius, + te.width + te.x_bearing,t.txt_offset,t.radius,t.line_width,t.line_space,t.font_color,t.font_alpha) + + local xA=lastPt2[1] + local yA=lastPt2[2]-t.line_width-t.txt_offset + if xA>0 then xA = xA-(te.width + te.x_bearing) end + cairo_move_to(cr,xA,yA) + cairo_show_text(cr,txt_out) + end + + lastAngle=lastAngle+angle + end + cairo_restore(cr) +end + + +--[[END OF PIE CHART WIDGET]] diff --git a/data/strict.lua b/data/strict.lua new file mode 100644 index 0000000..f04505e --- /dev/null +++ b/data/strict.lua @@ -0,0 +1,42 @@ +-- +-- strict.lua +-- checks uses of undeclared global variables +-- All global variables must be 'declared' through a regular assignment +-- (even assigning nil will do) in a main chunk before being used +-- anywhere or assigned to inside a function. +-- +-- From Lua distribution (etc/strict.lua) +-- + +local getinfo, error, rawset, rawget = debug.getinfo, error, rawset, rawget + +local mt = getmetatable(_G) +if mt == nil then + mt = {} + setmetatable(_G, mt) +end + +mt.__declared = {} + +local function what () + local d = getinfo(3, "S") + return d and d.what or "C" +end + +mt.__newindex = function (t, n, v) + if not mt.__declared[n] then + local w = what() + if w ~= "main" and w ~= "C" then + print("assign to undeclared variable '"..n.."'") + end + mt.__declared[n] = true + end + rawset(t, n, v) +end + +mt.__index = function (t, n) + if not mt.__declared[n] and what() ~= "C" then + print("variable '"..n.."' is not declared") + end + return rawget(t, n) +end diff --git a/data/testCairo.lua b/data/testCairo.lua new file mode 100644 index 0000000..088156a --- /dev/null +++ b/data/testCairo.lua @@ -0,0 +1,236 @@ +--[[ +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 = { + { + -- Edit this table to customise your rings. + -- You can create more rings simply by adding more elements to settings_table. + -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'. + name='time', + -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''. + arg='%I.%M', + -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100. + max=12, + -- "bg_colour" is the colour of the base ring. + bg_colour=0xffffff, + -- "bg_alpha" is the alpha value of the base ring. + bg_alpha=0.1, + -- "fg_colour" is the colour of the indicator part of the ring. + fg_colour=0xffffff, + -- "fg_alpha" is the alpha value of the indicator part of the ring. + fg_alpha=0.2, + -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window. + x=165, y=170, + -- "radius" is the radius of the ring. + radius=50, + -- "thickness" is the thickness of the ring, centred around the radius. + thickness=5, + -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative. + start_angle=0, + -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle. + end_angle=360 + }, + { + name='time', + arg='%M.%S', + max=60, + bg_colour=0xffffff, + bg_alpha=0.1, + fg_colour=0xffffff, + fg_alpha=0.4, + x=165, y=170, + radius=56, + thickness=5, + start_angle=0, + end_angle=360 + }, + { + name='time', + arg='%S', + max=60, + bg_colour=0xffffff, + bg_alpha=0.1, + fg_colour=0xffffff, + fg_alpha=0.6, + x=165, y=170, + radius=62, + thickness=5, + start_angle=0, + end_angle=360 + }, + { + name='cpu', + arg='cpu0', + max=100, + bg_colour=0xffffff, + bg_alpha=0.1, + fg_colour=0xffffff, + fg_alpha=0.4, + x=165, y=170, + radius=84.5, + thickness=8, + start_angle=60, + end_angle=120 + }, + { + name='battery_percent', + arg='BAT1', + max=100, + bg_colour=0xffffff, + bg_alpha=0.1, + fg_colour=0xffffff, + fg_alpha=0.6, + x=165, y=170, + radius=72, + thickness=11, + start_angle=122, + end_angle=210 + }, + { + name='memperc', + arg='', + max=100, + bg_colour=0xffffff, + bg_alpha=0.1, + fg_colour=0xffffff, + fg_alpha=0.8, + x=165, y=170, + radius=83.5, + thickness=8, + start_angle=122, + end_angle=210 + }, + { + name='time', + arg='%d', + max=31, + bg_colour=0xffffff, + bg_alpha=0.1, + fg_colour=0xffffff, + fg_alpha=0.8, + x=165, y=170, + radius=70, + thickness=5, + start_angle=212, + end_angle=360 + }, + { + name='time', + arg='%m', + max=12, + bg_colour=0xffffff, + bg_alpha=0.1, + fg_colour=0xffffff, + fg_alpha=0.8, + x=165, y=170, + radius=76, + thickness=5, + start_angle=212, + end_angle=360 + }, + { + name='fs_used_perc', + arg='/', + max=150, + bg_colour=0xffffff, + bg_alpha=0.2, + fg_colour=0xffffff, + fg_alpha=0.3, + x=165, y=170, + radius=108.5, + thickness=3, + start_angle=-120, + end_angle=240 + }, + { + name='fs_used_perc', + arg='/', + max=100, + bg_colour=0xffffff, + bg_alpha=0.2, + fg_colour=0xffffff, + fg_alpha=0.3, + x=165, y=170, + radius=135, + thickness=50, + start_angle=-120, + end_angle=120 + }, +} + +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 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 + + 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 + end + cairo_surface_destroy(cs) + cairo_destroy(cr) +end diff --git a/data/text.lua b/data/text.lua new file mode 100644 index 0000000..ad81b99 --- /dev/null +++ b/data/text.lua @@ -0,0 +1,558 @@ +--[[TEXT WIDGET v1.. by Wlourf 25/06/2010 +This widget can drawn texts set in the "text_settings" table with some parameters +http://u-scripts.blogspot.com/2010/06/text-widget.html + +The parameters (all optionals) are : +text - text to display, default = "Conky is good for you" + use conky_parse to display conky value ie text=conly_parse("${cpu cpu1}") + - coordinates below are relative to top left corner of the conky window +x - x coordinate of first letter (bottom-left), default = center of conky window +y - y coordinate of first letter (bottom-left), default = center of conky window +h_align - horizontal alignement of text relative to point (x,y), default="l" + available values are "l": left, "c" : center, "r" : right +v_align - vertical alignment of text relative to point (x,y), default="b" + available values "t" : top, "m" : middle, "b" : bottom +font_name - name of font to use, default = Free Sans +font_size - size of font to use, default = 14 +italic - display text in italic (true/false), default=false +oblique - display text in oblique (true/false), default=false (I don' see the difference with italic!) +bold - display text in bold (true/false), default=false +angle - rotation of text in degrees, default = 0 (horizontal) +colour - table of colours for text, default = plain white {{1,0xFFFFFF,1}} + this table contains one or more tables with format {P,C,A} + P=position of gradient (0 = beginning of text, 1= end of text) + C=hexadecimal colour + A=alpha (opacity) of color (0=invisible,1=opacity 100%) + Examples : + for a plain color {{1,0x00FF00,0.5}} + for a gradient with two colours {{0,0x00FF00,0.5},{1,0x000033,1}} + or {{0.5,0x00FF00,1},{1,0x000033,1}} -with this one, gradient will start in the middle of the text + for a gradient with three colours {{0,0x00FF00,0.5},{0.5,0x000033,1},{1,0x440033,1}} + and so on ... +orientation - in case of gradient, "orientation" defines the starting point of the gradient, default="ww" + there are 8 available starting points : "nw","nn","ne","ee","se","ss","sw","ww" + (n for north, w for west ...) + theses 8 points are the 4 corners + the 4 middles of text's outline + so a gradient "nn" will go from "nn" to "ss" (top to bottom, parallele to text) + a gradient "nw" will go from "nw" to "se" (left-top corner to right-bottom corner) +radial - define a radial gradient (if present at the same time as "orientation", "orientation" will have no effect) + this parameter is a table with 6 numbers : {xa,ya,ra,xb,yb,rb} + they define two circle for the gradient : + xa, ya, xb and yb are relative to x and y values above +reflection_alpha - add a reflection effect (values from 0 to 1) default = 0 = no reflection + other values = starting opacity +reflection_scale - scale of the reflection (default = 1 = height of text) +reflection_length - length of reflection, define where the opacity will be set to zero + calues from 0 to 1, default =1 +skew_x,skew_y - skew text around x or y axis + + +Needs conky 1.8.0 + +To call this script in the conkyrc, in before-TEXT section: + lua_load /path/to/the/lua/script/text.lua + lua_draw_hook_pre draw_text + +v1.0 07/06/2010, Original release +v1.1 10/06/2010 Add "orientation" parameter +v1.2 15/06/2010 Add "h_align", "v_align" and "radial" parameters +v1.3 25/06/2010 Add "reflection_alpha", "reflection_length", "reflection_scale", + "skew_x" et "skew_y" + + +]] + +require 'cairo' + +function conky_draw_text() + local col0,col1,col2=0xFFFFCC,0xCCFF99,0x99FF00 + local colbg=0x99CCFF + local text_settings={ + { + text=conky_parse("${time %I:%M%p %D}"), + font_size=24, + bold=true, + font_name="Nokia Pure", + h_align="l", + v_align="t", + x=5, + y=5, + reflection_alpha=0, + reflection_length=0, + colour={ + {0.98, 0xFF0000,1}, + {0.99, 0xFFCC00,1}, + {1.00, 0xFF0000,1}, + }, + radial={400,-700,0,100,-1000,1024} + }, + { + text=conky_parse("$sysname $kernel on $machine - $uptime"), + font_size=16, + bold=true, + font_name="Nokia Pure", + h_align="r", + x=800, + y=15, + reflection_alpha=0, + reflection_length=0, + colour={{0,col0,0.75},{1,colbg,0.75}}, + + }, + { + text=conky_parse("$freq MHz"), + font_name="Nokia Pure", + font_size=16, + h_align="l", + v_align="t", + bold=true, + x=20, + y=60, + reflection_alpha=0, + reflection_length=0, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + }, + { + text=conky_parse("${battery_temp}").."\194\176",--yes i had to do the degree symbol like that... + x=794, + y=69, + v_align="m", + h_align="r", + font_name="Nokia Pure", + font_size=14, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + reflection_alpha=0, + reflection_length=0, + }, + { + text=conky_parse("${battery_short} ${battery_volts}mV"), + x=794, + y=45, + v_align="m", + h_align="r", + font_name="Nokia Pure", + font_size=14, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + reflection_alpha=0, + reflection_length=0, + }, + { + text=conky_parse("${cell_radio_dbm}".."dBm"), + x=510, + y=50, + font_name="Nokia Pure", + font_size=14, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + reflection_alpha=0.0, + reflection_length=0.0, + }, + { + text=conky_parse('${cpu}').."%", + x=223, + y=65, + v_align="t", + h_align="l", + font_name="Nokia Pure", + font_size=18, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + }, + { + text=conky_parse('${memperc}').."%", + x=223, + y=91, + v_align="t", + font_name="Nokia Pure", + font_size=18, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + reflection_alpha=0, + reflection_length=0, + }, + { + text=conky_parse('${fs_used /} / ${fs_size /} (${fs_free /})'), + x=5, + y=115, + v_align="t", + font_name="Nokia Pure", + font_size=16, + colour={{conky_parse('${fs_used_perc /}')/100,0x000000,1},{1,0xFFFFFF,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + }, + { + text="/", + x=220, + y=114, + v_align="t", + font_name="Nokia Pure", + font_size=18, + colour={{0,0x336633,1},{1,col0,1}}, + bold=true, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + }, + { + text=conky_parse('${fs_used /home} / ${fs_size /home} (${fs_free /home})'), + x=5, + y=135, + v_align="t", + font_name="Nokia Pure", + font_size=16, + colour={{conky_parse('${fs_used_perc /home}')/100,0x000000,1},{1,0xFFFFFF,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + }, + { + text="/home", + x=220, + y=134, + v_align="t", + font_name="Nokia Pure", + font_size=18, + colour={{0,0x336633,1},{1,col0,1}}, + bold=true, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + }, + { + text=conky_parse('${fs_used /home/user/MyDocs} / ${fs_size /home/user/MyDocs} (${fs_free /home/user/MyDocs})'), + x=5, + y=155, + v_align="t", + font_name="Nokia Pure", + font_size=16, + colour={{conky_parse('${fs_used_perc /home/user/MyDocs}')/100-.1,0x000000,1},{1,0xFFFFFF,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_mounted /home/user/MyDocs}1$endif") + }, + { + text="MyDocs", + x=220, + y=154, + v_align="t", + font_name="Nokia Pure", + font_size=18, + colour={{0,0x336633,1},{1,col0,1}}, + bold=true, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_mounted /home/user/MyDocs}1$endif") + }, + --[[ { + text=conky_parse('${fs_used /media/mmc1} / ${fs_size /media/mmc1} (${fs_free /media/mmc1})'), + x=5, + y=175, + v_align="t", + font_name="Nokia Pure", + font_size=16, + colour={{conky_parse('${fs_used_perc /media/mmc1}')/100-.1,0x000000,1},{1,0xFFFFFF,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_mounted /media/mmc1}1$endif") + }, + { + text="SDCard", + x=220, + y=174, + v_align="t", + font_name="Nokia Pure", + font_size=18, + colour={{0,0x336633,1},{1,col0,1}}, + bold=true, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_mounted /media/mmc1}1$endif"), + }, + ]] + { + text=conky_parse('${wireless_essid wlan0}'), + x=375, + y=201, + h_align="c", + v_align="m", + font_name="Nokia Pure", + font_size=18, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), + }, + { + text="GPRS", + x=430, + y=201, + h_align="l", + v_align="m", + font_name="Nokia Pure", + font_size=18, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_up gprs0}1${else}0$endif"), + }, + { + text=conky_parse('${wireless_link_qual_perc wlan0}')..'%', + x=400, + y=228, + h_align="l", + v_align="m", + font_name="Nokia Pure", + font_size=14, + colour={{0,col0,1},{0.5,colbg,1}}, + orientation="nn", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), + }, + { + text='Up '..conky_parse('${upspeedf wlan0}') + conky_parse('${upspeedf gprs0}'), + x=225, + y=223, + h_align="l", + v_align="m", + font_name="LEDFont", + font_size=22, + bold=true, + colour={{0,0xcc0066,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), + }, + { + text=conky_parse('${downspeedf wlan0}') + conky_parse('${downspeedf gprs0}')..' Down', + x=650, + y=223, + h_align="r", + v_align="m", + font_name="LEDFont", + font_size=22, + bold=true, + colour={{0,0xcc0066,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), + }, + --[[ { + text='Up '..conky_parse('${upspeed gprs0}'), + x=225, + y=223, + h_align="l", + v_align="m", + font_name="LEDFont", + font_size=22, + bold=true, + colour={{0,0xcc0066,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_up gprs0}1${else}0$endif"), + }, + { + text=conky_parse('${downspeed gprs0}')..' Down', + x=650, + y=223, + h_align="r", + v_align="m", + font_name="LEDFont", + font_size=22, + bold=true, + colour={{0,0xcc0066,1}}, + orientation="ww", + reflection_alpha=0, + reflection_length=0, + DrawMe=conky_parse("${if_up gprs0}1${else}0$endif"), + },]] + } + if conky_window == nil then return end + if tonumber(conky_parse("$updates"))<3 then return end + local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height) + for i,v in pairs(text_settings) do + cr = cairo_create (cs) + display_text(v) + cairo_destroy(cr) + cr = nil + end + cairo_surface_destroy(cs) +end + +function rgb_to_r_g_b2(tcolour) + local colour,alpha=tcolour[2],tcolour[3] + return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha +end + +function display_text(t) + if t.DrawMe~=nil and t.DrawMe ~= "1" then return end + local function set_pattern(te) + --this function set the pattern + if #t.colour==1 then + cairo_set_source_rgba(cr,rgb_to_r_g_b2(t.colour[1])) + else + local pat + if t.radial==nil then + local pts=linear_orientation(t,te) + pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4]) + else + pat = cairo_pattern_create_radial (t.radial[1],t.radial[2],t.radial[3],t.radial[4],t.radial[5],t.radial[6]) + end + for i=1, #t.colour do + cairo_pattern_add_color_stop_rgba (pat, t.colour[i][1], rgb_to_r_g_b2(t.colour[i])) + end + cairo_set_source (cr, pat) + cairo_pattern_destroy(pat) + end + end + + --set default values if needed + if t.text==nil then t.text="Conky is good for you !" end + if t.x==nil then t.x = conky_window.width/2 end + if t.y==nil then t.y = conky_window.height/2 end + if t.colour==nil then t.colour={{1,0xFFFFFF,1}} end + if t.font_name==nil then t.font_name="Free Sans" end + if t.font_size==nil then t.font_size=14 end + if t.angle==nil then t.angle=0 end + if t.italic==nil then t.italic=false end + if t.oblique==nil then t.oblique=false end + if t.bold==nil then t.bold=false end + if t.radial ~= nil then + if #t.radial~=6 then + print ("error in radial table") + t.radial=nil + end + end + if t.orientation==nil then t.orientation="ww" end + if t.h_align==nil then t.h_align="l" end + if t.v_align==nil then t.v_align="b" end + if t.reflection_alpha == nil then t.reflection_alpha=0 end + if t.reflection_length == nil then t.reflection_length=1 end + if t.reflection_scale == nil then t.reflection_scale=1 end + if t.rotx==nil then t.rotx=0 end + if t.roty==nil then t.roty=0 end + cairo_translate(cr,t.x,t.y) + cairo_rotate(cr,t.angle*math.pi/180) + cairo_save(cr) + local slant = CAIRO_FONT_SLANT_NORMAL + local weight = CAIRO_FONT_WEIGHT_NORMAL + if t.italic then slant = CAIRO_FONT_SLANT_ITALIC end + if t.oblique then slant = CAIRO_FONT_SLANT_OBLIQUE end + if t.bold then weight = CAIRO_FONT_WEIGHT_BOLD end + cairo_select_font_face(cr, t.font_name, slant,weight) + for i=1, #t.colour do + if #t.colour[i]~=3 then + print ("error in color table") + t.colour[i]={1,0xFFFFFF,1} + end + end + local matrix0 = cairo_matrix_t:create() + tolua.takeownership(matrix0) + local rotx,roty=t.rotx/t.font_size,t.roty/t.font_size + cairo_matrix_init (matrix0, 1,roty,rotx,1,0,0) + cairo_transform(cr,matrix0) + cairo_set_font_size(cr,t.font_size) + local te=cairo_text_extents_t:create() + tolua.takeownership(te) + cairo_text_extents (cr,t.text,te) + set_pattern(te) + local mx,my=0,0 + if t.h_align=="c" then + mx=-te.width/2 + elseif t.h_align=="r" then + mx=-te.width + end + if t.v_align=="m" then + my=-te.height/2-te.y_bearing + elseif t.v_align=="t" then + my=-te.y_bearing + end + cairo_move_to(cr,mx,my) + cairo_show_text(cr,t.text) + + if t.reflection_alpha ~= 0 then + local matrix1 = cairo_matrix_t:create() + tolua.takeownership(matrix1) + cairo_set_font_size(cr,t.font_size) + cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(te.height+te.y_bearing+my)*(1+t.reflection_scale)) + cairo_set_font_size(cr,t.font_size) + te=nil + local te=cairo_text_extents_t:create() + tolua.takeownership(te) + cairo_text_extents (cr,t.text,te) + cairo_transform(cr,matrix1) + set_pattern(te) + cairo_move_to(cr,mx,my) + cairo_show_text(cr,t.text) + local pat2 = cairo_pattern_create_linear (0, + (te.y_bearing+te.height+my), + 0, + te.y_bearing+my) + cairo_pattern_add_color_stop_rgba (pat2, 0,1,0,0,1-t.reflection_alpha) + cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1) + cairo_set_line_width(cr,0) + local dy=te.x_bearing + if dy<0 then dy=dy*(-1) end + cairo_rectangle(cr,mx+te.x_bearing,te.y_bearing+te.height+my,te.width+dy,-te.height*1.05) + cairo_clip_preserve(cr) + cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR) + --cairo_stroke(cr) + cairo_mask(cr,pat2) + cairo_pattern_destroy(pat2) + cairo_set_operator(cr,CAIRO_OPERATOR_OVER) + te=nil + end +end + + + function linear_orientation(t,te) + local w,h=te.width,te.height + local xb,yb=te.x_bearing,te.y_bearing + + if t.h_align=="c" then + xb=xb-w/2 + elseif t.h_align=="r" then + xb=xb-w + end + if t.v_align=="m" then + yb=-h/2 + elseif t.v_align=="t" then + yb=0 + end + local p=0 + if t.orientation=="nn" then + p={xb+w/2,yb,xb+w/2,yb+h} + elseif t.orientation=="ne" then + p={xb+w,yb,xb,yb+h} + elseif t.orientation=="ww" then + p={xb,h/2,xb+w,h/2} + elseif vorientation=="se" then + p={xb+w,yb+h,xb,yb} + elseif t.orientation=="ss" then + p={xb+w/2,yb+h,xb+w/2,yb} + elseif vorientation=="ee" then + p={xb+w,h/2,xb,h/2} + elseif t.orientation=="sw" then + p={xb,yb+h,xb+w,yb} + elseif t.orientation=="nw" then + p={xb,yb,xb+w,yb+h} + end + return p +end + diff --git a/debian/changelog b/debian/changelog index c93f0b5..69bfee8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,23 @@ +conky (1.9.8-1) unstable; urgency=low + + * New maemo6 release: + - initial release to support harmattan, don't install on maemo5! (sorry) + + double buffering doesn't work, screen will flicker, this is not a conky bug. Nokia didn't include the double buffer extension module for x11, ask them! + + temperature is not supported at the moment because bme doesn't report it anywhere, that was done with a 3rd party module on n900 + + cairo / lua work, imlib2 works, but these things aren't necessarily in the repositories so please google them to find them for now. you won't be able to install without those! + + this app may crash when swiping it away, and may ignore the down swipe to close, i have no idea why. + + read/write io stats is a kernel feature that titan put into the power kernel on n900, feel free to bug nokia or replace the kernel with a 3rd party one to fix those from being 0 + + I spent lots of time fixing compiling issues and major issues in the lua and .conf files so didn't have time to optimize them for the 48 extra pixels of width or get everything perfect YET. Please be patient or contribute :) + + -- Lance Colton Tue, 08 Nov 2011 21:00:00 -0700 + conky (1.9.7-1) unstable; urgency=low * New maemo release: - fixes for power kernel v47 + temperature and voltage are reported differently by this kernel and needed to be adjusted + temperature is now reported to the tenth of the degree and your conf file may need to be adjusted to account for this additional digit + + enabled cairo / lua scripting -- Lance Colton Mon, 23 May 2011 16:00:00 -0700 diff --git a/debian/conky-n900.docs b/debian/conky-n900.docs deleted file mode 100644 index 7d677cb..0000000 --- a/debian/conky-n900.docs +++ /dev/null @@ -1,6 +0,0 @@ -AUTHORS -README -doc/docs.html -doc/variables.html -doc/config_settings.html -doc/lua.html diff --git a/debian/conky-n900.install b/debian/conky-n900.install deleted file mode 100644 index 9e9e5fe..0000000 --- a/debian/conky-n900.install +++ /dev/null @@ -1 +0,0 @@ -debian/conky.py usr/share/apport/package-hooks/ diff --git a/debian/conky-n900.menu b/debian/conky-n900.menu deleted file mode 100644 index cb17490..0000000 --- a/debian/conky-n900.menu +++ /dev/null @@ -1,2 +0,0 @@ -?package(conky-n900):needs="text" section="Applications/System/Monitoring"\ - title="Conky" command="/usr/bin/conky" diff --git a/debian/conky-n950.docs b/debian/conky-n950.docs new file mode 100644 index 0000000..7d677cb --- /dev/null +++ b/debian/conky-n950.docs @@ -0,0 +1,6 @@ +AUTHORS +README +doc/docs.html +doc/variables.html +doc/config_settings.html +doc/lua.html diff --git a/debian/conky-n950.install b/debian/conky-n950.install new file mode 100644 index 0000000..9e9e5fe --- /dev/null +++ b/debian/conky-n950.install @@ -0,0 +1 @@ +debian/conky.py usr/share/apport/package-hooks/ diff --git a/debian/conky-n950.menu b/debian/conky-n950.menu new file mode 100644 index 0000000..17f5fd3 --- /dev/null +++ b/debian/conky-n950.menu @@ -0,0 +1,2 @@ +?package(conky-n950):needs="text" section="Applications/System/Monitoring"\ + title="Conky" command="/usr/bin/conky" diff --git a/debian/control b/debian/control index ee1ea7f..810c533 100644 --- a/debian/control +++ b/debian/control @@ -1,7 +1,7 @@ Source: conky Section: user/desktop Priority: optional -Maintainer: Darren Long darren.long@mac.com +Maintainer: Lance Colton Lance.Colton@gmail.com XSBC-Original-Maintainer: Cesare Tirabassi Build-Depends: debhelper (>= 5.0.0), libtool, automake, pkg-config (>= 0.19), libx11-dev, libxft-dev, @@ -10,35 +10,40 @@ Build-Depends: debhelper (>= 5.0.0), libtool, automake, libiw-dev[!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libasound2-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libkvm-dev [kfreebsd-i386 kfreebsd-amd64], - libdevstat-dev [kfreebsd-i386 kfreebsd-amd64], - libncurses5-dev, liblua5.1-0-dev, libdbus-1-dev, libcairo2-dev + libdevstat-dev [kfreebsd-i386 kfreebsd-amd64], libcurl4-openssl-dev, + libncurses5-dev, liblua5.1-0-dev, libdbus-1-dev, libcairo2-dev, tolua++ Homepage: http://conky.sourceforge.net/ Standards-Version: 3.8.4 -Package: conky-n900 +Package: conky-n950 Architecture: armel Depends: ${shlibs:Depends}, ${misc:Depends} Recommends: Suggests: moc, mpd Conflicts: conky-std, conky-cli -Replaces: conky, conky-std, conky-cli, conky-all -Description: Highly configurable system monitor (most features enabled) - Conky is a system monitor that can display just about anything, - either on your root desktop or in its own window. +Replaces: conky, conky-std, conky-cli, conky-all, conky-n900 +Description: Highly configurable system monitor + Conky is a system monitor that can display just about anything. Conky has many built-in objects, as well as the ability to execute external programs or scripts (either external or through built-in - lua support). + lua support). It is designed for the desktop and ported to the maemo + platform. . - This is a full(ish) conky with most compile options enabled: + This is a full Conky with most compile options enabled, but since + you are running on a phone and this software is not really for phones + there are a few problems. Nokia cut some corners in the kernel that makes + the diskio stats less detailed and X11 is not able to double buffer. + Probably this will get fixed very soon but I cannot guarantee it. . - X11, XDamage, XDBE, Xft, MPD, MOC, OpenMP, math, hddtemp, portmon, RSS, - Weather, wireless, IBM, eve-online, ALSA mixer, - apcupsd, I/O stats, argb. - . - Maemo5: This port for maemo5 is intended to be run as a standalone - app and not as a desktop widget. The default config has been reworked - for suitability for the N900 platform. The launcher checks for the file + Maemo6: This port for maemo6 is intended to be run as a standalone + app. The default config has been reworked for suitability for the N9 + and N950 phones. The launcher checks for the file /home/user/MyDocs/conky.conf and will run with that if it is present. + If you want to play with the config I would suggest that you + copy all the files from /etc/conky to MyDocs and edit them there. + You could also look for some to download and place them there. + DO NOT change the ones in the /etc/conky folder as the changes would + be lost when this app is updated next time. Xsbc-Bugtracker: https://bugs.maemo.org/enter_bug.cgi?product=conky XB-Maemo-Display-Name: Conky XB-Maemo-Icon-26: diff --git a/debian/optify b/debian/optify deleted file mode 100644 index 865faf1..0000000 --- a/debian/optify +++ /dev/null @@ -1 +0,0 @@ -auto diff --git a/debian/rules b/debian/rules index 0dd80df..b12ba3a 100644 --- a/debian/rules +++ b/debian/rules @@ -57,7 +57,7 @@ config-stamp: cd build-all && CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ../configure $(COMMON_CONFIGURE_FLAGS) \ - --enable-rss --enable-weather-xoap \ + --enable-rss --enable-weather-xoap LUA51_LIBS='-llua5.1 -lm' \ --enable-eve --enable-lua=yes --enable-lua-cairo --enable-lua-imlib2 \ --disable-static --enable-argb --enable-x11 --enable-imlib2 \ $(LINUX_CONF_ARGS_ALL) $(ENABLE_NVIDIA) @@ -81,7 +81,7 @@ clean: rm -f configure.ac configure config.h.in src/config.h.in \ src/defconfig.h compile install-sh missing ltmain.sh depcomp \ - Makefile.in doc/Makefile.in src/Makefile.in \ + Makefile.in doc/Makefile.in src/Makefile.in src/dbus/Makefile.in \ data/Makefile.in lua/Makefile.in \ aclocal.m4 m4/libtool.m4 m4/ltversion.m4 \ m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 @@ -96,20 +96,20 @@ install: build dh_testroot dh_clean -k - cd build-all && $(MAKE) install DESTDIR=$(CURDIR)/debian/conky-n900 - mkdir -p debian/conky-n900/usr/share/icons/hicolor/scalable/apps/ - cp -p debian/conkylogo64.png debian/conky-n900/usr/share/icons/hicolor/scalable/apps/conky.png - mkdir -p debian/conky-n900/usr/share/icons/hicolor/48x48/apps/ - cp -p debian/conkylogo48.png debian/conky-n900/usr/share/icons/hicolor/48x48/apps/conky.png - mkdir -p debian/conky-n900/usr/share/applications/hildon/ - cp -p debian/conky.desktop debian/conky-n900/usr/share/applications/hildon/conky.desktop - mkdir -p debian/conky-n900/usr/bin/ - cp -p debian/conky.sh debian/conky-n900/usr/bin/ + cd build-all && $(MAKE) install DESTDIR=$(CURDIR)/debian/conky-n950 + mkdir -p debian/conky-n950/usr/share/icons/hicolor/scalable/apps/ + cp -p debian/conkylogo64.png debian/conky-n950/usr/share/icons/hicolor/scalable/apps/conky.png + mkdir -p debian/conky-n950/usr/share/icons/hicolor/48x48/apps/ + cp -p debian/conkylogo48.png debian/conky-n950/usr/share/icons/hicolor/48x48/apps/conky.png + mkdir -p debian/conky-n950/usr/share/applications/ + cp -p debian/conky.desktop debian/conky-n950/usr/share/applications/conky.desktop + mkdir -p debian/conky-n950/usr/bin/ + cp -p debian/conky.sh debian/conky-n950/usr/bin/ # Clean up cruft left upstream rm -rf debian/conky-std/usr/lib debian/conky-cli/usr/lib \ - debian/conky-n900/usr/lib/conky/*.la \ - debian/conky-n900/usr/lib/conky/*.so.? + debian/conky-n950/usr/lib/conky/*.la \ + debian/conky-n950/usr/lib/conky/*.so.? binary-indep: build install @@ -128,7 +128,6 @@ binary-arch: build install dh_installdeb dh_shlibdeps dh_gencontrol - maemo-optify dh_md5sums dh_builddeb diff --git a/lua_scripts/LoadAll.lua b/lua_scripts/LoadAll.lua index 0efed32..c1ea177 100644 --- a/lua_scripts/LoadAll.lua +++ b/lua_scripts/LoadAll.lua @@ -6,10 +6,12 @@ do require 'misc' require 'luatraverse' require 'strict' + require 'box' --local count function conky_main() --conky will run this if you specified to load 'main' in the conf + conky_main_box() conky_main_bars() conky_main_graph() conky_draw_text() diff --git a/lua_scripts/bargraph_eng.lua b/lua_scripts/bargraph_eng.lua index 6b942eb..675941e 100644 --- a/lua_scripts/bargraph_eng.lua +++ b/lua_scripts/bargraph_eng.lua @@ -116,7 +116,7 @@ function conky_main_bars() mid_colour={{0.5,0xffff00,1}}, DrawMe=conky_parse("${if_mounted /home/user/MyDocs}1$endif") }, - { + --[[{ name="fs_used", arg="/media/mmc1", max=conky_parse("${to_bytes ${fs_size /media/mmc1}}"), @@ -131,7 +131,7 @@ function conky_main_bars() smooth=true, mid_colour={{0.5,0xffff00,1}}, DrawMe=conky_parse("${if_mounted /media/mmc1}1$endif") - }, + },]] { name="mem", arg="", diff --git a/lua_scripts/conky.conf b/lua_scripts/conky.conf new file mode 100644 index 0000000..d5576f1 --- /dev/null +++ b/lua_scripts/conky.conf @@ -0,0 +1,92 @@ +#lua_load /home/user/MyDocs/testCairo.lua +#lua_load ~/scripts/bargraph2/bargraph_eng.lua +#lua_draw_hook_pre main_bars +#lua_draw_hook_pre ring_stats +#lua_load /home/user/MyDocs/bargraph_eng.lua +#lua_load /home/user/MyDocs/piechart.lua +#lua_load /home/user/MyDocs/Text.lua +#lua_load /home/user/MyDocs/graph.lua +#lua_draw_hook_post main_pie +#lua_draw_hook_pre main_bars +#lua_draw_hook_pre main_graph +#lua_draw_hook_post draw_text +lua_load /home/user/MyDocs/LoadAll.lua +lua_draw_hook_pre main + + +# cpu red > white +# memory blue > white +# disk green > white +# +# +# +# cool blue > cyan: 0000ff 00FFFF +# + +alignment top_left +background no +maximum_width 854 +border_width 1 +cpu_avg_samples 2 +default_outline_color white +default_shade_color white +diskio_avg_samples 10 +draw_borders no +draw_graph_borders yes +draw_outline no +draw_shades no +double_buffer yes +gap_x 20 +gap_y 60 +minimum_size 5 5 +net_avg_samples 2 +no_buffers yes +out_to_console no +own_window yes +own_window_class Conky +own_window_type normal +own_window_transparent no +own_window_hints fullscreen +#own_window_colour ff0000 +override_utf8_locale yes +show_graph_scale no +show_graph_range no +short_units yes +stippled_borders 0 +temperature_unit celsius +update_interval 1.5 +update_interval_on_battery 4 +uppercase no +use_spacer none +use_xft yes +xftfont Nokia Pure:size=11 +xftalpha 0.8 + +default_color FFFFFF + +TEXT +${image /home/user/MyDocs/lua/n950-kobol.jpg} + + +${goto 265}${color 4072a5}Load1 avg: ${goto 517}${color 4072a5}Processes:$color $processes +${color 4072a5}${goto 265}Load 1/5/15: $color$loadavg${goto 517}${color 4072a5}Running:${goto 620}$color$running_processes +${voffset -10} +${color 4072a5}${goto 315} Top I/O READ WRITE % +${color red} ${goto 315} ${lua_parse top_io_colour 1} +${color }${goto 315} ${lua_parse top_io_colour 2} +${color }${goto 315} ${lua_parse top_io_colour 3} + + +${voffset 10} +${color 33cc99}CONNECTIONS [$color${tcp_portmon 1 65535 count}${color 33cc99}] (lport:rservice:rport):$color ${goto 405}${tcp_portmon 1 65535 lservice 0}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 0}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 0}} +$color${tcp_portmon 1 65535 lservice 1}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 1}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 1}}${goto 405}${tcp_portmon 1 65535 lservice 2}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 2}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 2}} +$color${tcp_portmon 1 65535 lservice 3}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 3}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 3}}${goto 405}${tcp_portmon 1 65535 lservice 4}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 4}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 4}} +$color${tcp_portmon 1 65535 lservice 5}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 5}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 5}}${goto 405}${tcp_portmon 1 65535 lservice 6}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 6}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 6}} +$color${tcp_portmon 1 65535 lservice 7}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 7}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 7}}${goto 405}${tcp_portmon 1 65535 lservice 8}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 8}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 8}} +$color${tcp_portmon 1 65535 lservice 9}${goto 50}:${scroll 32 5${tcp_portmon 1 65535 rhost 9}}${goto 345}:${scroll 5 2${tcp_portmon 1 65535 rservice 9}}${goto 405}${tcp_portmon 1 65535 lservice 10}${goto 450}:${scroll 32 5${tcp_portmon 1 65535 rhost 10}}${goto 744}:${scroll 5 1 ${tcp_portmon 1 65535 rservice 10}} +${voffset 10}${color 4072a5}Top CPU% CPU% MEM% ${goto 257}${color 4072a5} | ${color 4072a5}Top Total Memory RAM VM ${goto 555}${color 4072a5}| ${color 4072a5}Top CPU TIME MM:SS.cs +${lua_parse top_cpu_colour 1} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 1} ${goto 555}${color 4072a5}| ${color }${top_time name 1}${top_time time 1} ${top_time cpu 1} +$color${top name 2}${top cpu 2}${top mem 2} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 2} ${goto 555}${color 4072a5}| ${color }${top_time name 2}${top_time time 2} ${top_time cpu 2} +$color${top name 3}${top cpu 3}${top mem 3} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 3} ${goto 555}${color 4072a5}| ${color }${top_time name 3}${top_time time 3} ${top_time cpu 3} +$color${top name 4}${top cpu 4}${top mem 4} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 4} ${goto 555}${color 4072a5}| ${color }${top_time name 4}${top_time time 4} ${top_time cpu 4} +$color${top name 5}${top cpu 5}${top mem 5} ${goto 257}${color 4072a5} | ${lua_parse top_mem_colour 5} ${goto 555}${color 4072a5}| ${color }${top_time name 5}${top_time time 5} ${top_time cpu 5} \ No newline at end of file diff --git a/lua_scripts/graph.lua b/lua_scripts/graph.lua index 4ad46dd..dbff1d4 100644 --- a/lua_scripts/graph.lua +++ b/lua_scripts/graph.lua @@ -92,133 +92,133 @@ require 'cairo' function set_settings() graph_settings={ { - name="cpu", - arg="", - max=100, - y=85, - x=5, - autoscale=false, - width=215, - height=30, - nb_values=120, - fg_bd_size=2, - bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, - --fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, - fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFF3300,1},{1,0xFFFFFF,1}}, - --fg_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, - fg_colour = { {0,0x00CCFF,0.7},{0.5,0x0000FF,0.7},{1,0x000000,0.1}}, - foreground=true, - fg_orientation="ne", - bg_bd_orientation="nn", - bg_orientation="ne", - }, + name="cpu", + arg="", + max=100, + y=87, + x=5, + autoscale=false, + width=215, + height=29, + nb_values=120, + fg_bd_size=2, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + --fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFF3300,1},{1,0xFFFFFF,1}}, + --fg_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, + fg_colour = { {0,0x00CCFF,0.7},{0.5,0x0000FF,0.7},{1,0x000000,0.1}}, + foreground=true, + fg_orientation="ne", + bg_bd_orientation="nn", + bg_orientation="ne", + }, { - name="upspeedf", - arg="wlan0", - max=9999, - y=233, - x=5, - autoscale=true, - width=275, - height=35, - nb_values=120, - fg_bd_size=1, - bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, - fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, - fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, - foreground=true, - inverse=true, - DrawMe="${if_empty ${wireless_essid wlan0}}${else}1$endif", - bg_orientation="ww", + name="upspeedf", + arg="wlan0", + max=9999, + y=233, + x=5, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + inverse=true, + DrawMe="${if_up wlan0}1${else}0$endif", + bg_orientation="ww", }, { - name="downspeedf", - arg="wlan0", - max=9999, - y=233, - x=525, - autoscale=true, - width=275, - height=35, - nb_values=120, - fg_bd_size=1, - bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, - fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, - fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, - foreground=true, - DrawMe="${if_empty ${wireless_essid wlan0}}${else}1$endif", - bg_orientation="ee", + name="downspeedf", + arg="wlan0", + max=9999, + y=233, + x=525, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + DrawMe="${if_up wlan0}1${else}0$endif", + bg_orientation="ee", }, { - name="upspeedf", - arg="gprs0", - max=9999, - y=230, - x=5, - autoscale=true, - width=275, - height=35, - nb_values=120, - fg_bd_size=1, - bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, - fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, - fg_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, - foreground=true, - inverse=true, - DrawMe="${if_up gprs0}1${else}0$endif", - bg_orientation="ww", + name="upspeedf", + arg="gprs0", + max=9999, + y=233, + x=5, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + inverse=true, + DrawMe="${if_up gprs0}1${else}0$endif", + bg_orientation="ww", }, { - name="downspeedf", - arg="gprs0", - max=9999, - y=230, - x=525, - autoscale=true, - width=275, - height=35, - nb_values=120, - fg_bd_size=1, - bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, - fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, - fg_colour = { {0,0xFF0000,1},{0.5,0xFFA209,1},{1,0xFFFF00,1}}, - foreground=true, - DrawMe="${if_up gprs0}1${else}0$endif", - bg_orientation="ee", + name="downspeedf", + arg="gprs0", + max=9999, + y=233, + x=525, + autoscale=true, + width=275, + height=35, + nb_values=120, + fg_bd_size=1, + bg_colour = {{0,0x007AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xFF0000,1},{0.5,0xFFA209,0.8},{1,0xFFFF00,0.6}}, + fg_colour = { {0,0xFF0000,0.65},{0.5,0xFFA209,0.5},{1,0xFFFF00,0.3}}, + foreground=true, + DrawMe="${if_up gprs0}1${else}0$endif", + bg_orientation="ee", }, { - name="loadavg", - arg="1", - max=20, - y=95, - x=372, - autoscale=true, - width=140, - height=36, - nb_values=100, - fg_bd_size=0, - bg_colour = {{0,0x667AF6,0},{1,0x000000,0}}, - fg_bd_colour = { {0,0xdd0000,0.7},{0.5,0xdddd00,0.7},{1,0xFFFF00,0.7}}, - fg_colour = { {0,0x000000,0.7},{0.5,0xdd0000,0.7},{1,0xff0000,0.7}}, - foreground=true, + name="loadavg", + arg="1", + max=20, + y=95, + x=372, + autoscale=true, + width=140, + height=36, + nb_values=100, + fg_bd_size=0, + bg_colour = {{0,0x667AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xdd0000,0.7},{0.5,0xdddd00,0.7},{1,0xFFFF00,0.7}}, + fg_colour = { {0,0x000000,0.7},{0.5,0xdd0000,0.7},{1,0xff0000,0.7}}, + foreground=true, }, { - name="to_bytes ${diskio", - arg="mmcblk0}", - max=2500000, - y=187, - x=640, - autoscale=true, - width=160, - height=89, - nb_values=130, - fg_bd_size=0, - bg_colour = {{0,0x667AF6,0},{1,0x000000,0}}, - fg_bd_colour = { {0,0xdd0000,1},{0.5,0xdddd00,1},{1,0xFFFF00,1}}, - fg_colour = { {1,0x111111,0.3},{0.5,0x33cc00,0.6},{0,0x00FF00,0.8}}, - foreground=true, - bg_orientation="ne", - fg_orientation="ee", + name="to_bytes ${diskio", + arg="mmcblk0}", + max=2500000, + y=187, + x=640, + autoscale=true, + width=160, + height=89, + nb_values=130, + fg_bd_size=0, + bg_colour = {{0,0x667AF6,0},{1,0x000000,0}}, + fg_bd_colour = { {0,0xdd0000,1},{0.5,0xdddd00,1},{1,0xFFFF00,1}}, + fg_colour = { {1,0x111111,0.3},{0.5,0x33cc00,0.6},{0,0x00FF00,0.8}}, + foreground=true, + bg_orientation="ne", + fg_orientation="ee", }, } end diff --git a/lua_scripts/n900-kobol.jpg b/lua_scripts/n900-kobol.jpg deleted file mode 100644 index d9806691d7247a5d7c40ee0ebde50dbed7ab1211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98431 zcmeEucUV);x^6;Gq!*@lYeD!k{z=<=$8UcVn zAOJ)A0DjJ?v3mpr_@L$GFZ#v?k`Hn6kyn&ckOye#hWI!+pLY#_oO5+2 zU(^=gdh|>jLUz#>w^cP$F!MR#>OsbY`MFw!;fc;+=bce5;<`Futq^pGmyefgfD%v8UbcnY2U(V6A@~>)namZhgfb-ho`oBhn*qK>CPI&vdLR94xWSte%6d-Dfa*E0- z>gwt;5G4gg1$hM}c||2zMRl~Y5?Vn4@{c601E!U<{9N471Vf{L3`hH>E&h+~3JwmI z3s#o%_H&n4M4?c>+$br@(h#!#p%(+3LS!%cL;rU2AASs7{hj^DJ^^I!i;!P_oz8g& z255_m{~G9@>F@0dAiMo*q<>@ZSIb`%{?j+DtJbetw7DPIl{WG(|2i64^8c;wU*r6Z z$J3xeu7+fHSN{MVB~>*UB~^7=)}UpSjFOs?jFP$vEz{~WRAf|@6=+$JR;JZ!D9b3J z)MS(u6lIhZHE0aaRP(jJi;2*R8x0(H8+FJ6zIQvf={2BujLUs%NzjXgkp#Rsq!8L^Ze~|dEmj5pC zU$y9e6Na*yhMJ0uiULYa;V(-Qqq?Hf-&X0bn!l|wtzK2}Z;Xn}uU_hZS(E3i=xewX8*#VRB2^(rC;^xw2-1%THvWDqG&#U z*eozY;#HHO1*Z%xpk>r# z)MYeeP%<=X6cuF@m1Go^WfWCpXu(PYDXPoRB3p@urNuif+-WO;Ds54q#WXGaX;H0d zsG?}7al#O#VWgm7proL35~ZP_fI?}UJYl4vqNILOOa8y_vH#Z^a&i7=B>M#VUHEG; zc5#+>z2NFaTM7MXB2tw9w`g{8M!R|Yc{v5>kiDGTUFAJ}T-~+g|5f`xPVny)h;}rf z9f;)rc_jLeW$2$P`2Ux}zk>Jwi~GNw{u$)A$o)gtAG&^vf!_lEQP&^3ev5(M0{>Ch zAG&^vf!_lEQP&^3ev5(M0{>ChAG&^vf!_lEQP&^3ev5(M0{>ChAG&^vf!_lEQP&^3 zev5(M0{>ChAG&^vf!_lEQP&^3ev5(M0{>ChAG&^vf!_lEQP&^3ev5(M0{>ChAG&^v zf!_lEQP&^3ev5(M0{>ChAG&^vf!_lEQP&^3ev5(M0{>ChAG&^vf!_lEQP&^3ev5(M z0{>ChAG&^vf!_lEkLm*d>)kHbi?kQIf@yDV{hS7z0MPw2(bGx{j10dF6XUPM#LV

J;-n=mu73yqPv3sF0=QU! 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%0DcSAIopG5(uvefy3ZH$}4C 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

56wE%WsE$j9SWqwyTTESC)xy}Fz=}a6!TT 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 EKPu-LRsaA1 literal 0 HcmV?d00001 diff --git a/lua_scripts/piechart.lua b/lua_scripts/piechart.lua index e9c0464..5320cce 100644 --- a/lua_scripts/piechart.lua +++ b/lua_scripts/piechart.lua @@ -31,7 +31,7 @@ line_space -- vertical space between two lines, default=10 pixels extend_line -- grow up the line (true/false) if length of text> line_length, default=true nb_decimals -- number of decimals for numbers, default=1 show_text -- display text (true/false), default=true -font_name -- font, default "Droid Sans Mono" +font_name -- font, default "Nokia Pure" font_size -- font size, default=12 font_color -- font color (for gradient) or nil (for constant color), default = nil font_alpha -- font alpha, default=1 @@ -68,7 +68,7 @@ function conky_main_pie() -- ------------------PARAMETERS TO SET----------------------- --theses parameters are called many times so I put them into variables - local font_name,font_size="Droid Sans Mono",14 + local font_name,font_size="Nokia Pure",14 local col0,col1,col2=0xFFFFCC,0xCCFF99,0x99FF00 local colbg=0x99CCFF @@ -365,7 +365,7 @@ function draw_pie(t) if t.line_space==nil then t.line_space=10 end if t.line_width==nil then t.line_width=1 end if t.extend_line==nil then t.extend_line=true end - if t.txt_font==nil then t.txt_font="Droid Sans Mono" end + if t.txt_font==nil then t.txt_font="Nokia Pure" end if t.font_size==nil then t.font_size=12 end --if t.font_color==nil then t.font_color=0xFFFFFF end if t.font_alpha==nil then t.font_alpha = 1 end diff --git a/lua_scripts/text.lua b/lua_scripts/text.lua index 0f5fbfc..ad81b99 100644 --- a/lua_scripts/text.lua +++ b/lua_scripts/text.lua @@ -72,7 +72,7 @@ function conky_draw_text() text=conky_parse("${time %I:%M%p %D}"), font_size=24, bold=true, - font_name="Droid Sans Mono", + font_name="Nokia Pure", h_align="l", v_align="t", x=5, @@ -90,7 +90,7 @@ function conky_draw_text() text=conky_parse("$sysname $kernel on $machine - $uptime"), font_size=16, bold=true, - font_name="Droid Sans Mono", + font_name="Nokia Pure", h_align="r", x=800, y=15, @@ -101,7 +101,7 @@ function conky_draw_text() }, { text=conky_parse("$freq MHz"), - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=16, h_align="l", v_align="t", @@ -119,7 +119,7 @@ function conky_draw_text() y=69, v_align="m", h_align="r", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=14, colour={{0,col0,1},{0.5,colbg,1}}, orientation="nn", @@ -132,7 +132,7 @@ function conky_draw_text() y=45, v_align="m", h_align="r", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=14, colour={{0,col0,1},{0.5,colbg,1}}, orientation="nn", @@ -143,7 +143,7 @@ function conky_draw_text() text=conky_parse("${cell_radio_dbm}".."dBm"), x=510, y=50, - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=14, colour={{0,col0,1},{0.5,colbg,1}}, orientation="nn", @@ -156,7 +156,7 @@ function conky_draw_text() y=65, v_align="t", h_align="l", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,col0,1},{0.5,colbg,1}}, orientation="ww", @@ -168,7 +168,7 @@ function conky_draw_text() x=223, y=91, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,col0,1},{0.5,colbg,1}}, orientation="nn", @@ -180,7 +180,7 @@ function conky_draw_text() x=5, y=115, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=16, colour={{conky_parse('${fs_used_perc /}')/100,0x000000,1},{1,0xFFFFFF,1}}, orientation="ww", @@ -192,7 +192,7 @@ function conky_draw_text() x=220, y=114, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,0x336633,1},{1,col0,1}}, bold=true, @@ -205,7 +205,7 @@ function conky_draw_text() x=5, y=135, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=16, colour={{conky_parse('${fs_used_perc /home}')/100,0x000000,1},{1,0xFFFFFF,1}}, orientation="ww", @@ -217,7 +217,7 @@ function conky_draw_text() x=220, y=134, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,0x336633,1},{1,col0,1}}, bold=true, @@ -230,7 +230,7 @@ function conky_draw_text() x=5, y=155, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=16, colour={{conky_parse('${fs_used_perc /home/user/MyDocs}')/100-.1,0x000000,1},{1,0xFFFFFF,1}}, orientation="ww", @@ -243,7 +243,7 @@ function conky_draw_text() x=220, y=154, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,0x336633,1},{1,col0,1}}, bold=true, @@ -252,12 +252,12 @@ function conky_draw_text() reflection_length=0, DrawMe=conky_parse("${if_mounted /home/user/MyDocs}1$endif") }, - { + --[[ { text=conky_parse('${fs_used /media/mmc1} / ${fs_size /media/mmc1} (${fs_free /media/mmc1})'), x=5, y=175, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=16, colour={{conky_parse('${fs_used_perc /media/mmc1}')/100-.1,0x000000,1},{1,0xFFFFFF,1}}, orientation="ww", @@ -270,7 +270,7 @@ function conky_draw_text() x=220, y=174, v_align="t", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,0x336633,1},{1,col0,1}}, bold=true, @@ -279,27 +279,28 @@ function conky_draw_text() reflection_length=0, DrawMe=conky_parse("${if_mounted /media/mmc1}1$endif"), }, + ]] { text=conky_parse('${wireless_essid wlan0}'), - x=400, + x=375, y=201, h_align="c", v_align="m", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,col0,1},{0.5,colbg,1}}, orientation="nn", reflection_alpha=0, reflection_length=0, - DrawMe=conky_parse("${if_empty ${wireless_essid wlan0}}${else}1$endif"), + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), }, { text="GPRS", - x=400, + x=430, y=201, - h_align="c", + h_align="l", v_align="m", - font_name="Droid Sans Mono", + font_name="Nokia Pure", font_size=18, colour={{0,col0,1},{0.5,colbg,1}}, orientation="nn", @@ -311,18 +312,18 @@ function conky_draw_text() text=conky_parse('${wireless_link_qual_perc wlan0}')..'%', x=400, y=228, - h_align="c", - v_align="l", - font_name="Droid Sans Mono", + h_align="l", + v_align="m", + font_name="Nokia Pure", font_size=14, colour={{0,col0,1},{0.5,colbg,1}}, orientation="nn", reflection_alpha=0, reflection_length=0, - DrawMe=conky_parse("${if_empty ${wireless_essid wlan0}}${else}1$endif"), + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), }, { - text='Up '..conky_parse('${upspeed wlan0}'), + text='Up '..conky_parse('${upspeedf wlan0}') + conky_parse('${upspeedf gprs0}'), x=225, y=223, h_align="l", @@ -334,10 +335,10 @@ function conky_draw_text() orientation="ww", reflection_alpha=0, reflection_length=0, - DrawMe=conky_parse("${if_empty ${wireless_essid wlan0}}${else}1$endif"), + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), }, { - text=conky_parse('${downspeed wlan0}')..' Down', + text=conky_parse('${downspeedf wlan0}') + conky_parse('${downspeedf gprs0}')..' Down', x=650, y=223, h_align="r", @@ -349,9 +350,9 @@ function conky_draw_text() orientation="ww", reflection_alpha=0, reflection_length=0, - DrawMe=conky_parse("${if_empty ${wireless_essid wlan0}}${else}1$endif"), + DrawMe=conky_parse("${if_up wlan0}1${else}0$endif"), }, - { + --[[ { text='Up '..conky_parse('${upspeed gprs0}'), x=225, y=223, @@ -380,7 +381,7 @@ function conky_draw_text() reflection_alpha=0, reflection_length=0, DrawMe=conky_parse("${if_up gprs0}1${else}0$endif"), - }, + },]] } if conky_window == nil then return end if tonumber(conky_parse("$updates"))<3 then return end diff --git a/src/dbus/Makefile.am b/src/dbus/Makefile.am index e966a43..b811f0b 100644 --- a/src/dbus/Makefile.am +++ b/src/dbus/Makefile.am @@ -180,12 +180,12 @@ libdbus_convenience_la_LDFLAGS=@R_DYNAMIC_LDFLAG@ ## note that TESTS has special meaning (stuff to use in make check) ## so if adding tests not to be run in make check, don't add them to ## TESTS -if DBUS_BUILD_TESTS -TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus -TESTS=dbus-test -else +## if DBUS_BUILD_TESTS +## TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus +## TESTS=dbus-test +## else TESTS= -endif +## endif ## we use noinst_PROGRAMS not check_PROGRAMS so that we build ## even when not doing "make check" diff --git a/src/linux.c b/src/linux.c index e394879..7bdaf73 100644 --- a/src/linux.c +++ b/src/linux.c @@ -1583,11 +1583,11 @@ static char batteries[MAX_BATTERY_COUNT][32]; //eg 4100 static int last_battery_volts[MAX_BATTERY_COUNT]; -//eg 78 -static unsigned char last_cell_radio_dbm; +//eg -78 +static dbus_int32_t last_cell_radio_dbm; //eg 100 -static unsigned char last_cell_radio_percent; +static dbus_int32_t last_cell_radio_percent; //eg 'full' 'on' 'off' static char last_batt_charge_status[16]; @@ -1653,22 +1653,25 @@ DBusMessage *reply; void dbus_exit_app_view() { + //not needed in harmattan - swipe down or away and close (although it doesn't seem to be reliable to swipe) + + //dbus-send --type=signal --session /com/nokia/hildon_desktop . - type = DBUS_BUS_SESSION; - //message_type = DBUS_MESSAGE_TYPE_SIGNAL; - dbus_error_init (&error); - connection = dbus_bus_get (type, &error); - message = dbus_message_new_signal ("/com/nokia/hildon_desktop", "com.nokia.hildon_desktop", "exit_app_view"); - // send the message and flush the connection - if (!dbus_connection_send(connection, message, NULL)) { - fprintf(stderr, "Out Of Memory!\n"); - exit(1); - } - dbus_connection_flush(connection); - - // free the message - dbus_message_unref(message); +// type = DBUS_BUS_SESSION; +// //message_type = DBUS_MESSAGE_TYPE_SIGNAL; +// dbus_error_init (&error); +// connection = dbus_bus_get (type, &error); +// message = dbus_message_new_signal ("/com/nokia/hildon_desktop", "com.nokia.hildon_desktop", "exit_app_view"); +// // send the message and flush the connection +// if (!dbus_connection_send(connection, message, NULL)) { +// fprintf(stderr, "Out Of Memory!\n"); +// exit(1); +// } +// dbus_connection_flush(connection); +// +// // free the message +// dbus_message_unref(message); } @@ -1678,6 +1681,7 @@ void get_dbus_stuff(char *buffer,unsigned int intMax_length, int item) char path[128]; char dest[128]; char *args = ""; + char *args2 = ""; if (dbus_queue > 10) { fprintf (stderr, "too much dbus queuing\n"); @@ -1705,19 +1709,39 @@ void get_dbus_stuff(char *buffer,unsigned int intMax_length, int item) exit (1); } switch(item){ - case DBUS_CELL_DBM: - snprintf(method,127,"get_signal_strength"); - snprintf(path,127,"/com/nokia/phone/net"); - snprintf(dest,127,"com.nokia.phone.net"); - message = dbus_message_new_method_call (dest,path,"Phone.Net",method); + case DBUS_CELL_DBM: + snprintf(method,127,"Get"); + args = "com.nokia.csd.CSNet.SignalStrength"; + args2 = "SignalDecibels"; + snprintf(path,127,"/com/nokia/csd/csnet"); + snprintf(dest,127,"com.nokia.csd.CSNet"); //service name + message = dbus_message_new_method_call (dest,path,"org.freedesktop.DBus.Properties",method);//dest,path,interface,method dbus_message_set_auto_start (message, TRUE); + if (!dbus_message_append_args(message, + DBUS_TYPE_STRING, &args, + DBUS_TYPE_STRING, &args2, + DBUS_TYPE_INVALID)) + fprintf (stderr, "OOM appending args\n"); + //dbus_message_iter_init_append(message, &iter); + //if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args)) + // fprintf (stderr, "OOM appending args\n"); break; case DBUS_CELL_PERCENT: - snprintf(method,127,"get_signal_strength"); - snprintf(path,127,"/com/nokia/phone/net"); - snprintf(dest,127,"com.nokia.phone.net"); - message = dbus_message_new_method_call (dest,path,"Phone.Net",method); + snprintf(method,127,"Get"); + args = "com.nokia.csd.CSNet.SignalStrength"; + args2 = "SignalPercent"; + snprintf(path,127,"/com/nokia/csd/csnet"); + snprintf(dest,127,"com.nokia.csd.CSNet"); //service name + message = dbus_message_new_method_call (dest,path,"org.freedesktop.DBus.Properties",method);//dest,path,interface,method dbus_message_set_auto_start (message, TRUE); + if (!dbus_message_append_args(message, + DBUS_TYPE_STRING, &args, + DBUS_TYPE_STRING, &args2, + DBUS_TYPE_INVALID)) + fprintf (stderr, "OOM appending args\n"); + //dbus_message_iter_init_append(message, &iter); + //if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args)) + // fprintf (stderr, "OOM appending args\n"); break; case DBUS_HAL_BATTERY_CHRG_STATUS: // 'full' 'on' 'off' @@ -1780,27 +1804,37 @@ void get_dbus_stuff(char *buffer,unsigned int intMax_length, int item) if (reply) { DBusMessageIter iter; + DBusMessageIter subiter; dbus_message_iter_init (reply, &iter); - //int type = dbus_message_iter_get_arg_type(&iter); int current_fieldnumber = 0; while (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INVALID) { - //fprintf (stderr,"dbus-monitor too dumb to decipher arg type '%c'\n", type); + current_fieldnumber++; switch(item){ case DBUS_CELL_DBM: - if (current_fieldnumber == 2) - { - unsigned char val; - dbus_message_iter_get_basic(&iter, &val); + if (current_fieldnumber == 1) + {//this is a variant + if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT){ + fprintf (stderr,"DBUS_CELL_DBM got type '%c'; expected variant!\n", dbus_message_iter_get_arg_type(&iter)); + break; + } + dbus_message_iter_recurse (&iter, &subiter); + dbus_int32_t val = 0; + if (dbus_message_iter_get_arg_type(&subiter) != DBUS_TYPE_INT32){ + fprintf (stderr,"DBUS_CELL_DBM subiter got type '%c'; expected INT32!\n", dbus_message_iter_get_arg_type(&subiter)); + break; + } + dbus_message_iter_get_basic(&subiter, &val); last_cell_radio_dbm = val; } break; case DBUS_CELL_PERCENT: if (current_fieldnumber == 1) - { - unsigned char val; - dbus_message_iter_get_basic(&iter, &val); + {//this is a variant + dbus_message_iter_recurse (&iter, &subiter); + dbus_int32_t val = 0; + dbus_message_iter_get_basic(&subiter, &val); last_cell_radio_percent = val; } break; -- 1.7.9.5