├── README.md ├── conky_rings ├── .conky_rings.lua ├── .conkyrc ├── README.md ├── conky_screenshot.png └── fonts.tar.gz ├── conky_screenshot.png └── conkyrc /README.md: -------------------------------------------------------------------------------- 1 | # rpi_conky 2 | [![badge](https://github.com/Botspot/pi-apps/blob/master/icons/badge.png?raw=true)](https://github.com/Botspot/pi-apps) 3 | 4 | Improved version of Novaspirit's conky script. Newer versions of Conky won't play the old configs due to syntax errors, so this script has been corrected. 5 | Also, I (Botspot) have improved the colors, as the original colors did not look very good together. Screenshot below: 6 | ![screenshot](https://github.com/Botspot/rpi_conky/blob/master/conky_screenshot.png?raw=true) 7 | 8 | ## To Install: 9 | 10 | ``` 11 | sudo apt install -y conky 12 | wget -O ~/.conkyrc https://raw.githubusercontent.com/Botspot/rpi_conky/master/conkyrc 13 | ``` 14 | 15 | To make it autostart on boot, create a file at `~/.config/autostart/conky.desktop` and place this code into it: 16 | ``` 17 | [Desktop Entry] 18 | Name=Conky 19 | Type=Application 20 | Exec=bash -c 'sleep 5;conky -q -d' 21 | Terminal=false 22 | Icon=${DIRECTORY}/apps/Conky/icon-64.png 23 | Comment=system monitoring tool. 24 | Categories=Utility; 25 | ``` 26 | 27 | ## To uninstall: 28 | 29 | sudo apt purge conky 30 | rm ~/.conkyrc ~/.config/autostart/conky.desktop 31 | 32 | ### Note about the network readout: 33 | By default, this conky configuration is hard-coded to use the `eth0` network interface. If you are using WiFi, this needs changing before the network readout will work. In [my Pi-Apps installation script](https://github.com/Botspot/pi-apps/blob/master/apps/Conky/install), the `.conkyrc` file is edited if WiFi is detected. 34 | The commands used to accomplish this is provided below, for your convenience: 35 | ``` 36 | #change eth0 to wlan0 in conky config if user is currently using WiFi 37 | interface="$(ip addr | awk '/state UP/ {print $2}' | tr -d ':' | head -n 1)" 38 | if [ ! -z "$interface" ];then 39 | sed -i "s/eth0/$interface/g" ~/.conkyrc 40 | fi 41 | ``` 42 | I suppose if you installed conky manually, you can run the above code in your terminal. (Or you could just edit the `.conkyrc` file.) 43 | -------------------------------------------------------------------------------- /conky_rings/.conky_rings.lua: -------------------------------------------------------------------------------- 1 | require 'cairo' 2 | 3 | normal="0xff0000" 4 | warn="0xff7200" 5 | crit="0xFF4A5C" 6 | 7 | settings_table = { 8 | { 9 | name='acpitemp', 10 | arg='', 11 | max=80, 12 | bg_colour=0x001A00, 13 | bg_alpha=1, 14 | fg_colour=0xffffff, 15 | fg_alpha=0, 16 | x=360, y=120, 17 | radius=97, 18 | thickness=6, 19 | start_angle=0, 20 | end_angle=240 21 | }, 22 | { 23 | name='acpitemp', 24 | arg='', 25 | max=80, 26 | bg_colour=0x001A00, 27 | bg_alpha=1, 28 | fg_colour=0xffffff, 29 | fg_alpha=0.4, 30 | x=360, y=120, 31 | radius=97, 32 | thickness=4, 33 | start_angle=0, 34 | end_angle=240 35 | }, 36 | { 37 | name='cpu', 38 | arg='cpu0', 39 | max=100, 40 | bg_colour=0x003000, 41 | bg_alpha=1, 42 | fg_colour=0xffffff, 43 | fg_alpha=0, 44 | x=360, y=120, 45 | radius=86, 46 | thickness=16, 47 | start_angle=0, 48 | end_angle=240 49 | }, 50 | { 51 | name='cpu', 52 | arg='cpu0', 53 | max=100, 54 | bg_colour=0x003000, 55 | bg_alpha=0, 56 | fg_colour=0xffffff, 57 | fg_alpha=0.4, 58 | x=360, y=120, 59 | radius=86, 60 | thickness=13, 61 | start_angle=0, 62 | end_angle=240 63 | }, 64 | { 65 | name='cpu', 66 | arg='cpu1', 67 | max=100, 68 | bg_colour=0x005900, 69 | bg_alpha=1, 70 | fg_colour=0xffffff, 71 | fg_alpha=0, 72 | x=360, y=120, 73 | radius=71, 74 | thickness=15, 75 | start_angle=0, 76 | end_angle=240 77 | }, 78 | { 79 | name='cpu', 80 | arg='cpu1', 81 | max=100, 82 | bg_colour=0x005900, 83 | bg_alpha=0, 84 | fg_colour=0xffffff, 85 | fg_alpha=0.4, 86 | x=360, y=120, 87 | radius=71, 88 | thickness=12, 89 | start_angle=0, 90 | end_angle=240 91 | }, 92 | { 93 | name='cpu', 94 | arg='cpu2', 95 | max=100, 96 | bg_colour=0x008000, 97 | bg_alpha=1, 98 | fg_colour=0xffffff, 99 | fg_alpha=0, 100 | x=360, y=120, 101 | radius=57, 102 | thickness=14, 103 | start_angle=0, 104 | end_angle=240 105 | }, 106 | { 107 | name='cpu', 108 | arg='cpu2', 109 | max=100, 110 | bg_colour=0x008000, 111 | bg_alpha=0, 112 | fg_colour=0xffffff, 113 | fg_alpha=0.4, 114 | x=360, y=120, 115 | radius=57, 116 | thickness=11, 117 | start_angle=0, 118 | end_angle=240 119 | }, 120 | { 121 | name='cpu', 122 | arg='cpu3', 123 | max=100, 124 | bg_colour=0x01B300, 125 | bg_alpha=1, 126 | fg_colour=0xffffff, 127 | fg_alpha=0, 128 | x=360, y=120, 129 | radius=44, 130 | thickness=13, 131 | start_angle=0, 132 | end_angle=240 133 | }, 134 | { 135 | name='cpu', 136 | arg='cpu3', 137 | max=100, 138 | bg_colour=0x01B300, 139 | bg_alpha=0, 140 | fg_colour=0xffffff, 141 | fg_alpha=0.4, 142 | x=360, y=120, 143 | radius=44, 144 | thickness=10, 145 | start_angle=0, 146 | end_angle=240 147 | }, 148 | { 149 | name='fs_used_perc', 150 | arg='/home', 151 | max=100, 152 | bg_colour=0x660000, 153 | bg_alpha=1, 154 | fg_colour=0xffffff, 155 | fg_alpha=0, 156 | x=250, y=225, 157 | radius=34, 158 | thickness=14, 159 | start_angle=0, 160 | end_angle=240 161 | }, 162 | { 163 | name='fs_used_perc', 164 | arg='/home', 165 | max=100, 166 | bg_colour=0x660000, 167 | bg_alpha=0, 168 | fg_colour=0xffffff, 169 | fg_alpha=0.4, 170 | x=250, y=225, 171 | radius=34, 172 | thickness=10, 173 | start_angle=0, 174 | end_angle=240 175 | }, 176 | { 177 | name='fs_used_perc', 178 | arg='/boot/', 179 | max=100, 180 | bg_colour=0xb30000, 181 | bg_alpha=1, 182 | fg_colour=0xffffff, 183 | fg_alpha=0, 184 | x=250, y=225, 185 | radius=21, 186 | thickness=12, 187 | start_angle=0, 188 | end_angle=240 189 | }, 190 | { 191 | name='fs_used_perc', 192 | arg='/boot/', 193 | max=100, 194 | bg_colour=0xb30000, 195 | bg_alpha=0, 196 | fg_colour=0xffffff, 197 | fg_alpha=0.4, 198 | x=250, y=225, 199 | radius=21, 200 | thickness=10, 201 | start_angle=0, 202 | end_angle=240 203 | }, 204 | { 205 | name='memperc', 206 | arg='', 207 | max=100, 208 | bg_colour=0x000199, 209 | bg_alpha=1, 210 | fg_colour=0xffffff, 211 | fg_alpha=0, 212 | x=340, y=300, 213 | radius=60, 214 | thickness=19, 215 | start_angle=180, 216 | end_angle=420 217 | }, 218 | { 219 | name='memperc', 220 | arg='', 221 | max=100, 222 | bg_colour=0x0000ff, 223 | bg_alpha=0, 224 | fg_colour=0xffffff, 225 | fg_alpha=0.4, 226 | x=340, y=300, 227 | radius=60, 228 | thickness=14, 229 | start_angle=180, 230 | end_angle=420 231 | }, 232 | { 233 | name='swapperc', 234 | arg='', 235 | max=100, 236 | bg_colour=0x1030ff, 237 | bg_alpha=1, 238 | fg_colour=0xffffff, 239 | fg_alpha=0, 240 | x=340, y=300, 241 | radius=45, 242 | thickness=12, 243 | start_angle=180, 244 | end_angle=420 245 | }, 246 | { 247 | name='swapperc', 248 | arg='', 249 | max=100, 250 | bg_colour=0x1030ff, 251 | bg_alpha=1, 252 | fg_colour=0xffffff, 253 | fg_alpha=0.4, 254 | x=340, y=300, 255 | radius=45, 256 | thickness=10, 257 | start_angle=180, 258 | end_angle=420 259 | } 260 | } 261 | 262 | function rgb_to_r_g_b(colour, alpha) 263 | return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha 264 | end 265 | 266 | function draw_ring(display, t, pt) 267 | local w,h=conky_window.width,conky_window.height 268 | 269 | local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle'] 270 | local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha'] 271 | 272 | local angle_0=sa*(2*math.pi/360)-math.pi/2 273 | local angle_f=ea*(2*math.pi/360)-math.pi/2 274 | local t_arc=t*(angle_f-angle_0) 275 | 276 | -- Draw background ring 277 | 278 | cairo_arc(display,xc,yc,ring_r,angle_0,angle_f) 279 | cairo_set_source_rgba(display,rgb_to_r_g_b(bgc,bga)) 280 | cairo_set_line_width(display,ring_w) 281 | cairo_stroke(display) 282 | 283 | -- Draw indicator ring 284 | 285 | cairo_arc(display,xc,yc,ring_r,angle_0,angle_0+t_arc) 286 | cairo_set_source_rgba(display,rgb_to_r_g_b(fgc,fga)) 287 | cairo_stroke(display) 288 | end 289 | 290 | function conky_ring_stats(display) 291 | local function setup_rings(display,pt) 292 | local str='' 293 | local value=0 294 | 295 | str=string.format('${%s %s}',pt['name'],pt['arg']) 296 | str=conky_parse(str) 297 | 298 | value=tonumber(str) 299 | if value == nil then value = 0 end 300 | pct=value/pt['max'] 301 | 302 | draw_ring(display, pct, pt) 303 | end 304 | 305 | for i in pairs(settings_table) do 306 | setup_rings(display, settings_table[i]) 307 | end 308 | end 309 | 310 | function temp_watch() 311 | warn_value=55 312 | crit_value=65 313 | 314 | temperature=tonumber(conky_parse("${acpitemp}")) 315 | end 316 | 317 | function disk_watch() 318 | warn_disk=93 319 | crit_disk=98 320 | 321 | disk=tonumber(conky_parse("${fs_used_perc /home}")) 322 | 323 | disk=tonumber(conky_parse("${fs_used_perc /boot/}")) 324 | 325 | end 326 | 327 | function conky_main() 328 | if conky_window == nil then 329 | return 330 | end 331 | 332 | local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height) 333 | local display = cairo_create(cs) 334 | 335 | local updates = conky_parse('${updates}') 336 | update_num = tonumber(updates) 337 | 338 | temp_watch() 339 | disk_watch() 340 | 341 | if update_num > 5 then 342 | conky_ring_stats(display) 343 | end 344 | 345 | cairo_surface_destroy(cs) 346 | cairo_destroy(display) 347 | end 348 | -------------------------------------------------------------------------------- /conky_rings/.conkyrc: -------------------------------------------------------------------------------- 1 | conky.config = { 2 | background = true, 3 | update_interval = 1, 4 | 5 | cpu_avg_samples = 4, 6 | net_avg_samples = 2, 7 | temperature_unit = 'celsius', 8 | 9 | double_buffer = true, 10 | no_buffers = true, 11 | text_buffer_size = 2048, 12 | 13 | gap_x = 10, 14 | gap_y = 675, 15 | minimum_width = 470, 16 | maximum_width = 470, 17 | minimum_height = 400, 18 | 19 | own_window = true, 20 | own_window_type = 'normal', 21 | own_window_transparent = true, 22 | own_window_argb_visual = true, 23 | own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', 24 | 25 | border_inner_margin = 0, 26 | border_outer_margin = 0, 27 | alignment = 'top_right', 28 | 29 | draw_shades = false, 30 | draw_outline = false, 31 | draw_borders = false, 32 | draw_graph_borders = false, 33 | 34 | override_utf8_locale = true, 35 | use_xft = true, 36 | font = 'Pf Tempesta Five:bold:size=6', 37 | xftalpha = 0.9, 38 | uppercase = false, 39 | 40 | default_color = '#999999', 41 | default_shade_color = 'red', 42 | default_outline_color = 'green', 43 | 44 | color1 = 'darkgrey', 45 | color2 = '#1994D1', 46 | color3 = '#ff7200', 47 | color4 = '#FF4A5C', 48 | 49 | lua_load = '~/.conky_rings.lua', 50 | lua_draw_hook_post = 'main' 51 | } 52 | 53 | conky.text = [[ 54 | # CPU / UPTIME 55 | ${voffset 5}${goto 298}${#FFFFFF}${freq}${color1} MHz${goto 360}Uptime ${#FFFFFF}${uptime_short} 56 | # TEMP 57 | ${#A0FFA0}${alignr 118}${acpitemp}°C 58 | ${#80FF80}${voffset 1}${goto 295}CPU 1${alignr 118}${cpu cpu0}% 59 | ${#60FF60}${voffset 3}${goto 295}CPU 2${alignr 118}${cpu cpu1}% 60 | ${#40FF40}${voffset 3}${goto 295}CPU 3${alignr 118}${cpu cpu2}% 61 | ${#20FF20}${voffset 3}${goto 295}CPU 4${alignr 118}${cpu cpu3}% 62 | # TOP CPU 63 | ${#20FF20}${goto 230}${voffset 5}${top name 1}${alignr 96}${top cpu 1}% 64 | ${#00FF00}${goto 230}${top name 2}${alignr 84}${top cpu 2}% 65 | ${#00DD00}${goto 230}${top name 3}${alignr 80}${top cpu 3}% 66 | ${#00BB00}${goto 230}${top name 4}${alignr 81}${top cpu 4}% 67 | ${#008800}${goto 230}${top name 5}${alignr 88}${top cpu 5}% 68 | # HDD 69 | ${#FF2020}${voffset 42}${alignr 230}${fs_used /home} / ${fs_size /home} root 70 | ${#FF2020}${voffset 2}${alignr 230}${fs_used /boot} / ${fs_size /boot} boot 71 | # MEMORY 72 | ${voffset 60}${goto 322}${#999999}ram % 73 | ${#00C0FF}${voffset 1}${goto 312}${top_mem name 1} 74 | ${#007aFF}${goto 308}${top_mem name 2} 75 | ${#0050FF}${goto 309}${top_mem name 3} 76 | ${#002aFF}${goto 314}${top_mem name 4} 77 | ${#0000FF}${goto 330}${top_mem name 5} 78 | ${#10AAFF}${voffset 5}${goto 348}SWAP ${alignr}${#1060FF}${swap} / ${swapmax} 79 | ${#10AAFF}${voffset 4}${goto 348}RAM ${alignr}${#1060FF}${mem} / ${memmax} 80 | # VERSION 81 | ${#999999}${voffset 10}${goto 320}${execi 86400 uname} ${execi 86400 uname -m} ${execi 86400 uname -r} 82 | ]] 83 | -------------------------------------------------------------------------------- /conky_rings/README.md: -------------------------------------------------------------------------------- 1 | # conky_rings 2 | This is a conky appearance theme that uses a lua script to generate some animated ring graphs. 3 | 4 | Screenshot: 5 | ![conky_screenshot](https://github.com/Botspot/rpi_conky/blob/master/conky_rings/conky_screenshot.png?raw=true) 6 | Phoenixbyrd from Pi Labs made the original theme, then I [added](https://github.com/Botspot/pi-apps/issues/687#issuecomment-869789919) some color. 7 | 8 | ## To install manually: 9 | ``` 10 | sudo apt install conky-all lua50 11 | wget -O ~/.conky_rings.lua https://raw.githubusercontent.com/Botspot/rpi_conky/master/conky_rings/.conky_rings.lua || error "Failed to download conky-rings.lua!" 12 | wget -O ~/.conkyrc https://raw.githubusercontent.com/Botspot/rpi_conky/master/conky_rings/.conkyrc || error "Failed to get .conkyrc!" 13 | conky -q -d -p 3 14 | ``` 15 | To make it autostart on boot, create a file at ~/.config/autostart/conky.desktop and place this code into it: 16 | ``` 17 | [Desktop Entry] 18 | Name=Conky 19 | Type=Application 20 | Exec=bash -c 'sleep 5;conky -q -d -p 3' 21 | Terminal=false 22 | Comment=system monitoring tool. 23 | Categories=Utility; 24 | ``` 25 | ## To uninstall manually: 26 | ``` 27 | sudo apt purge conky-all lua50 28 | rm ~/.conky_rings.lua ~/.conkyrc ~/.config/autostart/conky.desktop 29 | ``` 30 | -------------------------------------------------------------------------------- /conky_rings/conky_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Botspot/rpi_conky/173f5668e776c487dc2253ddbc14f45432780b62/conky_rings/conky_screenshot.png -------------------------------------------------------------------------------- /conky_rings/fonts.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Botspot/rpi_conky/173f5668e776c487dc2253ddbc14f45432780b62/conky_rings/fonts.tar.gz -------------------------------------------------------------------------------- /conky_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Botspot/rpi_conky/173f5668e776c487dc2253ddbc14f45432780b62/conky_screenshot.png -------------------------------------------------------------------------------- /conkyrc: -------------------------------------------------------------------------------- 1 | conky.config = { 2 | 3 | background = true, 4 | use_xft = true, 5 | font = '123:size=8', 6 | xftalpha = 0.1, 7 | update_interval = 0.5, 8 | total_run_times = 0, 9 | own_window = true, 10 | own_window_type = 'desktop', 11 | own_window_transparent = false, 12 | own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', 13 | own_window_argb_visual = true; 14 | own_window_argb_value = 145; 15 | double_buffer = true, 16 | minimum_width = 250, 17 | minimum_height = 5, 18 | maximum_width = 400, 19 | draw_shades = false, 20 | draw_outline = false, 21 | draw_borders = false, 22 | draw_graph_borders = false, 23 | default_color = 'gray', 24 | default_shade_color = 'red', 25 | default_outline_color = 'green', 26 | alignment = 'top_right', 27 | gap_x = 10, 28 | gap_y = 10, 29 | no_buffers = true, 30 | uppercase = false, 31 | cpu_avg_samples = 2, 32 | net_avg_samples = 1, 33 | override_utf8_locale = false, 34 | use_spacer = 'right' 35 | 36 | } 37 | 38 | conky.text = [[ 39 | 40 | ${font Arial:size=20}${color #0040FF}RPI${color #00FFFF}LINUX 41 | 42 | ${voffset -90} 43 | ${color #505050} 44 | ${font} 45 | ${font Arial:bold:size=10}${color #00AAFF}SYSTEM ${color #0000AA} ${hr 2} 46 | $font${color #505050}$sysname $kernel $alignr $machine 47 | Frequency ${color #AAAAAA}$alignr${freq_g cpu0}Ghz${color #505050} 48 | Uptime ${color #AAAAAA}$alignr${uptime}${color #505050} 49 | File System $alignr${fs_type} 50 | 51 | ${font Arial:bold:size=10}${color #00AAFF}CPU ${color #0000AA}${hr 2} 52 | $font${color #505050}Temp: $alignr ${color #AAAAAA}${exec sh -c "/usr/bin/vcgencmd measure_temp 2>/dev/null | cut -c6-9"} C 53 | $font${color #505050}CPU1 ${color #AAAAAA}${cpu cpu1}%${color #505050} ${cpubar cpu1} 54 | CPU2 ${color #AAAAAA}${cpu cpu2}%${color #505050} ${cpubar cpu2} 55 | CPU3 ${color #AAAAAA}${cpu cpu3}%${color #505050} ${cpubar cpu3} 56 | CPU4 ${color #AAAAAA}${cpu cpu4}%${color #505050} ${cpubar cpu4} 57 | ${cpugraph #AAAAAA #0000AA} $color 58 | 59 | ${font Arial:bold:size=10}${color #00AAFF}MEMORY ${color #0000AA}${hr 2} 60 | $font${color #505050}MEM $alignc ${color #AAAAAA}$mem${color #505050} / $memmax $alignr $memperc% 61 | $membar 62 | $font${color #505050}SWAP $alignc ${color #AAAAAA}$swap${color #505050} / $swapmax $alignr $swapperc% 63 | $swapbar 64 | 65 | ${font Arial:bold:size=10}${color #00AAFF}HDD ${color #0000AA}${hr 2} 66 | $font${color #505050}/home $alignc ${color #AAAAAA}${fs_used /home} / ${fs_size /home}${color #505050} $alignr ${fs_free_perc /home}% 67 | ${fs_bar /home} 68 | 69 | ${font Arial:bold:size=10}${color #00AAFF}TOP PROCESSES ${color #0000AA}${hr 2} 70 | ${color #505050}$font${top_mem name 2}${alignr}${top mem 2} % 71 | $font${top_mem name 3}${alignr}${top mem 3} % 72 | $font${top_mem name 4}${alignr}${top mem 4} % 73 | $font${top_mem name 5}${alignr}${top mem 5} % 74 | 75 | ${font Arial:bold:size=10}${color #00AAFF}NETWORK ${color #0000AA}${hr 2} 76 | $font${color #505050}IP on eth0 $alignr ${color #AAAAAA}${addr eth0} 77 | 78 | ${color #505050}Down $alignr ${color #AAAAAA}${downspeed eth0}/s 79 | ${color #505050}Up $alignr ${color #AAAAAA}${upspeed eth0}/s 80 | 81 | ${color #505050}Downloaded: $alignr ${color #AAAAAA}${totaldown eth0} 82 | ${color #505050}Uploaded: $alignr ${color #AAAAAA}${totalup eth0} 83 | 84 | ]] 85 | --------------------------------------------------------------------------------