Find the answer to your Linux question:
Results 1 to 5 of 5
Hi, I've recently decided to refurbish my conky and I think I'm a little in over my head. I downloaded a conky and a lua script and I can't get ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Jun 2012
    Posts
    37

    Conky and lua scripts


    Hi, I've recently decided to refurbish my conky and I think I'm a little in over my head.

    I downloaded a conky and a lua script and I can't get the lua part to show up. To be honest, I don't even know what to look for.

    Here's my conky:
    Code:
    # Conky settings #
    background no
    update_interval 1
    
    cpu_avg_samples 2
    net_avg_samples 2
    
    override_utf8_locale yes
    
    double_buffer yes
    no_buffers yes
    
    text_buffer_size 2048
    #imlib_cache_size 0
    
    temperature_unit fahrenheit
    
    # Window specifications #
    own_window yes
    own_window_type override
    own_window_transparent #000000
    own_window_transparent yes
    own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
    
    border_inner_margin 0
    border_outer_margin 5
    
    minimum_size 250 300
    maximum_width 250
    
    alignment tr
    gap_x 10
    gap_y 0
    
    # Graphics settings #
    draw_shades no
    draw_outline no
    draw_borders no
    draw_graph_borders yes
    
    # Text settings #
    use_xft yes
    xftfont caviar dreams:size=8
    xftalpha 0.5
    
    uppercase no
    
    temperature_unit celsius
    
    default_color FFFFFF
    
    # Lua Load  #
    lua_load ~/.openbox/conky/conky_blue/clock_rings.lua
    lua_draw_hook_pre clock_rings
    
    TEXT
    #----------------------------------------------------------------------------------------------------------------------------------------
    #					         Time and date 
    #----------------------------------------------------------------------------------------------------------------------------------------
    ${voffset 7}${font Radio Space:size=16}${color 0ABFFF}${time %A}${font}$color${font Radio Space:size=38}${goto 167}${voffset -8} ${time %e}${font}
    ${font Radio Space:size=18}${voffset -30}${time %b}${font}${voffset -3} ${font Radio Space:size=20}${time %Y}${font}${color 0ABFFF} ${hr 1}
    #----------------------------------------------------------------------------------------------------------------------------------------
    #					         Battery Circle 
    #----------------------------------------------------------------------------------------------------------------------------------------
    ${color FFFFFF}${goto 209}${voffset 34}${battery_percent}%
    ${color 0ABFFF}${goto 202}${voffset 25}Battery
    #----------------------------------------------------------------------------------------------------------------------------------------
    #					           CPU usage 
    #----------------------------------------------------------------------------------------------------------------------------------------
    ${color #0ABFFF}${hr 1}$color
    ${color #0ABFFF}${voffset 6}Temp: $color ${acpitemp}C
    ${color #0ABFFF}${voffset 6}Processes:$color $processes	
    ${color #0ABFFF}${voffset 6}Running: $color  $running_processes${goto 116}${voffset 8}${cpu cpu0}% ${color 0ABFFF}${goto 116}${voffset 13}CPU1$color${goto 191}${voffset -12}${cpu cpu1}% ${color 0ABFFF}${goto 191}${voffset 12}CPU2$color
    ${color #0ABFFF}${voffset -12}FREQ:$color ${freq}MHz
    ${color #0ABFFF}${voffset 6}Load:$color ${loadavg}
    #----------------------------------------------------------------------------------------------------------------------------------------
    #						Network
    #----------------------------------------------------------------------------------------------------------------------------------------
    ${color 0ABFFF}${voffset 2}${hr 1}
    ${color 0ABFFF}essid: $color$alignr${wireless_essid wlan0}
    ${color 0ABFFF}wlan0: $color$alignr${addr wlan0}
    ${color 0ABFFF}Current: $color${alignr}${execi 10 /sbin/iwconfig wlan0|grep Rate|cut -d"M" -f1|cut -b20-24} Mbits/sec
    ${color 0ABFFF}eth0: $color$alignr${addr eth0}
    
    ${color #0ABFFF}Down: $color${downspeed wlan0} k/s ${alignr}${color #0ABFFF}Up:$color ${upspeed wlan0} k/s
    ${downspeedgraph wlan0 30,120 000000 0ABFFF} ${alignr}${upspeedgraph wlan0 30,120 000000 0ABFFF}$color
    ${color #0ABFFF}Total:$color ${totaldown wlan0} ${alignr}${color #0ABFFF}Total:$color ${totalup wlan0}
    #----------------------------------------------------------------------------------------------------------------------------------------
    #					DISK/RAM/SWAP usage
    #----------------------------------------------------------------------------------------------------------------------------------------
    ${color 0ABFFF}${voffset 2}${hr 1}
    ${color FFFFFF}${goto 7}${voffset 39}${fs_used_perc /}%
    ${color 0ABFFF}${goto 7}DISK
    ${color FFFFFF}${goto 102}${voffset -27}${memperc}%
    ${color 0ABFFF}${goto 102}RAM
    #----------------------------------------------------------------------------------------------------------------------------------------
    #					   Running processes
    #----------------------------------------------------------------------------------------------------------------------------------------
    ${color 0ABFFF}${voffset 2} ${hr 1}
    ${color #0ABFFF}${voffset 5}NAME${goto 122}PID${goto 163}CPU%${goto 210}MEM%$color${voffset 5}
    ${top name 1}${goto 115}${top pid 1}${goto 160}${top cpu 1}${goto 205}${top mem 1}
    ${top name 2}${goto 115}${top pid 2}${goto 160}${top cpu 2}${goto 205}${top mem 2}
    ${top name 3}${goto 115}${top pid 3}${goto 160}${top cpu 3}${goto 205}${top mem 3}
    ${top name 4}${goto 115}${top pid 5}${goto 160}${top cpu 5}${goto 205}${top mem 5}
    #----------------------------------------------------------------------------------------------------------------------------------------
    #					     Computer info
    #----------------------------------------------------------------------------------------------------------------------------------------
    ${color 0ABFFF}${voffset 2}${hr 1}${voffset 5}
    ${color 0ABFFF}Hostname:$color${alignr}${nodename}
    ${color 0ABFFF}OS:$color${alignr}${pre_exec cat /etc/issue.net} $machine
    ${color 0ABFFF}Kernel:$color${alignr}${kernel}$color
    ${color 0ABFFF}${font Radio Space:size=20}ARCH${color FFFFFF}LINUX
    ${color 0ABFFF}${voffset -10}${hr 1}
    #----------------------------------------------------------------------------------------------------------------------------------------
    Here's the lua script:
    Code:
    -[[
    # Clock Rings by Linux Mint (2012) reEdited by Altin.
    # 
    # This script draws percentage meters as rings, and also draws clock hands if you want! It is fully customisable; all options are described in the script. 
    # This script is based off a combination of my clock.lua script and my rings.lua 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 324 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 in your conkyrc:
    #
    #	lua_load ~/.fluxbox/conky/conky_blue/clock_rings.lua
    #	lua_draw_hook_pre clock_rings
    #
    # Changelog:
    #   * v1.0 -->  Original release (30.09.2009)
    #   * v1.1p -->   Jpope edit londonali1010 (05.10.2009)
    #   * vX 2011mint --> reEdit despot77 (18.02.2011)
    #   * vX 2012 --> Altin reEdit (22.07.2012)
    # 	* Added weather function (Accu Weather)
    # 	* Added battery monitoring
    # 	* Syslog monitoring
    # 	* Running processes monitoring
    # 	* Rearanged rings
    # 	* Exctra network functions/monitoring
    # 	* Changed Fonts
    ]]
    
    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.15,
            -- "fg_colour" is the colour of the indicator part of the ring.
            fg_colour=0x0ABFFF,
            -- "fg_alpha" is the alpha value of the indicator part of the ring.
            fg_alpha=0.3,
            -- "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=100, y=175,
            -- "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 than start_angle.
            end_angle=360
        },
    
        {
            name='battery_percent',
            arg='',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.2,
            fg_colour=0x0ABFFF,
            fg_alpha=0.8,
            x=222, y=110,
            radius=27,
            thickness=5,
            start_angle=-90,
            end_angle=270
        },
    
        {
            name='time',
            arg='%M.%S',
            max=60,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x0ABFFF,
            fg_alpha=0.4,
            x=100, y=175,
            radius=66,
            thickness=5,
            start_angle=0,
            end_angle=360
        },
        {
            name='time',
            arg='%S',
            max=60,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x0ABFFF,
            fg_alpha=0.6,
            x=100, y=175,
            radius=72,
            thickness=5,
            start_angle=0,
            end_angle=360
        },
        {
            name='time',
            arg='%d',
            max=31,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x0ABFFF,
            fg_alpha=0.8,
            x=100, y=175,
            radius=80,
            thickness=5,
            start_angle=-90,
            end_angle=90
        },
        {
            name='time',
            arg='%m',
            max=12,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x0ABFFF,
            fg_alpha=1,
            x=100, y=175,
            radius=86,
            thickness=5,
            start_angle=-90,
            end_angle=90
        },
        {
            name='cpu',
            arg='cpu0',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.3,
            fg_colour=0x0ABFFF,
            fg_alpha=0.8,
            x=145, y=337,
            radius=25,
            thickness=5,
            start_angle=-90,
            end_angle=180
        },
        {
            name='cpu',
            arg='cpu1',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.3,
            fg_colour=0x0ABFFF,
            fg_alpha=0.8,
            x=220, y=337,
            radius=25,
            thickness=5,
            start_angle=-90,
            end_angle=180
        },
        {
            name='fs_used_perc',
            arg='/',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.2,
            fg_colour=0x0ABFFF,
            fg_alpha=0.8,
            x=35, y=590,
            radius=25,
            thickness=5,
            start_angle=-90,
            end_angle=180
        },
        {
            name='memperc',
            arg='',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.2,
            fg_colour=0x0ABFFF,
            fg_alpha=0.8,
            x=130, y=590,
            radius=25,
            thickness=5,
            start_angle=-90,
            end_angle=180
        },
        {
            name='swapperc',
            arg='',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.2,
            fg_colour=0x0ABFFF,
            fg_alpha=0.8,
            x=220, y=590,
            radius=25,
            thickness=5,
            start_angle=-90,
            end_angle=172
        },
    }
    
    -- Use these settings to define the origin and extent of your clock.
    
    clock_r=65
    
    -- "clock_x" and "clock_y" are the coordinates of the centre of the clock, in pixels, from the top left of the Conky window.
    
    clock_x=100
    clock_y=175
    
    show_seconds=true -- Change to true if you want the seconds hand
    
    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 window_background(colour,alpha)
        return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
    end
    
    function draw_ring(cr,t,pt)
        local w,h=conky_window.width,conky_window.height
        
        local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
        local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']
    
        local angle_0=sa*(2*math.pi/360)-math.pi/2
        local angle_f=ea*(2*math.pi/360)-math.pi/2
        local t_arc=t*(angle_f-angle_0)
    
        -- Draw background ring
    
        cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
        cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
        cairo_set_line_width(cr,ring_w)
        cairo_stroke(cr)
        
        -- Draw indicator ring
    
        cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
        cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
        cairo_stroke(cr)        
    end
    
    function draw_clock_hands(cr,xc,yc)
        local secs,mins,hours,secs_arc,mins_arc,hours_arc
        local xh,yh,xm,ym,xs,ys
        
        secs=os.date("%S")    
        mins=os.date("%M")
        hours=os.date("%I")
            
        secs_arc=(2*math.pi/60)*secs
        mins_arc=(2*math.pi/60)*mins+secs_arc/60
        hours_arc=(2*math.pi/12)*hours+mins_arc/12
            
        -- Draw hour hand
        
        xh=xc+0.76*clock_r*math.sin(hours_arc)
        yh=yc-0.72*clock_r*math.cos(hours_arc)
        cairo_move_to(cr,xc,yc)
        cairo_line_to(cr,xh,yh)
        
        cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
        cairo_set_line_width(cr,5)
        cairo_set_source_rgba(cr,1.0,1.0,1.0,1.0)
        cairo_stroke(cr)
        
        -- Draw minute hand
        
        xm=xc+0.98*clock_r*math.sin(mins_arc)
        ym=yc-1.02*clock_r*math.cos(mins_arc)
        cairo_move_to(cr,xc,yc)
        cairo_line_to(cr,xm,ym)
        
        cairo_set_line_width(cr,3)
        cairo_stroke(cr)
        
        -- Draw seconds hand
        
        if show_seconds then
            xs=xc+1.1*clock_r*math.sin(secs_arc)
            ys=yc-clock_r*math.cos(secs_arc)
            cairo_move_to(cr,xc,yc)
            cairo_line_to(cr,xs,ys)
        
            cairo_set_line_width(cr,1)
            cairo_stroke(cr)
        end
    end
    
    function conky_clock_rings()
        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)
            pct=value/pt['max']
            
            draw_ring(cr,pct,pt)
        end
        
        -- Check that Conky has been running for at least 5s
    
        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
        
        draw_clock_hands(cr,clock_x,clock_y)
    end
    Yes, I've made sure that I'm calling the script from the right directory. Any help would be appreciated. Thanks.

    Oh, and yes I've restarted conky since making these tweaks. Many times.

  2. #2
    oz
    oz is offline
    forum.guy
    Join Date
    May 2004
    Location
    arch linux
    Posts
    18,733
    Quote Originally Posted by jdos1 View Post
    I downloaded a conky and a lua script and I can't get the lua part to show up. To be honest, I don't even know what to look for.
    You might need to install lua itself if you haven't done so already.
    oz

  3. #3
    Penguin of trust elija's Avatar
    Join Date
    Jul 2004
    Location
    Either at home or at work or down the pub
    Posts
    3,569
    If there is a daft question to be found then I'll usually ask it so in order to keep the streak going

    is your lua script at ~/.openbox/conky/conky_blue/clock_rings.lua and marked as executable (chmod +x ~/.openbox/conky/conky_blue/clock_rings.lua)
    What do we want?
    Time machines!

    When do we want 'em?
    Doesn't really matter does it!?


    The Fifth Continent

  4. #4
    oz
    oz is offline
    forum.guy
    Join Date
    May 2004
    Location
    arch linux
    Posts
    18,733
    Not sure which distro you are running, but you'll need to make sure your conky package was compiled with lua support. You can check the conky wiki for more info and maybe some tips that will help you:

    Conky and Lua - Conky
    oz

  5. #5
    Just Joined! Sector11's Avatar
    Join Date
    Aug 2012
    Location
    With my wife.
    Posts
    23
    Quote Originally Posted by oz View Post
    Not sure which distro you are running, but you'll need to make sure your conky package was compiled with lua support. You can check the conky wiki for more info and maybe some tips that will help you:

    Conky and Lua - Conky
    True enough oz ... best way to find out:

    Code:
     13 Mar 13 | 10:49:54 ~
             $ conky -V
    Conky 1.9.0 compiled Fri May 11 15:54:00 UTC 2012 for Linux 2.6.32-5-amd64 (x86_64)
    
    Compiled in features:
    
    System config file: /etc/conky/conky.conf
    Package library path: /usr/lib/conky
    
     X11:
      * Xdamage extension
      * XDBE (double buffer extension)
      * Xft
      * ARGB visual
    
     Music detection:
      * Audacious
      * MPD
      * MOC
      * XMMS2
    
     General:
      * math
      * hddtemp
      * portmon
      * Curl
      * RSS
      * Weather (METAR)
      * Weather (XOAP)
      * wireless
      * support for IBM/Lenovo notebooks
      * nvidia
      * eve-online
      * config-output
      * Imlib2
      * apcupsd
      * iostats
      * ncurses
      * Lua
    
      Lua bindings:
       * Cairo
       * Imlib2
     
     13 Mar 13 | 10:49:58 ~
             $
    "Most" distros come with various types of conkys to install. jdos1, check to see if you have a "conky-all" and install that:

    Debian SID: acp = alias for apt-cache-policy
    Code:
     13 Mar 13 | 10:52:32 ~
             $ acp conky
    conky:
      Installed: (none)
      Candidate: 1.9.0-2
      Version table:
         1.9.0-2 0
            500 http://ftp.us.debian.org/debian/ sid/main amd64 Packages
     
     13 Mar 13 | 10:52:45 ~
             $ acp conky-all
    conky-all:
      Installed: 1.9.0-2
      Candidate: 1.9.0-2
      Version table:
     *** 1.9.0-2 0
            500 http://ftp.us.debian.org/debian/ sid/contrib amd64 Packages
            100 /var/lib/dpkg/status
     
     13 Mar 13 | 10:52:50 ~
             $

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •